| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2108 人关注过本帖
标题:萌新求助一个四则运算练习程序
只看楼主 加入收藏
XHZH
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2018-12-27
结帖率:100%
收藏
 问题点数:0 回复次数:3 
萌新求助一个四则运算练习程序
要求是:
1.运行程序后,提示用户输入要做的练习题数量。
2.当用户输入练习题数量后,刚系统提示用户选是仅进行加、减、乘、除或随机进行加、减、乘、除等练习题目  
3.当用户选择练习的题类型后,系统就随机生成1-99的练习题目,提示用户回答(输入)运算结果   
 4.用户每一个题允许有3次回答机会,当第一、二次回答错误,提示"tryagain!",当第三次都回答错误,则提示"you are wrong!"程序进行下- -题。   
5.当所有题完成后,程序输出用户所用时间及答对题数,答错题数和成绩(以100制)。   
代码如下,现在又要把上面5个功能加进去,就不会写了,求大神帮帮忙,或者告诉我怎么写也可以,谢谢
#include"stdio.h"
#include"time.h"
#include"stdlib.h"
void exam(int n);
void add(void);
void sub(void);
void mul(void);
void division(void);
int main()
{   int n;
    while(1)
    {   printf("********\n");
        printf("*1-ADD *\n");
        printf("*2-SUB *\n");
        printf("*3-MUL *\n");
        printf("*4-DIV *\n");
        printf("*0-EXIT*\n");
        printf("********\n");
        printf("Please select 0-4:");
        scanf("%d",&n);
        if(n<0||n>5)printf("Invalid number!\n");
        else if(n==0)break;
        else exam(n);
    }
}
void exam(int n)    //根据n的值选择执行不同的函数
{   switch(n)
    {   case 1:add();break;
        case 2:sub();break;
        case 3:mul();break;
        case 4:division();
    }
}
void add(void)    //求两随机整数之和
{   int x,y,z,result;
    srand(time(NULL));    //初始化系统随机数发生器
    x=rand()%100;    //产生0~99的随机整数
    y=rand()%100;
    z=x+y;
    printf("%d+%d=",x,y);
    scanf("%d",&result);
    if(result==z)printf("OK\n");
    else printf("Sorry\n%d+%d=%d\n",x,y,z);
}
void sub(void)    //求两随机整数之差
{
    int x,y,z,result;
    srand(time(NULL));
    x=rand()%100;
    y=rand()%100;
    z=x-y;
    printf("%d-%d=",x,y);
    scanf("%d",&result);
    if(result==z)printf("OK\n");
    else printf("Sorry\n%d-%d=%d\n",x,y,z);
}
void mul(void)    //求两随机整数之乘积
{
    int x,y,z,result;
    srand(time(NULL));
    x=rand()%100;
    y=rand()%100;
    z=x*y;
    printf("%d*%d=",x,y);
    scanf("%d",&result);
    if(result==z)printf("OK\n");
    else printf("Sorry\n%d*%d=%d\n",x,y,z);
}
void division(void)    //求两随机整数之商
{
    int x,y,z,result;
    srand(time(NULL));
    do    //产生两随机整数使得x能被y整除
    {       x=rand()%100;
   y=rand()%100;
    }while(x%y!=0||y==0);
    z=x/y;
    printf("%d/%d=",x,y);
    scanf("%d",&result);
    if(result==z)printf("OK\n");
    else printf("Sorry\n%d/%d=%d\n",x,y,z);
}
搜索更多相关主题的帖子: 随机 void int printf result 
2018-12-27 11:59
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:396
专家分:2640
注 册:2018-3-30
收藏
得分:0 
习题数量可以在你的exam中读入,再加一个循环。
随机运算可以用随机数。
答题对错可以用返回值返回,在exam里面记录处理。

