问题及代码:
/******************************************************
功能描述:本程序可以随机产生10道题目,前5题为简单加减乘除
后面5题为附带括号的加减乘除,自动评分,并带有一次补考机会
返回值:学生回答正确的题目数sum
********************************************************/
#include <stdio.h>
#include <time.h>
#include <windows.h>
int a,b,c,d,t,i;//a,b是产生的随机数,c控制运算符,d为正确答案,t为输入的答案
int x,y;//x用于存放除法的商,y用于存放除法的余数
int student_test1();
int student_test2();
int main()//程序的主控函数
{
char class[10];//
char name[10];
int sum1,sum2,sum3,sum4,m=0;//控制答对题目总数
int reply;//reply控制学生回复
printf("\n 二年级下半学期期末考试(卷一)\n");
printf("本次考试一共有10道题,每道题10分,满分100\n");
printf("考试时间25分钟\n");
printf("请认真阅读每一小题,并在题目的后面填入你认为正确的答案\n\n");
printf("请输入你的姓名: ");
gets(class);
printf("请输入你的班级:(例如计163-1)");
gets(name);
printf("正在核对信息,加载中%%");
for(i=1; i<101; i++)
{
if(m<10)
{
printf("%d",m);
Sleep(300);
printf("\b");
m+=2;
}
else if(m>=10)
{
printf("%d",m);
Sleep(300);
printf("\b\b");
m+=5;
if(m>100)
break;
}
}
printf("\n信息核对成功,考试开始\n第一大题:\n\n");
sum1=student_test1();
printf("\n\n第二大题:复合加减乘除\n");
sum2=student_test2();
printf("你一共答对%d题\n",sum1+sum2);
printf("最终得分:%d\n\n",10*(sum1+sum2));
if((sum1+sum2)*10<60)
{
printf("您的成绩低于60\n\n");
printf("是否进入补考: (是回复1,否回复0)\n\n");
scanf("%d",&reply);
if(reply==1)
{
sum3=student_test1();
sum4=student_test2();
if((sum3+sum4)*10>60)
printf("恭喜你补考通过\n");
else
{
printf("补考次数为0\n");
printf("您的最终成绩为:%d",(sum3+sum4)*10);
}
}
else
printf("考试结束\n");
}
return 0;
}
定义函数
int student_test1()
{
int sum=0;
srand(time(0));
for(i=0; i<5; i++)
{
printf("第 %d 题: \n", i+1);
a=rand()%10+1;
b=rand()%10+1;
c=rand()%4+1;
switch(c)
{
case(1):
printf(" %d + %d = ",a,b);
d=a+b;
scanf("%d",&t);
if(t==d)
{
printf("恭喜你,回答正确\n");
sum++;
}
else
printf("回答错误,继续努力\n");
break;
case(2):
printf(" %d - %d = ",a,b);
d=a-b;
scanf("%d",&t);
if(t==d)
{
printf("恭喜你,回答正确\n");
sum++;
}
else
printf("回答错误,继续努力\n");
break;
case(3):
printf(" %d * %d = ",a,b);
d=a*b;
scanf("%d",&t);
if(t==d)
{
printf("恭喜你,回答正确\n");
sum++;
}
else
printf("回答错误,继续努力\n");
break;
case(4):
printf(" %d %% %d 商= ",a,b);
d=a/b;
scanf("%d",&t);
y=a%b;
if(t==d)
{
printf("恭喜你,回答正确\n");
sum++;
}
else
printf("回答错误,继续努力\n");
break;
}
}
return sum;
}
int student_test2()
{
int sum=0;
srand(time(0));
for(i=0; i<5 ; i++)
{
printf("第%d题\n",i+6);
a=rand()%10+1;
b=rand()%10+1;
c=rand()%4+1;
switch(c)
{
case(1):
printf("(%d - %d) + %d =",a,b,a);
d=(a-b)+a;
scanf("%d",&t);
if(d==t)
{
printf("恭喜你,回答正确\n");
sum++;
}
else
printf("回答错误,继续努力\n");
break;
case(2):
printf("(%d + %d) + %d =",a,b,a);
d=(a+b)+a;
scanf("%d",&t);
if(d==t)
{
printf("恭喜你,回答正确\n");
sum++;
}
else
printf("回答错误,继续努力\n");
break;
case(3):
printf("(%d + %d) * %d =",a,b,a);
d=(a+b)*a;
scanf("%d",&t);
if(d==t)
{
printf("恭喜你,回答正确\n");
sum++;
}
else
printf("回答错误,继续努力\n");
break;
case(4):
printf("(%d + %d) %% %d =",a,b,a);
d=(a+b)/a;
scanf("%d",&t);
if(d==t)
{
printf("恭喜你,回答正确\n");
sum++;
}
else
printf("回答错误,继续努力\n");
break;
}
}
return sum;
}