看看这段代码有什么问题

来源:百度知道 编辑:UC知道 时间:2024/06/10 07:36:25
看看这段代码有什么问题
输入一行字符 输出字符和ASCII值
每行输出三对
为什么我的代码 只有从第二行开始才三对
再换行
第一行就一对
代码如下

#include "stdio.h"
main()
{ char ch; int n;
while((ch=getchar())!='\n')
{
if(n%3==0) putchar('\n');
n++;
printf("c=%c,ascii=%d ",ch,ch);
}
}
请问该怎么修改

n没有初始化,编译器默认是0了吧?
0%3=0
第一行就输出 \n 了

修改的话,n赋一个初始值1就行了

第一行没有是由于n的初值默认是0,直接输出了回车,故n=0,1,2是都输出到第二行

#include "stdio.h"
main()
{ char ch; int n=1;
while((ch=getchar())!='\n')
{
printf("c=%c,ascii=%d ",ch,ch);
if(n%3==0) putchar('\n');
n++;

}
}

n没赋初值,先输出字符,再判断是否该换行

#include "stdio.h"
int main()
{ char ch; int n=0;
while((ch=getchar())!='\n')
{
if(n&&n%3==0) putchar('\n');
n++;
printf("c=%c,ascii=%d ",ch,ch);
}
return 0;
}