C语言实现产生100以内的随机数做加减运算

两年没耍C语言了,这个是基于案例的软件构造的作业。是为了实现,产生100道100以内的随机数,来组成一个算式。

分析:

1、能产生随机数

2、随机产生运算符

3,使产生的数和符号构成算式,

4、获取用户输入,产生正确答案后与用户输入校对。

5、保存用户输入,保存自动计算的结果。

6、输出结果,每行5个算式。算式如:1 + 1 = 2 用户结果:3 ;

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

int getNumber(){
    return rand()%100;
}

int getOp(){
    return rand()%2 ;
}

void getsum(int *num1,int *num2 ,int *op ,int *userRes, int *result){
    int numMax , numMin , i ,uNum;
    for(i = 0 ; i < 100 ; i++ ){
            //先获取操作符,如果是+  不排大小,是减,再排大小
            if(op[i]==1){//加法
                printf(" %d + %d = ",num1[i],num2[i]);
                scanf("%d",&uNum) ;
                userRes[i] = uNum ;//获取用户结果
                result[i] = num1[i] + num2[i] ; //加法正确结果
                printf("\n");  //验证结果
                if(userRes[i] == result[i]){
                    printf("恭喜你!结果正确 %d + %d = %d \n",num1[i],num2[i],userRes[i]);
                }else{
                    printf("很遗憾!结果错误 %d + %d = %d \t 您的结果是:%d\n",num1[i],num2[i],result[i],userRes[i]);

                }

            }esle{//减法
               if(num1[i] >= num2[i] ){//num1 dayu num2
                printf(" %d - %d = ",num1[i],num2[i]);
                scanf("%d",&uNum) ;
                userRes[i] = uNum ;//获取用户结果
                result[i] = num1[i] - num2[i] ; //加法正确结果
                printf("\n");
                //验证结果
                if(userRes[i] == result[i]){
                    printf("恭喜你!结果正确 %d + %d = %d \n",num1[i],num2[i],userRes[i]);
                }else{
                    printf("很遗憾!结果错误 %d + %d = %d \t 您的结果是:%d\n",num1[i],num2[i],result[i],userRes[i]);

                }
               } else{
                printf(" %d - %d = ",num2[i],num1[i]);
                scanf("%d",&uNum) ;
                userRes[i] = uNum ;//获取用户结果
                result[i] = num2[i] - num1[i] ; //加法正确结果
                printf("\n");  //验证结果
                 if(userRes[i] == result[i]){
                    printf("恭喜你!结果正确 %d + %d = %d \n",num2[i],num1[i],userRes[i]);
                }else{
                    printf("很遗憾!结果错误 %d + %d = %d \t 您的结果是:%d\n",num2[i],num1[i],result[i],userRes[i]);

                }
               }
            }

    }

    }

// 输出验证结果

void getresult(int *num1,int *num2 ,int *op ,int *userRes, int *result){
int  i ;
    for(i = 0 ; i < 100 ; i++ ){
        if(op[i]==1){// 加法
                printf("%d + %d = %d 您的结果是:%d \n",num1[i],num2[i],result[i],userRes[i]);
        }else{ // 减法
            if(num1[i] >= num2[i] ){//num1 dayu num2
                printf("%d - %d = %d 您的结果是:%d \n",num1[i],num2[i],result[i],userRes[i]);
               } else{
                printf("%d - %d = %d 您的结果是:%d \n",num2[i],num1[i],result[i],userRes[i]);
        }
        if(i%5 == 0) //每五个换行
            printf("\n");
    }
}


int main()
{
    // 产生两个操作数,擦欧洲胡 两个结果
   int num1[100],num2[100],op[100],userRes[100],result[100];
   int i;
    for(i = 0 ;i < 100 ; i++){
        //产生随机数 符号
        num1[i] = getNumber();
        num2[i] = getNumber();
        op[i] = getOp() ;
    }
    getsum(num1,num2 ,op ,userRes, result);
    //输出所有结果
    getresult(num1,num2 ,op ,userRes, result);
    return 0 ;
}

 

有个函数是可以优化的,但是我懒啊,没错 ,就是懒。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值