首页 > 用户发贴区 > 编程问题提问区 > 求助一个小程序,有高手吗?
2009
01-08

求助一个小程序,有高手吗?

小弟有一个题目,要求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


求助一个小程序,有高手吗?》有 7 条评论

  1. feiyinghit 说:

    求各位了,,要交作业的。。。

  2. 尹恒科技 说:

    #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”);
    }

  3. 尹恒科技 说:

    我做的还是比较简陋的,没能完全完成你所需要的一切内容。你先用这个吧,我再改进一下。成功后马上写上去。

  4. feiyinghit 说:

    太感谢了。。。高人啊。。谢谢。。。

  5. 尹恒科技 说:

    不客气

  6. feiyinghit 说:

    上面的程序你修改过了???我看的好像动过了?

  7. 尹恒科技 说:

    没有啊

留下一个回复