c语言 简单题 急急急急!!帮忙看一下哪里错了,谢谢!!

输入11+211*1输出YesNo#include<stdio.h>intmain(){inta,b,c,d;charch;while(scanf("%d%d%c%d",... 输入
1 1 + 2
1 1 * 1
输出
Yes
No
#include<stdio.h>
int main()
{
int a,b,c,d;
char ch;
while(scanf("%d%d%c%d",&a,&b,&ch,&d)!=EOF)
{
if(ch=='+')c=a+b;
else if(ch=='-')c=a-b;
else if(ch=='*')c=a*b;
else if(ch=='/')c=a/b;
if(c==d)printf("Yes\n");
else printf("No\n");
}
}
就是加减乘除 结果的判断
输入
1 1 + 2 //判断1+1 是否等于2
1 1 * 2
输出
Yes
No //上面打错了不好意思
展开
 我来答
魔囡4583246
2012-12-11 · 超过25用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:59.7万
展开全部

我简单写了一下,楼主看看是不是这个意思。

有问题再问

因为你要分行,所以是要用数组保存结果的对错的,如果你可以接受不分行,就可以不用数组

 

 

#include<stdio.h>

int main()

{

  int a,b,c,d;

  char ch;


 

  int count=0;         //多少个算式

  bool s[100];         //用数组记录每个算式的对错.

  int  i=0;

  while(scanf("%d %d %c %d",&a,&b,&ch,&d)!=EOF)    //你的scanf里面没有空格哦,要结束输入,

                                                                                        //按CTRL+Z,回车,就行了

  {


 

   count++;

   if(ch=='+')c=a+b;

   else if(ch=='-')c=a-b;

   else if(ch=='*')c=a*b;

   else if(ch=='/')c=a/b;   //这里的除法你自己注意修改,

          //如果b是0的情况下呢?考虑过吗


 

   if(c==d)

    s[i++]=true;

   else 

    s[i++]=false;


 

   fflush(stdin);   //这句是清空输入缓冲区里面的内容,不加上容易有问题

  }

  i=0;

  while(count--)

  {

  if (s[i++] == true)

  {

   printf("Yes\n");

  }

  else

  {

   printf("No\n");

  }

   

  }

  return 0;       //main函数返回,最好加上

}

淡淡的死去WO
2012-12-11 · 超过45用户采纳过TA的回答
知道答主
回答量:263
采纳率:0%
帮助的人:109万
展开全部

#include<stdio.h>
int main()

 int a,b,c,d; 
 char ch; 
 while(scanf("%d,%d,%c,%d",&a,&b,&ch,&d)!=EOF) 
 { 
  if(ch=='+')
   c=a+b; 
  else if(ch=='-')
   c=a-b; 
  else if(ch=='*')
   c=a*b; 
  else if(ch=='/')
   c=a/b;
 if(c==d)
   printf("Yes\n");   
  else 
   printf("No\n");
 }
   return 0;
}

那个scanf对字符比较敏感,真的会把空格当成符号的所以加个逗号

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3a074977f
2012-12-11 · TA获得超过3467个赞
知道小有建树答主
回答量:611
采纳率:0%
帮助的人:722万
展开全部
将 while(scanf("%d%d%c%d",&a,&b,&ch,&d)!=EOF)
改为while(scanf("%d %d %c %d",&a,&b,&ch,&d)!=EOF)
因为空格也算char类型,这样导致空格字符让ch变量接收了,导致d没有赋值,c也没法计算,程序运行出错。
或者你将输入改为1 1+2也可以。
你可以按F10逐句调试程序,跟踪每个变量的变化,查找出错原因。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友36516ea
2012-12-11 · 超过20用户采纳过TA的回答
知道答主
回答量:87
采纳率:100%
帮助的人:17.5万
展开全部
"%d%d%c%d" 没有接收字符分割的标示 当你输入1和+之间的空格时,程序把空格读取到ch中了 故结果有误
追问
可是scanf不是自动会空格的么,平时都不用这样的啊
追答
那是因为你平时输入的是数字  %c 会接收空格的 因为空格也是字符的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
被流放的歌者
2012-12-11
知道答主
回答量:18
采纳率:0%
帮助的人:16.1万
展开全部
#include<stdio.h>
int main()
{
int a,b,c,d;
char ch;
while(printf("请输入要计算的数字\n"),scanf("%d,%d%,c%,d",&a,&b,&ch,&d)!=EOF)
{ getchar();
getchar();
getchar();
getchar();
if(ch=='+')c=a+b;
else if(ch=='-')c=a-b;
else if(ch=='*')c=a*b;
else if(ch=='/')c=a/b;
if(c==d)printf("Yes\n");
else printf("No\n");
}
}
主要是当你第二次调用scanf()时,它会直接读到上次按下的回车键。
追问
为什么会这样啊
追答
因为程序是从缓冲区读取的字符,当我们按下回车键时,scanf完成读操作,同时回车键进入缓冲区。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式