根据输入结果和除法结果判断是否相同啊。用FILE打开文件写入;继续就是提示用户输入Y继续,N结束
#include<stdio.h>
#include <time.h>
#include <stdlib.h>
typedef struct _calc
{
int a;
int b;
char op;
int r1;
float r2;
}calc;
char opr[4] = {'+','-','*','/'};
int main()
{
srand(time(NULL));
calc c[5];
while(1)
{
int ok = 0;
system("cls");
printf("计算练习,电脑随机生成5道题目\n");
printf("20以内加、减、乘、除(四舍五入保留2位小数),请答题:\n");
for(int i=0;i<5;i++)
{
c[i].a = rand()%21;
c[i].op = opr[rand()%4];
if(c[i].op == '/')
c[i].b = rand()%20+1;
else
c[i].b = rand()%21;
printf("%d%c%d=",c[i].a,c[i].op,c[i].b);
if(c[i].op == '/')
scanf("%f",&c[i].r2);
else
scanf("%d",&c[i].r1);
getchar();
switch(c[i].op)
{
case '+':
if(c[i].a + c[i].b == c[i].r1)
ok++;
break;
case '-':
if(c[i].a-c[i].b == c[i].r1)
ok++;
break;
case '*':
if(c[i].a * c[i].b == c[i].r1)
ok++;
break;
case '/':
if((int)(c[i].a * 1.0 / c[i].b *100 + 0.5) == (int)(c[i].r2*100+0.1))
ok++;
}
}
printf("正确率为:%d%%\n",ok*100/5);
FILE *fp = fopen("calc.txt","w");
if(fp != NULL)
{
for(int i=0;i<5;i++)
{
if(c[i].op == '/')
fprintf(fp,"%d%c%d=%.2f\n",c[i].a,c[i].op,c[i].b,c[i].r2);
else
fprintf(fp,"%d%c%d=%d\n",c[i].a,c[i].op,c[i].b,c[i].r1);
}
fclose(fp);
}
printf("是否继续,如果是输入Y,否则输入N:\n");
char res = getchar();
if(res == 'N')
break;
}
system("pause");
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!