salv 发表于 2021-7-9 16:50:52

请帮忙看下哪里的问题,感觉跳不出循环

本帖最后由 salv 于 2021-7-9 20:08 编辑

#include<stdio.h>
int main()
{
        int i=0;
        char c;
        while(1)
        {
                c='\0';                /*变量赋初值*/
                while(c!=13 && c!=27) /*键盘接收字符直到按回车或ESC键*/
                {
                        c=getchar();
                        printf("%c\n",c);
                }
                if(c==27)
                break;               /*判断若按Esc键刚退出循环*/
                i++;
                printf("The No. is %d\n", i);
        }
        printf("The end");
        return 0;
}
退不出循环,也实现不了计次,请帮忙看下哪里的问题,谢谢了

连帅帅 发表于 2021-7-9 17:24:29

while条件的问题吧,你这任何时候都是正确的呀,不就一直循环出不来了吗?

salv 发表于 2021-7-9 19:06:28

连帅帅 发表于 2021-7-9 17:24
while条件的问题吧,你这任何时候都是正确的呀,不就一直循环出不来了吗?

我这个连里边的循环也退不出,按了回车或者ESC没反应退不出

万千只cnm 发表于 2021-7-9 19:57:20

#include<stdio.h>
int main(void){
    int ch;
    int i=0;
    while( (ch= getchar() )!=27){
            i++;
      putchar(ch);
    }
    printf("%d \n",i);
    return 0;
}

这样不就行了
i=i++;
另外 你这是什么操作。。。

salv 发表于 2021-7-9 20:00:00

万千只cnm 发表于 2021-7-9 19:57
这样不就行了

另外 你这是什么操作。。。

。。。{:5_109:}这个我写错了,i++,或者i=i+1

万千只cnm 发表于 2021-7-9 20:04:23

while(c!=13 || c!=27)

非的话 联结词也要非呀。
          &&

salv 发表于 2021-7-9 20:07:09

万千只cnm 发表于 2021-7-9 19:57
这样不就行了

另外 你这是什么操作。。。

你试下我那个代码哪里有毛病,我想着要实现输入几个字母然后按一次回车,分行输出单个字母,然后计数一次,输出The No. is 1,再输入字母然后按回车再计数一次,输出The No. is 2,以此类推,直到按ESC就退出,然后输出the end。我感觉按了回车以后就跳不出里边的循环。

salv 发表于 2021-7-9 20:09:05

万千只cnm 发表于 2021-7-9 20:04
非的话 联结词也要非呀。
          &&

是的是的{:5_109:}

万千只cnm 发表于 2021-7-9 20:12:01

salv 发表于 2021-7-9 20:07
你试下我那个代码哪里有毛病,我想着要实现输入几个字母然后按一次回车,分行输出单个字母,然后计数一次 ...

你改了 &&不就能跳出来了。

你代码写的太多余了。。。

salv 发表于 2021-7-9 20:22:46

万千只cnm 发表于 2021-7-9 20:12
你改了 &&不就能跳出来了。

你代码写的太多余了。。。

改过了,跳不出,按回车后字母分行显示,可以继续输入,但是没有输出那行the No. is i,按ESC没有反应

salv 发表于 2021-7-9 20:25:48

页: [1]
查看完整版本: 请帮忙看下哪里的问题,感觉跳不出循环