二柱子高階隨機運算(帶真分數)
本次作業主要應用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;
}
}