程序2中的问题是由于在while循环内部没有再次读取新的字符,导致循环一直处理相同的字符,从而陷入无限循环。
要修正程序2,需要在循环内部再次读取新的字符,以便继续处理输入的字符。修改后的程序如下所示:#include <stdio.h>int main(void){ char ch; int i=0; ch=getchar(); while(ch!='\n') { i++; printf("字符为%c,对应地ASCII值为%d;",ch,ch); if(i%3==0) printf("\n"); ch=getchar(); // 读取新的字符 } return 0;}
使用scanf函数进行字符输入时,可以按照以下方式修改代码:#include <stdio.h>int main(void){ char ch; int i=0; while(1) { scanf(" %c", &ch); // 注意空格,避免读取到换行符 if(ch == '\n') break; // 判断是否读取到换行符 i++; printf("字符为%c,对应地ASCII值为%d;",ch,ch); if(i%3==0) printf("\n"); } return 0;}
以上就是对程序2的问题原因的解释,以及对程序的修改,同时还给出了使用scanf函数进行字符输入的方式。希望能帮到你。 |