#include<stdio.h>
#include<stdlib.h>
int main(void)
{int a,b;char operation;
float Ans,ans;
a=rand()%100;
b=rand()%100;
operation=rand()%4;
printf("%d %d %d %d",operation,a,b,Ans);
switch(operation){
case'0':{
printf("请计算%d+%d=?",a,b);
Ans=a+b;}
break;
case'1':{
printf("请计算%d-%d=?",a,b);
Ans=a-b;}
break;
case'2':{
printf("请计算%d*%d=?",a,b);
Ans=a*b;}
break;
case'3':{
printf("请计算%d/%d=?",a,b);
Ans=a/b;}
break;
default:
printf("NULL");
break;
}
scanf("%f",&ans);
if(ans==Ans)
printf("恭喜,回答正确");
else printf("回答错误");
return 0;
}
修改如下,供参考:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void)
{
int a,b;
int operation;
float Ans,ans;
srand((unsigned int)time(NULL));
a=rand()%100;
b=rand()%100;
operation=rand()%4;
printf("%d %d %d\n",operation,a,b);
switch(operation){
case 0:{
printf("请计算%d+%d=? ",a,b);
Ans=(float)a+b;
}
break;
case 1:{
printf("请计算%d-%d=? ",a,b);
Ans=(float)a-b;
}
break;
case 2:{
printf("请计算%d*%d=? ",a,b);
Ans=(float)a*b;
}
break;
case 3:{
printf("请计算%d/%d=? ",a,b);
Ans=(float)a/b;
}
break;
default:
printf("NULL");
break;
}
scanf("%f",&ans);
if(ans==Ans)
printf("恭喜,回答正确\n");
else printf("回答错误\n");
return 0;
}
为什么不也把运行错误的截图 放出来呢
你的operation随机出来的值应该是0-3,而不是'0'-'3',注意分辨字符和数字
望采纳
float Ans = 0, ans = 0; //float类型要赋初值
运行错误图,每次都是同样的结果
现在每次都是27*47了