| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 817 人关注过本帖, 1 人收藏
标题:感觉两个程序是一样的,前者可以运行而后者不可以,求解释!
只看楼主 加入收藏
教皇
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2011-10-6
结帖率:95.65%
收藏(1)
已结贴  问题点数:10 回复次数:5 
感觉两个程序是一样的,前者可以运行而后者不可以,求解释!
#include "stdio.h"                              
main()
{
 char i;
 printf("please input the first letter of someday\n");
 while ((i=getchar())!='\n')
 
 {
  switch(i)
 {
  case 'm':printf("1");
  break;
  case 'w':printf("3");  
  break;         
      
  case 'f' :printf("5");
  break;   
  case't': printf("next\n");
      
  if((i=getchar())=='u')
           printf("2");
  else if((i=getchar())=='h')
           printf("4");
  else
           printf("error");
  break;
  case's':  printf("next\n");
     
  if((i=getchar())=='a')
           printf("6");
  else if((i=getchar())=='u')
           printf("7");
  else
           printf("error");
  break;
  default:
           printf("error");
 }
 }
}


#include "stdio.h"
main()
{
char i;
printf("please input the first letter of someday\n");
while((i=getch())!='\n')
{
switch (i)
{
case 's':printf("next\n");
if((i=getch())=='a')
printf("6\n");
else if ((i=getch())=='u')
printf("7\n");
else printf("data error\n");
break;
case 'f':printf("5\n");break;
case 'm':printf("1\n");break;
case 't':printf("next\n");
if((i=getch())=='u')
printf("2\n");
else if ((i=getch())=='h')
printf("4\n");
else printf("data error\n");
break;
case 'w':printf("3\n");break;
default: printf("data error\n");
}
}
}










搜索更多相关主题的帖子: include someday next please letter 
2012-02-01 00:08
hengde_li
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:131
专家分:178
注 册:2010-1-15
收藏
得分:4 
其实是一样的啊,第二个是可以运行的,两个的区别是,第一个用的是getchar,第二个用的是getch,getch是从控制台无回显的娶一个字符,getchar会显示。所以第二个程序貌似不会结束,会无限执行下去,加个exit就可以退出了。
2012-02-01 09:35
爱德华
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:183
专家分:536
注 册:2011-5-29
收藏
得分:3 
getch()的作用是从键盘接收一个字符,而且并不把这个字符显示出来,就是说,你按了一个键后它并不在屏幕上显示你按的什么,而继续运行后面的代码;   
getchar()则是有返回显示;   
getchar()函数也是从键盘上读入一个字符,并带回显。它与getch()的区别在于:getchar()函数等待输入直到按回车才结束,回车前的所有输入字符都会逐个显示在屏幕上但只有第一个字符作为函数的返回值.用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.
  第二个程序前加一个stdlib.h头文件,后加一个exit()函数退出。

算法,数据结构,windows核心编程.
2012-02-01 11:26
爱德华
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:183
专家分:536
注 册:2011-5-29
收藏
得分:2 
getch()直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回。
getch( )是读取按键值常放在程序末尾起暂停作用而getchar( )是从标准输入设备读取下一个字符.
getchar()要记得清空缓冲区.

算法,数据结构,windows核心编程.
2012-02-01 11:32
linxiaobo
Rank: 2
等 级:论坛游民
帖 子:20
专家分:20
注 册:2012-1-7
收藏
得分:1 
首先,第二个程序语法错了,调用getch,要包含头文件conio.h
然后,我用vc调试了一下发现getch函数无法读出‘\n'(回车),楼上讲的道理是正确的,不过我认为不是准确的原因,只要把’\n'换成‘k’,输入k也可以停止程序!因此这两个程序是一样的,不过getch不能读取’\n‘
2012-02-01 13:08
教皇
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2011-10-6
收藏
得分:0 
谢谢
2012-02-01 13:34
快速回复:感觉两个程序是一样的,前者可以运行而后者不可以,求解释!
数据加载中...
 
   



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

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