| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 553 人关注过本帖
标题:求解- -以下程序
只看楼主 加入收藏
pkkgo
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2012-8-12
结帖率:0
收藏
 问题点数:0 回复次数:9 
求解- -以下程序
#include <stdio.h>
int main()
{
 char c;
 c=getchar();
 switch(c=getchar())
    {
 case'+':   printf("加\t"); break;
 case'-':   printf("减\t"); break;
 case'*' :  printf("乘\t");break;
 case'/':  printf("除\t");break;
 default:   printf("error\n");
 }
 return 0;
}
= = =为什么我输入+ - * / 得到的都是error = = = ==
搜索更多相关主题的帖子: return include default 
2012-09-05 19:20
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
把第一个c=getchar();去掉试试


梅尚程荀
马谭杨奚







                                                       
2012-09-05 19:22
pkkgo
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2012-8-12
收藏
得分:0 
回复 2楼 有容就大
行了耶- -为何是这样的
2012-09-05 19:25
LittleCer
Rank: 2
来 自:一个小村庄
等 级:论坛游民
帖 子:19
专家分:15
注 册:2012-9-1
收藏
得分:0 
switch(c) 这样行不?
2012-09-05 20:00
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 3楼 pkkgo
getchar 是获取缓冲区的字符 就是 一个输入字符 加上 enter
所以用一个 c = getchar 就ok了


梅尚程荀
马谭杨奚







                                                       
2012-09-05 22:01
BCCN帅
Rank: 1
等 级:新手上路
帖 子:12
专家分:2
注 册:2011-12-18
收藏
得分:0 
把c=getchar()去掉一个都行了,c=getchar()是输入一个字符,有一个输入都行了
2012-09-05 22:55
陈玉博
Rank: 1
来 自:北京 昌平
等 级:新手上路
帖 子:2
专家分:3
注 册:2012-9-5
收藏
得分:0 
第一个c=getchar()已经输入一个字符了,所以switch(c=getchar())里面得到的是一个回车字符,所以就出错了。
2012-09-05 23:11
张朝成
Rank: 4
等 级:业余侠客
帖 子:149
专家分:265
注 册:2012-3-22
收藏
得分:0 
求解- -以下程序
#include <stdio.h>
 int main()
 {
char c;
 c=getchar();
 switch(c)
     {
 case'+':   printf("加\t"); break;
 case'-':   printf("减\t"); break;
 case'*' :  printf("乘\t");break;
 case'/':  printf("除\t");break;
 default:   printf("error\n");
 }
 return 0;
 }这样也可以的
2012-09-15 14:57
hrc2010a
Rank: 2
等 级:论坛游民
帖 子:16
专家分:55
注 册:2012-9-12
收藏
得分:0 
#include <stdio.h>
int main()
{
char c;
c = getchar();
while(getchar() != '\n')    //加上这两句绝对没有问题。这两句的作用是清除输入缓冲区!!
    ;  
switch(c)    //这一句改成这样!!
    {  
case'+':   printf("加\t"); break;
case'-':   printf("减\t"); break;
case'*' :  printf("乘\t");break;
case'/':  printf("除\t");break;
default:   printf("error\n");
}
return 0;
}
当你输入一个字符后要按回是不!!!这样你的输入缓冲区里就有两个字符了(你输入的字符加回车)。c = getchar()在接收了一个字符后第二次的getchar()也是就回车了。
2012-09-15 16:03
zhangqi_gsts
Rank: 6Rank: 6
来 自:甘肃天水
等 级:侠之大者
威 望:1
帖 子:227
专家分:457
注 册:2011-3-27
收藏
得分:0 
#include <stdio.h>
int main()
{
    char c;
    switch(c=getchar(),c)    // 用逗号表达式
    {
    case'+':   printf("加\t"); break;
    case'-':   printf("减\t"); break;
    case'*' :  printf("乘\t");break;
    case'/':  printf("除\t");break;
    default:   printf("error\n");
    }
    return 0;
}
2012-09-15 23:16
快速回复:求解- -以下程序
数据加载中...
 
   



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

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