一个对小学生的随机生成的四则运算试题

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 欢迎提粗来呀

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值