问题及代码:
/*
Copyright (c) 2014,烟台大学计算机与控制工程学院
All rights reserved.
文件名称:test.cpp
作 者:张学伟
完成日期:2016年1月4日
版 本 号:v1.0
题目描述:
学生考试系统,做一个小功能如下。
(1) 利用随机函数出十道加法题;
(2) 小学生用户答题,给出每道题的答案;
(3) 对小学生的答题进行判断;
(4) 计算小学生的答题正确率。
运行过程:
#include <stdio.h>#include <stdlib.h>
#include <time.h>
int main()
{
int sum=0;
int a,b,d,t;//系统随机值,系统计算值,及小学生所得值;
int c;//加减乘除变量;
int i;//所取得的题目;
double m;//得分率;
char name;
int class,num;
printf("请输入你的姓名:");
scanf("%s",&name);
printf("请输入你的班级:");
scanf("%d",&class);
printf("请输入你的学号:");
scanf("%d",&num);
srand(time(0));//随机数函数;
for(i=0; i<10; i++)
{
printf("第 %d 题: ", i+1);
c=rand()%4;
do
{
a=rand()%100+1;//保证取得的数位两位数;
b=rand()%100+1;
if(a<b&&(c==1||c==3))//当为减法运算或者为除法运算时保证前一个数位大值;
{
d=a;
a=b;
b=d;
}
if(c==3)
a=(a/b)*b;//保证除数不为零;
}
while((a+b)>=100||a*b>=100);
switch(c)
{
case 0://加法;
d=a+b;
printf("%d+%d=", a, b);
break;
case 1://减法;
d=a-b;
printf("%d—%d=", a, b);
break;
case 2://乘法;
d=a*b;
printf("%d×%d=", a, b);
break;
case 3://除法;
d=a/b;
printf("%d÷%d=", a, b);
break;
}
scanf("%d", &t);
if(t==d)//判断答案是否正确;
{
printf(" right! \n");
sum++;
}
else
printf(" wrong! \n");
}
m=1.0*sum/10*100;//计算得分率;
printf("共答对了%d道题,得分率%.0lf%%\n", sum,m);
if(m>=90)
printf("You are the best!\n");
else if(m<90&&m>=60)
printf("Keep on going!\n");
else
printf("Don't give up!");
return 0;
}
运行结果:
知识点总结:随机函数的应用。
学习心得:注意取得的数要为两位数。