C语言,设计一个程序帮助小学生练习数学。

一、C语言程序设计题目设计一个程序帮助小学生练习数学。a)程序首先让使用者输入ID号(包含两个字母和四个数字),例如:PleaseinputyourfourdigitID... 一、 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:退出程序。
e) 程序评价标准
− 正确性(Correctiveness)
− 可读性(Readability)
− 鲁棒性(Robustness)
− 简洁性(Conciseness)
展开
 我来答
zxzasa1995
2014-09-15 · 超过12用户采纳过TA的回答
知道答主
回答量:22
采纳率:0%
帮助的人:23.2万
展开全部
1L的哥们竟然没有分数也没有读写文件记录,我在他的基础上加了这个功能,采纳谁都可以哦~
#include <stdio.h>
#include <ctype.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
#define IDNO_LENGTH 6
#define CALC_KIND 4
#define CALC_NUM 10

bool checkNo(char idNo[]);
char getSignal();
int getResult(int,int,char);
void takeTest();

//main函数
void main()
{
printf("Please input your four digit ID no(begin with two letters):");
char idNo[IDNO_LENGTH];
do
{
scanf("%s",&idNo);
fflush(stdin);
} while(checkNo(idNo)==false);

printf("1.Start a test\t2.Check score\t3.Exitb\n");
int choose;
do
{
printf("选择:");
scanf("%d",&choose);
fflush(stdin);
} while(choose!=1 && choose!=2&& choose!=3);

if(choose==1)
{
takeTest();
}else if(choose==2)
{
FILE *fp;
char ch;
if((fp=fopen("score.txt","rt+"))==NULL)
{
printf("\n你还没做过题目测试");
getch();
exit(1);
}
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
else
{
exit(0);
}
}

//获取随机运算符
char getSignal()
{
char signal[CALC_KIND]={'+','-','*','/'};
srand((unsigned)time(NULL));
return signal[rand()%4];
}

//获取随机数
int random(double start, double end)
{
return (int)(start+(end-start)*rand()/(RAND_MAX+ 1.0));
}

//运算
int getResult(int num1,int num2,char signal)
{
int res;
switch(signal)
{
case '+':
res=num1+num2;break;
case '-':
res=num1-num2;break;
case '*':
res=num1*num2;break;
case '/':
res=num1/num2;break;
default:
res=0;
printf("运算符不符合规则\n");
}
return res;
}

//列出10道题
void takeTest()
{
printf("开始答题,每道题10分,总共100分\n");
clock_t startTime;
startTime=clock();
int index;
int giveRes;
int num1;
int num2;
int score=0;
char signal;
for(index=0;index<CALC_NUM;index++)
{
srand((unsigned)time(NULL));
signal=getSignal();
num1=random(0,100);
num2=random(1,100);

printf("%d%c%d=",num1,signal,num2);
scanf("%d",&giveRes);
fflush(stdin);
if(getResult(num1,num2,signal)==giveRes)
{
printf("correct\n");
score+=10;
}
else
{
printf("wrong\n");
}
}
FILE *fp=fopen("score.txt","w");
fprintf(fp,"分数为%d",score);
fclose(fp);
printf("解10道题用了%lf秒\n",(double)(clock()- startTime)/CLOCKS_PER_SEC);
}

//检测idNo是否合规则,合规则返回true
bool checkNo(char idNo[])
{
int index;
bool flag;
flag=true;
for(index=0;index<IDNO_LENGTH;index++)
{
if(index<2)
{
if(!isalpha(idNo[index]))
{
flag=false;
printf("ID no 不符合规则,重新输入:");
break;
}
}
else
{
if(!isdigit(idNo[index]))
{
flag=false;
printf("ID no 不符合规则,重新输入:");
break;
}
}
}
return flag;
}
追问
你好,这是C语言还是C++语言?
我要的是C语言
追答
这绝对是C语言,相信我
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MarsCode
2024-08-21 广告
```c#include int main() { int a, b; printf("请输入两个整数: "); scanf("%d %d", &a, &b); int sum = a + b; printf(... 点击进入详情页
本回答由MarsCode提供
王者泰山159
2014-09-15 · TA获得超过125个赞
知道答主
回答量:182
采纳率:100%
帮助的人:50.8万
展开全部
你自己修改修改:
#include <stdio.h>
#include <ctype.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
#define IDNO_LENGTH 6
#define CALC_KIND 4
#define CALC_NUM 10

bool checkNo(char idNo[]);
char getSignal();
int getResult(int,int,char);
void takeTest();

//main函数
void main()
{
printf("Please input your four digit ID no(begin with two letters):");
char idNo[IDNO_LENGTH];
do
{
scanf("%s",&idNo);
fflush(stdin);
} while(checkNo(idNo)==false);

printf("1.Start a test\t2.Exitb\n");
int choose;
do
{
printf("选择:");
scanf("%d",&choose);
fflush(stdin);
} while(choose!=1 && choose!=2);

if(choose==1)
takeTest();
else
exit(0);
}

//获取随机运算符
char getSignal()
{
char signal[CALC_KIND]={'+','-','*','/'};
srand((unsigned)time(NULL));
return signal[rand()%4];
}

//获取随机数
int random(double start, double end)
{
return (int)(start+(end-start)*rand()/(RAND_MAX+ 1.0));
}

//运算
int getResult(int num1,int num2,char signal)
{
int res;
switch(signal)
{
case '+':
res=num1+num2;break;
case '-':
res=num1-num2;break;
case '*':
res=num1*num2;break;
case '/':
res=num1/num2;break;
default:
res=0;
printf("运算符不符合规则\n");
}
return res;
}

//列出10道题
void takeTest()
{
clock_t startTime;
startTime=clock();
int index;
int giveRes;
int num1;
int num2;
char signal;
for(index=0;index<CALC_NUM;index++)
{
srand((unsigned)time(NULL));
signal=getSignal();
num1=random(0,100);
num2=random(1,100);

printf("%d%c%d=",num1,signal,num2);
scanf("%d",&giveRes);
fflush(stdin);
if(getResult(num1,num2,signal)==giveRes)
{
printf("correct\n");
}
else
{
printf("wrong\n");
}
}

printf("解10道题用了%lf秒\n",(double)(clock()- startTime)/CLOCKS_PER_SEC);
}

//检测idNo是否合规则,合规则返回true
bool checkNo(char idNo[])
{
int index;
bool flag;
flag=true;
for(index=0;index<IDNO_LENGTH;index++)
{
if(index<2)
{
if(!isalpha(idNo[index]))
{
flag=false;
printf("ID no 不符合规则,重新输入:");
break;
}
}
else
{
if(!isdigit(idNo[index]))
{
flag=false;
printf("ID no 不符合规则,重新输入:");
break;
}
}
}
return flag;
}
希望能解决您的问题。
追问
。。。。。我是小白。完全不会,麻烦你了。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Qt学视觉
2014-09-15 · 使用Qt来学习视觉halcon以及opencv
Qt学视觉
采纳数:45 获赞数:230

向TA提问 私信TA
展开全部
你这是要说明什么的呢额???
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式