做作业遇到问题,求各位帮忙
题目:
小学生 100 以内整数加减乘除运算训练。程序随机产
生两个 100 以内的正整数 a 和 b 和一个运算符(+、-、*、/),小学生计算并输入结果。
要求如下:
① 程序应该显示运算式子,并给出小学生运算是否正确的判断信息;
② 可以进行多轮运算,一轮中包括多道题(例如10道题);每出一题,学生回答运算结果,
程序给出对错判别;每轮运算完成后程序给出答题的总结果,并询问是否进行下一轮的
训练,以决定是否继续;
③ 要保证减法运算时不出现负数,除法运算时被除数能整除除数;
④ 操作界面友好。
代码:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int a,b,answer,operator,correct,t,i,x,y,n;
char ch;
i=0;
x=0;
y=0;
n=1;
srand(time(NULL));
printf("输入Y开始");
ch=getchar();
while(ch!='N')
{
while(i<10)
{
a=rand()%100+1;
b=rand()%100+1;
operator=rand()%4;
if(a<b)
{
t=a;
a=b;
b=t;
}
if(operator==0)
{
printf("(%d) %d+%d=? ",n,a,b);
correct=a+b;
n++;
}
else if(operator==1)
{
printf("(%d) %d-%d=? ",n,a,b);
correct=a-b;
n++;
}
else if(operator==2)
{
printf("(%d) %d*%d=? ",n,a,b);
correct=a*b;
n++;
}
else if(operator==3)
{
while(a%b!=0)
{
a=rand()%100+1;
b=rand()%100+1;
}
printf("(%d) %d/%d=? ",n,a,b);
correct=a/b;
n++;
}
printf("输入答案:");
scanf("%d",&answer);
if(correct==answer)
{
printf("正确\n");
x=x+1;
}
else
{
printf("错误\n");
y=y+1;
}
i++;
}
printf("一共对%d道,错%d道",x,y);
printf("时候还要继续?输入Y继续,N结束:\n");
ch=getchar();
}
return 0;
}
运行:
为什么最后会输出两次printf("一共对%d道,错%d道",x,y);printf("时候还要继续?输入Y继续,N结束:\n")?
还有怎么改才能正确运行,输入Y完全不循环
卡了好久,求解