标题:此程序有问题吗?
只看楼主
xiang__jie
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2011-8-31
结帖率:71.43%
已结贴  问题点数:3 回复次数:5 
此程序有问题吗?
#include<stdio.h>
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");
 }

问题一:此程序如何退出?
问题二:当C==27时程序跳出while(1)循环,那后面的i++和输出岂不是不执行?
问题三:当输入字符后,按enter键才能输出字符,此程序把enter键作为结束符,那开始输入的程序怎么进得了第二个循环输出显示呢?
搜索更多相关主题的帖子: 键盘 include break while 
2011-09-09 23:28
xiang__jie
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2011-8-31
得分:0 
#include<stdio.h>
#include<conio.h>
main()
{
   int i=0;
   char c;
   while(1)                 /*设置循环*/
     {
      c='\0';             /*变量赋初值*/
      while(c!=13&&c!=27) /*键盘接收字符直到按回车或Esc键*/
        {
         c=getch();i++;
         printf("%c\n", c);
        }
      if(c==27)
         break;          /*判断若按Esc键则退出循环*/
      
      printf("The No. is %d\n", i);
      }
    printf("The end");
 }
这个程序怎么样?
2011-09-09 23:42
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
得分:1 
这是一楼代码
问题一:你 的 问题二:个 问题已自己答了



问题二:跳出后这两个语句就不 执行了
       i++;
      printf("The No. is %d\n", i);










#include<stdio.h>
#include<conio.h>
main()
{
   int i=0;
   char c;
   while(1)                 /*设置循环*/
     {
      c='\0';             /*变量赋初值*/
      while(c!=13&&c!=27) /*键盘接收字符直到按回车或Esc键*/
        {
         c=getchar();i++;
         printf("%c\n", c);
        }
      if(c==27)
         break;          /*判断若按Esc键则退出循环*/
      
      printf("The No. is %d\n", i);
      }
    printf("The end");
}
这个程序怎么样?




接收到  ASCLL码为 13   27  的 字符,就跳出循环


但不 会输出
      printf("The No. is %d\n", i);
语句.....除非把其放于循环外


一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-09 23:59
零波丽
Rank: 3Rank: 3
来 自:莉莉斯
等 级:论坛游侠
帖 子:222
专家分:107
注 册:2011-9-8
得分:1 
首先~
1.你的代码~是要用户~输入~  否则~一直循环~
2.break是结束循环~所以~你的~ i++; printf("The No. is %d\n", i);不会执行~你的第二个程序也改正了这一点 但是~printf("The No. is %d\n", i);依旧不会输出~因为~他在~break后面~也就是说~当你输入的值~ 为~ASCLL码为 13   27  的 字符 时~不会输出~i的值~
3.你可以采用~清除缓存区的方法~比如~在c=getchar();后面加上一句getchar(); 清空缓存区~或者使用函数清空~这样你就可以一直输入了 直到~你没有输入值 直接按了~回车~(第三问 没试验过~是猜测)
零波 丽 说

人又是什么?神造出来的东西。 人是人造出来的东西。
2011-09-10 00:45
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
得分:0 
回复 3楼 A13433758072
阅过………… 在c=getchar()之后,清空下缓冲区 char h ; while((h=getchar())!='\n');

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-10 00:48
yixiu868
Rank: 2
等 级:论坛游民
帖 子:28
专家分:22
注 册:2010-10-25
得分:1 
程序代码:
#include<stdio.h>
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");
}
1.27时退出
2.i不执行
3.毫无疑问直接进入第二个循环
2011-09-10 18:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-349606-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.231042 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved