哪位C语言,计算机大神帮忙讲下这个题啊,感激不尽!!真的是不会做啊!!!设计程序帮助小学生练习数学 20

C语言程序设计题目(算式必须是整除,不能有小数点)正文设计一个程序帮助小学生练习数学。a)程序首先让使用者输入ID号(包含两个字母和四个数字),例如:Pleaseinpu... C语言程序设计题目 (算式必须是整除,不能有小数点)
正文设计一个程序帮助小学生练习数学。
a) 程序首先让使用者输入ID号(包含两个字母和四个数字),例如:
Please input your four digit ID no: AB1234
程序应该有输入验证功能。ID正确输入完毕后,程序提示两个选项:
(1) Start a test
(2) Check score
(3) Exit
b) Test: 程序给出10个数学题目,例如:
12 * 3 = 36
48 + 32 = 80

56 / 28 = 2
注意:
i) 学生需要在下一道题给出前,回答当前问题。
ii) 数学题应包含加、减、乘、除运算,每题的运算类型随机产生。
iii) 每个题目的操作数随机生成,操作数的值不能超过100,除数不能为0。
iv) 在屏幕上输出下列信息:
Prob. | Correct Answ. | Ur(用户) Answ
v) 将学生ID和成绩记录在文本文件“score.txt”中
c) Check score:通过学生ID在“score.txt”文件中,查询历史成绩,并显示。
d) Exit:退出程序。
展开
 我来答
蛙王_____
2014-06-25 · TA获得超过250个赞
知道小有建树答主
回答量:199
采纳率:0%
帮助的人:117万
展开全部
一开始是输入字符串(包括验证正确性,不正确重新输入)之后就switch case语句,让用户选择1,2,3.
选1就产生开始随机数,范围在0~100。先随机产生两个数,再随机产生一个运算符(+,-,*,/这个可以是用产生一个整数,模4的方式得到是进行什么运算)。如果是加、减、乘时直接拿来用。比如以加法为例,产生的数a,b放在数组里,用一个变量c保存结果,c=a+b,然后scanf,让用户输入,输入的值和c比较,看对不对。如果是除法要先判断1.除数是否为0,2能否整除,如果不满足条件重新生成随机数。如此循环10次,每次循环结束给出当前题目答案。
选2就是文件读取相关,用文件操作读取即可,随便说下之前生成出的题目都需要写入文件score.txt

选3的话直接exit(0)退出即可
追问
谢谢,我不会写,你别打我
liouyi250
推荐于2017-12-11 · TA获得超过314个赞
知道小有建树答主
回答量:375
采纳率:60%
帮助的人:61.9万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

int* readFile(int a[],const char* ID){
    char path[]="score.txt";
    int j=0;
    bool flag=false;
    FILE* f=fopen(path,"rt");
    if(f==NULL){
        printf("读取文件错误\n");
        exit(0);
    }
    char line[100];
    while(!feof(f)){
        fgets(line,sizeof(line)-1,f);
        if(strstr(line,ID)){
            char *r=line+strlen(ID)+1;
            int score=atoi(r);
            a[j++]=score;
            flag=true;
        }
    }
    fclose(f);
    if(flag)
        return a;
    else{
        printf("没有找到该用户或读取文件出错");
        exit(0);
    }
        
}

int test(){
    char fuhao[]="+*-/";
    int a,b,c;
    srand(time(NULL));
    int i=rand()%4;
    a=rand()%100;
    if(i==3){    
        b=rand()%10+1;
        c=a*b;
        printf("%d/%d=",c,a);
        return b;
    }else if(i==2){
        b=rand()%100;
        int max=a>b?a:b;
        int min=a>b?b:a;
        printf("%d-%d=",max,min);
        return max-min;
    }else{
        b=rand()%100;
        printf("%d%c%d=",a,fuhao[i],b);
        if(fuhao[i]=='+')
            return a+b;
        else
            return a*b;
    }
}

void writeFile(const char *id,int score){
    FILE* f=fopen("score.txt","a+");
    if(f==NULL){
        printf("文件打开失败\n");
        exit(0);
    }
    char line[100];
    memset(line,0,100);
    sprintf(line,"%s %d\r\n",id,score);
    fwrite(line,1,strlen(line),f);
    fclose(f);
}

int main()
{
    char ID[10];
    int select,scores[100];
    printf("Please input your four digit ID no: ");
    scanf("%s",&ID);
    memset(scores,-1,100);
    readFile(scores,ID);
    while(1){
        printf("(1) Start a test\n(2) Check score\n(3) Exit\n请输入:");
        scanf("%d",&select);
        if(select==1){
            int count=0;
            for(int i=0;i<10;i++){
                int right=test();
                int ui;
                scanf("%d",&ui);
                printf("%d | %d | %d \n",i+1,right,ui);
                if(right==ui){
                    count++;
                }
            }
            printf("\n\n答对%d,得分%d\n\n",count,count*10);
            writeFile(ID,count*10);
        }else if(select==2){
            int i=-1;
            while(scores[++i]!=-1){
                printf("%d ",scores[i]);
                
            }
            printf("\n");
        }else{
            break;
            exit(0);
        }
    }
    
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2014-06-25 · TA获得超过139个赞
知道答主
回答量:135
采纳率:0%
帮助的人:40.9万
展开全部
必须用C? 命令行程序行吗? C++ MFC可以吗?
更多追问追答
追问
要用c啊
追答
你让小学生玩命令行?呆掉了吧 这个时代写个图形界面不是很难吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式