| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1912 人关注过本帖
标题:哪位编程高手能帮我看看哪里出问题了
只看楼主 加入收藏
张小盟
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2016-4-13
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:12 
哪位编程高手能帮我看看哪里出问题了
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{int a,b,c,op,answer,number,i,t;
char again='y';
while(again='y'||again=='Y')

      printf("*****************************************************************\n\n");
          printf("          欢迎来到算术习题系统!                              \n\n");
          printf("\t\t1.加法算数\n");
          printf("\t\t2.减法算数\n");
          printf("\t\t3.退出\n\n");
          printf("*****************************************************************\n\n");
printf("请输入你的选择(1,2or3):");
scanf("%d",&op);
switch(op)
{case 1:
number=0;
for(i=1;i<=3;i++)
{srand(time(0));
a=rand()%10;
b=rand()%10;
printf("%2d+%2d=",i,a,b);
c=a+b;
scanf("%d",&answer);
if(c==answer)
{printf("\t 正确\n");
 number++;
}
else
    printf("\t 错误\n");
}
printf("你答对了:%d题\n",number);
break;

case 2:
number=0;
for(i=1;i<=3;i++)
{
srand(time(0));
a=rand()%10;
b=rand()%10;
if(a<b)
{t=a;a=b;b=t;}
printf("%2d-%2d=",i,a,b);
c=a-b;
scanf("%d",&answer);
if(c==answer)
{ printf("\t 正确\n");
  number++;
}
else
  printf("\t 错误\n");
}
printf("你答对了:%d题\n",number);
break;

case 3:printf("再见!\n");exit(0);break;


}
fflush(stdin);
printf("要再做多一次吗?(Y/N):");
scanf("%c",&again);
system("cls");
}
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 编程高手 include number 
2016-04-13 14:40
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
自己说清楚遇到的问题

https://zh.
2016-04-13 14:43
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:0 
fflush(stdin);  /*未定义行为*/

未佩好剑,转身便已是江湖
2016-04-13 15:00
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:15 
while(again='y'||again=='Y') 执行的范围不对,你的大括号呢?给你稍微修改了下,没大动。加了大括号,确定循环的执行范围。把main类型改为int ,增加了return 0;
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{int a,b,c,op,answer,number,i,t;
char again='y';
while(again='y'||again=='Y')
{
      printf("*****************************************************************\n\n");
          printf("          欢迎来到算术习题系统!                              \n\n");
          printf("\t\t1.加法算数\n");
          printf("\t\t2.减法算数\n");
          printf("\t\t3.退出\n\n");
          printf("*****************************************************************\n\n");
printf("请输入你的选择(1,2or3):");
scanf("%d",&op);
switch(op)
{case 1:
number=0;
for(i=1;i<=3;i++)
{srand(time(0));
a=rand()%10;
b=rand()%10;
printf("%2d+%2d=",i,a,b);
c=a+b;
scanf("%d",&answer);
if(c==answer)
{printf("\t 正确\n");
 number++;
}
else
    printf("\t 错误\n");
}
printf("你答对了:%d题\n",number);
break;

case 2:
number=0;
for(i=1;i<=3;i++)
{
srand(time(0));
a=rand()%10;
b=rand()%10;
if(a<b)
{t=a;a=b;b=t;}
printf("%2d-%2d=",i,a,b);
c=a-b;
scanf("%d",&answer);
if(c==answer)
{ printf("\t 正确\n");
  number++;
}
else
  printf("\t 错误\n");
}
printf("你答对了:%d题\n",number);
break;

case 3:printf("再见!\n");exit(0);break;

}
}
fflush(stdin);
printf("要再做多一次吗?(Y/N):");
scanf("%c",&again);
system("cls");
return 0;
}
2016-04-13 15:05
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
但是你的判断好像还有问题,我给你截图看下,1+0=1,结果还是错误。
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-04-13 15:07
张小盟
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2016-4-13
收藏
得分:0 
回复 2楼 lin5161678
运行的结果就出现了上图的那种情况呀
2016-04-13 15:07
张小盟
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2016-4-13
收藏
得分:0 
回复 3楼 alice_usnet
请问那怎样解决呢
2016-04-13 15:08
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
不是1+0=1,错误,是你的第一题都是判断错误
图片附件: 游客没有浏览图片的权限,请 登录注册

看你的数学计算,结果判断也有问题。错误的还判断对的。
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2016-4-13 15:11编辑过]

2016-04-13 15:09
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:5 
你再把你对答案的判断那儿在好好想下,修改修改。你的判断有问题的,这个应该能搞定了吧你。
fflush这个函数是windows的一个扩展,
清除标准输入设备(一般是键盘)的缓存。

scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。
① 遇空格、“回车”、“跳格”键。
② 遇宽度结束。
③ 遇非法输入。
键盘缓冲区就可能有残余信息问题。
scanf()函数应该只是扫描stdin流,这个残存信息是在stdin中
解决方法可以在scanf()函数之后加个fflush(stdin)。当然还有其他方法一样可以消除这个影响
2016-04-13 15:15
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
还有你做完题目后不会提示是否需要再次计算。你再好好改改
2016-04-13 15:18
快速回复:哪位编程高手能帮我看看哪里出问题了
数据加载中...
 
   



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

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