小弟有一个题目,要求C语言编程,求助各位高手,能否帮一把,万分感激,如果可以,当面酬谢。。。
写一个帮助电子学校学生练习数学的程序
a) 这个程序要先索要用户的ID编码 (包括两个字母和4个数字) 如AB1234
然后这个程序弹出3个选择的提示信息
(1)开始一个测试
(2)检查分数
(3)退出
b) 测试: 这个程序会给出十个数学题 如:
12 * 3 = 36
48 + 32 = 80
…
56 / 28 = 2
注意:
i)学生要在下一题弹出来之前回答问题
ii) 数学题需要包括加 减 乘 除 他们是随机产生的
iii)数学题中随机产生的数字, 他们的题目和答案中的的数不能大于两位数 , 问题和答案中的数字必须大于0 除数 不能为0
iv)在完成10个问题后, 记录学生答题用的时间
v) 给每个学生一个分数 把这个学生的 ID , 分数 和所用时间储存到一个名为‘record.txt’的文件
vi)在屏幕上打印下面的信息
Prob.题目| Correct Answ. 正确答案 | Ur Answ你的答案
c)检查分数:搜索文件 ‘record.txt’然后列出这个学生的所有历史成绩 如:
Your previous records are : (你的从前的成绩是:)
AB1234 80 150 seconds
AB1234 50 182 seconds
AB1234 90 98 seconds
>> 本文固定链接: http://www.vcgood.com/archives/3001
>> 转载请注明: feiyinghit 2009年01月08日 于 C语言帝国 发表
求各位了,,要交作业的。。。
#include “stdio.h”
#include “stdlib.h”
#include “time.h”
void print_welcome();
int make_add();
int make_minus();
int make_multi();
int make_divide();
int whether_name_tr(char name[7]);
void store_information(char name[],int score,time_t t);
void print_information();
void main()
{
int result,answer;
int i,rdm,score;
char name[7];
char c;
time_t st_t,end_t;
time_t t,sys_st_t,sys_end_t;
srand(time(NULL));
print_welcome();
scanf(“%s”,name);
while(!whether_name_tr(name))
{
printf(“incorrect input!\nPlease enter your correct student number!\n”);
scanf(“%s”,name);
}
printf(“Press \”enter\” to start the test when prepared.\n”);
c=getchar();
c=getchar();
score=0;
sys_st_t=clock();
for(i=1;i<=10;i++)
{
rdm=rand()%4;
switch(rdm)
{
case 0:result=make_add();break;
case 1:result=make_minus();break;
case 2:result=make_multi();break;
case 3:result=make_divide();
}
st_t=clock();
scanf(“%d”,&answer);
end_t=clock();
if(answer==result && end_t-st_t<=5000)
score+=10;
printf(“\n”);
}
sys_end_t=clock();
t=sys_end_t-sys_st_t;
store_information(name,score,t);
print_information();
}
int whether_name_tr(char a[7])
{
int i,result;
result=0;
for(i=0;i<2;i++)
if(a[i]>=’a’ && a[i]<=’z’ || a[i]>=’A’ && a[i]<=’Z')
result++;
for(i=2;i<=5;i++)
if(a[i]>=’0′ && a[i]<=’9′)
result++;
if(result>=6)
return(1);
else
return(0);
}
int make_add()
{
int a,b,result;
a=rand()%30+20;
b=rand()%30+20;
result=a+b;
printf(“%d+%d=”,a,b);
return(result);
}
int make_minus()
{
int a,b,result;
a=rand()%50+50;
b=rand()%30+20;
result=a-b;
printf(“%d-%d=”,a,b);
return(result);
}
int make_multi()
{
int a,b,result;
do
{
a=rand()%20+10;
b=rand()%5+2;
}while(a*b>100);
result=a*b;
printf(“%d*%d=”,a,b);
return(result);
}
int make_divide()
{
int a,b,mult,divi,result;
do
{
a=rand()%20+10;
b=rand()%5+2;
}while(a*b>100);
mult=a*b;
if(rand()%2==1)
{
divi=a;
result=b;
}
else
{
divi=b;
result=a;
}
printf(“%d/%d=”,mult,divi);
return(result);
}
void store_information(char name[],int score,time_t t)
{
FILE *fp;
fp=fopen(“record.txt”,”a”);
if(fp==NULL)
{
printf(“Information storing fails!\n”);
return;
}
fprintf(fp,”%s “,name);
fprintf(fp,”%d\’ “,score);
fprintf(fp,”%d seconds\n”,t/1000);
fclose(fp);
}
void print_information()
{
FILE *fp;
char c=’0′;
fp=fopen(“record.txt”,”r”);
if(fp==NULL)
{
printf(“Information reading fails!\n”);
return;
}
printf(“Your previous scores are:\n”);
while(c!=EOF)
{
c=getc(fp);
putchar(c);
}
fclose(fp);
}
void print_welcome()
{
printf(“Welcome to use mathematical test system.\n”);
printf(“Ten following problems will appear one by one.\n”);
printf(“You should enter your answer within 5 seconds.\n”);
printf(“Now please enter your student number.\n”);
printf(“example:AB1234\n”);
}
我做的还是比较简陋的,没能完全完成你所需要的一切内容。你先用这个吧,我再改进一下。成功后马上写上去。
太感谢了。。。高人啊。。谢谢。。。
不客气
上面的程序你修改过了???我看的好像动过了?
没有啊