兩年沒耍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 ;
}
有個函數是可以優化的,但是我懶啊,沒錯 ,就是懶。