这道C语言题这么写为什么不对?无论输入什么都无法进入循环。练习题6.19

2025-05-10 16:49:15
推荐回答(2个)
回答1:

这个题应该是你理解有点误区。没看到原题,只通过你写的代码理解,认为该题的意思应该是让你:输入字符,输出ASCII码对应的十进制数,每三个字符换行。

错误1:while( (ch = getchar()) != '\n' ) 条件是按回车则退出

错误2:if( cr % 3 == 0 ){printf("\n");cr++;} 你将cr++写入在if( cr % 3 == 0 )中它永远不会执行,应为条件满足不了。

正确代码如下:

void main(){
    char ch;
    int cr=1;//能被3整除就换行
    while( (ch = getchar()) != '\n' ){
        printf("%c=%d ",ch,ch);
        if( cr % 3 == 0 )
            printf("\n");
        cr++;
    }
}

回答2:

吧判断条件换成“\0”试试,我也不懂

while( (ch = getchar()) != '\n' )

可能是运算顺序的问题吧,总感觉这句不对,你分成两句试试
ch=getchar();
while(ch!='\0')