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 ;
}

 

有個函數是可以優化的,但是我懶啊,沒錯 ,就是懶。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章