哪位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:退出程序。 展开
正文设计一个程序帮助小学生练习数学。
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:退出程序。 展开
3个回答
展开全部
一开始是输入字符串(包括验证正确性,不正确重新输入)之后就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)退出即可
选1就产生开始随机数,范围在0~100。先随机产生两个数,再随机产生一个运算符(+,-,*,/这个可以是用产生一个整数,模4的方式得到是进行什么运算)。如果是加、减、乘时直接拿来用。比如以加法为例,产生的数a,b放在数组里,用一个变量c保存结果,c=a+b,然后scanf,让用户输入,输入的值和c比较,看对不对。如果是除法要先判断1.除数是否为0,2能否整除,如果不满足条件重新生成随机数。如此循环10次,每次循环结束给出当前题目答案。
选2就是文件读取相关,用文件操作读取即可,随便说下之前生成出的题目都需要写入文件score.txt
选3的话直接exit(0)退出即可
追问
谢谢,我不会写,你别打我
展开全部
#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);
}
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
必须用C? 命令行程序行吗? C++ MFC可以吗?
更多追问追答
追问
要用c啊
追答
你让小学生玩命令行?呆掉了吧 这个时代写个图形界面不是很难吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |