本次作业主要应用switch和if选择结构,应用rand函数产生不同的随机数列。
存在的问题:只能一个一个的答,无法在完成全部四则运算以后再显示答案,在接下来我努力攻克。
用时6小时。(2018/10/6 16:00-18:00&20:00-23:00)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int x,y,z,c,t,f,m,n,q,result;
srand((unsigned)time( NULL ) ); //初始化随机数发生器,使得每次运行生成的随机数不同
printf("*****二柱子的计算题*****\n");
printf("请输入输出的题的道数:");
scanf("%d",&q);
printf("********************\n1.整数四则运算!\n2.真分数的四则运算!\n********************\n");
scanf("%d",&f);
for(int i=0;i<q;i++)
switch(f)
{case 1:
{
x=rand()%100;
y=rand()%100;
z=rand()%4;
switch(z)
{
case 0:
printf("%d+%d=\n",x,y);
result=x+y;
break;
case 1:
if(x<y)
{
t=x;
x=y;
y=t;
}
printf("%d-%d=\n",x,y);
result=x-y;
break;
case 2:
printf("%d×%d=\n",x,y);
result=x*y;
break;
case 3:
if(y!=0)
{
printf("%d÷%d=\n",x,y);
result=x/y;
}
else
{
i=i-1;
}
break;
default:
printf("超出测试范围\n");
break;
}
scanf("%d", &c); //输入答案
if(c == result) //与正确答案一致
{
printf("Right\n\n");
}
else
{
printf("Wrong\n\n"); //错
}
};break;
case 2:
{
x=rand()%100;
y=rand()%100;
m=rand()%100;
n=rand()%100;
z=rand()%4;
if(y!=0&&n!=0)
{if(x<y)
{
t=x;
x=y;
y=t;
}
if(m<n)
{
t=m;
m=n;
n=t;
}
switch(z)
{
case 0:
printf("%d/%d+%d/%d=\n",x,y,m,n);
result=x/y+m/n;
break;
case 1:
printf("%d/%d-%d/%d=\n",x,y,m,n);
result=x/y-m/n;
break;
case 2:
printf("%d/%d×%d/%d=\n",x,y,m,n);
result=(x/y)*(m/n);
break;
case 3:
printf("%d/%d÷%d/%d=\n",x,y,m,n);
result=(x/y)/(m/n);
break;
default:
printf("超出测试范围\n");}}
else
printf("分母为0不是分数!");
scanf("%d", &c); //输入答案
if(c == result) //与正确答案一致
{
printf("Right\n\n");
}
else
{
printf("Wrong\n\n"); //错
}
};break;
printf("endl.\n");
return 0;
}
}