List item
一个针对小学生的四则运算试题 ,我这代码有一个功能就是用文件写了一个可以查看错题的功能~就非常简单
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
void menu();//菜单函数
void calculate();//随机产生十道新题目
void read();//上次计算错题合集
int main()
{
system("color 8E");
printf("\t\t****************************\n");
printf("\t\t*这是一套加减乘除随机的试卷*\n");
printf("\t\t* 每题10分,总分为100分 *\n");
printf("\t\t*请选择 1:做十道新题 *\n");
printf("\t\t* 2:上次错题集合 *\n");
printf("\t\t****************************\n");
menu();
return 0;
}
void menu()
{
int y;
printf("\t\t选择功能");
label: scanf("%d",&y);
if(y!=1&&y!=2)
{
printf("\t\t输入有误,重新输入");
goto label;
}
else
{
switch(y)
{
case 1:
calculate();break;
case 2:
read();break;
}
}
}
void calculate()
{
int rand();
srand((unsigned)time(NULL));
int i,j,d1,d2,turn,n=0,sorce,elect;
float m,num;
for(j=0;j<10;j++)
{
FILE *fp;//文件指针变量
if((fp=fopen("1.txt","a+"))==NULL)//建立新文件
{
printf("cannot open file\n");
exit(0);
}
i=rand()%4+1;//运算符号
d1=rand()%10+1;d2=rand()%10+1;
switch(i)
{
case 1: printf("\t\t\t\t %d+%d= ",d1,d2);//加法
scanf("%f",&num);
m=d1+d2;
break;
case 2:
if(d1<d2)
{
turn=d1;d1=d2;d2=turn;
}
printf("\t\t\t\t%d-%d= ",d1,d2);//减法
scanf("%f",&num);
m=d1-d2;
break;
case 3: printf("\t\t\t\t%d*%d= ",d1,d2);//乘法
scanf("%f",&num);
m=d1*d2;
break;
case 4: printf("\t\t\t\t%d/%d= ",d1,d2);//除法
scanf("%f",&num);
m=d1/d2;
break;
}
if(num==m) sorce+=10 ;
else
{
n++;//计算错题个数
fprintf(fp,"%d,%d\n",d1,d2);
}
fclose(fp);
}
printf("\t\t本次答题的最终成绩为%d",sorce);
printf("\t\t结束请按 0查看错题请按 2:");
label:scanf("%d",&elect);
if(elect!=0&&elect!=2)
{
printf("\t\t输入有误,重新输入");
goto label;
}
else
{
switch(elect)
{
case 0:break;
case 2:
read();break;
}
}
}
void read()
{
int i;
int d1,d2,n;
FILE * fp;
printf("查看上次错题集:\n");
if((fp=fopen("1.txt","r+"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
while(1)
{
fscanf(fp,"%d,%d",&d1,&d2);
if(feof(fp)!=0) break;
printf("%d+%d=%d\n",d1,d2,d1+d2);
printf("%d-%d=%d\n",d1,d2,d1-d2);
printf("%d*%d=%d\n",d1,d2,d1*d2);
printf("%d/%d=%d\n",d1,d2,d1/d2);
}
}
哈哈 小白刚开始写~
有bug 欢迎提粗来呀