一道随机一百以内加减乘除,运行时发现错误

#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类型要赋初值

img
运行错误图,每次都是同样的结果

img
现在每次都是27*47了