第十周(3)小学生数学考试系统

来源:互联网 发布:各种网络协议的区别 编辑:程序博客网 时间:2024/04/29 20:57

*\

烟台大学计算机与控制工程学院

All rights reserved.

作者:汪莹莉

完成日期:2016年11月14日

问题描述:


1.做一个小学生考试系统,功能包括:(1)利用随机数出10道加法题;(2)小学生用户答题给出每道题的答案;(3)对小学生的答题进行评判;(4)计算出小学生答题正确率。 
2. 进一步改进,提高题目质量。要求(1)百以内算术:运算数、结果都在100以内!(2)先随机产生运算符后,针对各个运算产生运算数保证下列要求:对加法,两数之和保证不大于100;对减法,被减数大于减数,且被减数不大于100;对乘法:两数之积不超过100;对除法:被除数大于除数,且被除数不大于100,除数不许为0。 
3. 建立一个文件,里面包含人工出好的题目。程序从文件中读取题目。

程序:

#include <stdio.h>#include <stdlib.h>#include <time.h>int main (){    int sum=0;//答对的数目    int i;    int a,b,f,e;//a,b为运算时的两个数    int c;//f=0为加,f=1为减,f=2为乘,f=3为除    srand(time(0));//产生随机数    for(i=0;i<10;i++)    {        printf("这是第%d道题",i+1);        c=rand()%4;//表示0-4四个数,分别代表着加减乘除        do        {          a=rand()%100+1;//a为1-100之间的数          b=rand()%100+1;          if(a<b&&(c==1||c==3))          {              f=a;              a=b;              b=f;          }          if(c==3)           a=(a/b)*b;//调整被除数,保证能够整除        }        while((a+b)>=100||a*b>=100);            switch(c)        {        case 0://加法            f=a+b;            printf("%d+%d=",a,b);            break;        case 1://减法            f=a-b;            printf("%d-%d=",a,b);            break;        case 2://乘法            f=a*b;            printf("%d*%d=",a,b);            break;        case 3://除法            f=a/b;            printf("%d/%d=",a,b);            break;        }        scanf("%d",&e);        if(f==e)        {            printf("回答正确!\n");            sum++;        }        else            printf("回答错误!\n");    }        printf("共回答正确%d道题",sum);        return 0;    }运行结果:
知识点总结:srand(time(0))产生随机数,a=rand()%100+1;表示1-100的随机数。对于加法和乘法不超过100的程序不太明白为何要用while((a+b)>=100||a*b>=100)也有了新的认识。
学习心得:利用switch语句使得麻烦的问题简单化,只是简单的罗列即可




0 0
原创粉丝点击