saber,别哭.
2018-12-27 15:16
莱茵瓶
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:32
专家分:103
注 册:2018-10-30
收藏
得分:0 
程序代码:
#include"stdio.h"
#include"time.h"
#include"stdlib.h"
void exam(int n);
void add(void);
void sub(void);
void mul(void);
void division(void);
void random(void);
int a;         //分数
int num=5;     //设置题目数量
clock_t start,finish; //起始时间
double totaltime;     //用时
int i;
int main()
{     
    int n;
    while(1)
    {
        printf("********\n");
        printf("*1-ADD *\n");
        printf("*2-SUB *\n");
        printf("*3-MUL *\n");
        printf("*4-DIV *\n");
        printf("*5-Random*\n");
        printf("*0-EXIT*\n");
        printf("********\n");
        printf("Please select 0-5:");
        scanf("%d",&n);
        if(n<0||n>5)printf("Invalid number!\n");
       // else if(n==0)break;
        else exam(n);
        a=0;        //初始分数
    }
}
void exam(int n)    //根据n的值选择执行不同的函数
{   switch(n)
    {  
        case 1:start = clock();
               for(i=1;i<=num;i++)            //仅进行一种运算
               {
                   printf("第%d题:",i);
                   add();
               }
               finish=clock();
               totaltime=(double)(finish-start)/CLOCKS_PER_SEC;
               printf("最后得分为%d,用时%f秒\n",a,totaltime); break;  //输出最后得分和用时
        case 2:start = clock();
               for(i=1;i<=num;i++)           
               {
                   printf("第%d题:",i);
                   sub();
               }
               finish=clock();
               totaltime=(double)(finish-start)/CLOCKS_PER_SEC;
               printf("最后得分为%d,用时%f秒\n",a,totaltime); break;
        case 3:start = clock();
               for(i=1;i<=num;i++)           
               {
                   printf("第%d题:",i);
                   mul();
               }
               finish=clock();
               totaltime=(double)(finish-start)/CLOCKS_PER_SEC;
               printf("最后得分为%d,用时%f秒\n",a,totaltime); break; 
        case 4:start = clock();
               for(i=1;i<=num;i++)           
               {
                   printf("第%d题:",i);
                   division();
               }
               finish=clock();
               totaltime=(double)(finish-start)/CLOCKS_PER_SEC;
               printf("最后得分为%d,用时%f秒\n",a,totaltime); break; 
        case 5:random();
    }
}
void random()    //随机运算
{
    start = clock();//取开始时间
    for(int i=1;i<=num;i++)         
    {
        int x;
        x=rand()%4;     //产生0~3的随机整数
        printf("第%d题:",i);
        switch(x+1)     //选取运算
        {  
            case 1:add();break;
            case 2:sub();break;
            case 3:mul();break;
            case 4:division();
        }
    }
    finish=clock();
    totaltime=(double)(finish-start)/CLOCKS_PER_SEC;
    printf("最后得分为%d,用时%f秒\n",a,totaltime); 
}
void add(void)    //求两随机整数之和
{  

        int x,y,z,result;
        srand(time(NULL));    //初始化系统随机数发生器
        x=rand()%100;    //产生0~99的随机整数
        y=rand()%100;
        z=x+y;
        for(int i=1;i<=3;i++)
        {
            printf("%d+%d=",x,y);
            scanf("%d",&result);
            if(result==z)
            {
                printf("OK\n");
                a++;        //答对加一分
                break;
            }
            else
            {
                if(i==3)
                {
                    printf("you are wrong!\n");
                   
                }
                else printf("tryagain!\n");
            }
        }
}
void sub(void)    //求两随机整数之差
{  

        int x,y,z,result;
        srand(time(NULL));    //初始化系统随机数发生器
        x=rand()%100;    //产生0~99的随机整数
        y=rand()%100;
        z=x-y;
        for(int i=1;i<=3;i++)
        {
            printf("%d-%d=",x,y);
            scanf("%d",&result);
            if(result==z)
            {
                printf("OK\n");
                a++;
                break;
            }
            else
            {
                if(i==3)printf("you are wrong!\n");
                else printf("tryagain!\n");
            }
        }
}
void mul(void)    //求两随机整数之乘积
{ 
        int x,y,z,result;
        srand(time(NULL));    //初始化系统随机数发生器
        x=rand()%100;    //产生0~99的随机整数
        y=rand()%100;
        z=x*y;
        for(int i=1;i<=3;i++)
        {
            printf("%dx%d=",x,y);
            scanf("%d",&result);
            if(result==z)
            {
                printf("OK\n");
                a++;
                break;
            }
            else
            {
                if(i==3)printf("you are wrong!\n");
                else printf("tryagain!\n");
            }
        }
}
void division(void)    //求两随机整数之商
{ 
        int x,y,z,result;
        srand(time(NULL));
        do    //产生两随机整数使得x能被y整除
        {      
            x=rand()%100;
            y=rand()%100;
        }
        while(x%y!=0||y==0);
        z=x/y;
        for(int i=1;i<=3;i++)
        {
            printf("%d/%d=",x,y);
            scanf("%d",&result);
            if(result==z)
            {
                printf("OK\n");
                a++;
                break;
            }
            else
            {
                if(i==3)printf("you are wrong!\n");
                else printf("tryagain!\n");
            }
        }
}
我也是小白,练练手,没改你的程序,只是往里加了一些
水平有限,加的很多,可能很多多余的,看看就好了
2018-12-28 09:54
XHZH
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2018-12-27
收藏
得分:0 
回复 3楼 莱茵瓶
谢谢,我慢慢看,真的很谢谢你
2018-12-28 17:15
快速回复:萌新求助一个四则运算练习程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032903 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved