軟體工程第一周作業 小學生四則運算題

2022-04-11 03:32:03 字數 3673 閱讀 1656

程式的實現思路:

1、產生隨機的數字和運算子,這是組成題目的零件。

數字分為整數和真分數。需要注意的是,為了保證正確,真分數應該要檢查(1)分母不為0,(2)不能約分;同時為了避免計算結果是nan或∞的情況,出於程式簡單考慮,生成的整數都是正數。

運算子是簡單的四則運算。

2、呼叫1中的功能,生成題目並計算結果。

在這裡控制參與運算的數的個數是隨機的、某個位置生成整數還是分數也是隨機的。生成題目只需要簡單的迴圈呼叫就可以了。

計算題目結果使用轉化為運算子字首式的方法。因為開始寫的時候沒有考慮加括號,直接用函式返回值壓棧計算,再在這個基礎上加括號就不方便了。這裡也可以看見,乙個函式最好只實現乙個功能。

3、輸入輸出部分。

首先在螢幕列印乙個簡單的介面,然後迴圈地輸出題目、輸入結果、判斷正誤,最後給出統計結果。

以下是**和結果:

#include #include 

#include

#include

#define limit 30 //

分母的範圍

int n; //

運算數的範圍

int findcommonfactor(int p,int

q) }

return

commonfactor;

}float properfraction(char *s,int *i)

s[*i]='

('; //

存入字串

(*i)++;

if(p<10

)

else

s[*i]='/'

; (*i)++;

if(q<10

)

else

s[*i]=')'

; (*i)++;

return (float)p/(float

)q;}

int operator(char *s,int *i)

int decimal(char *s,int*i)

; //

暫存陣列

int j=0; //

cursor

int substitude=0; //

替身while(num==0

) num=rand()%n;

substitude=num;

while(num>0) //

反序按位拆開

for(j--;j>=0;j--) //

存入字串

return

substitude;

}int rank(char x,char

y)float question(char *s)

; //

結果棧int stacktop=1; //

符號棧頂

int resulttop=0; //

結果棧頂

float newnum=0; //

新生成數

while(len<2) //

參與運算的數至少有2個

len=rand()%11

;

for(j=0;j1;j++)

resulttop--; //

修正結果棧

stacktop--; //

彈出運算子

} stack[stacktop]=s[i-1]; //

新運算子入棧

stacktop++;

}dorf=rand()%2

;

if(dorf)

newnum=(float)decimal(s,&i);

else

newnum=properfraction(s,&i);

result[resulttop]=newnum; //

新數入棧

resulttop++;

while(stacktop>1) //

剩下的計算

resulttop--; //

修正結果棧

stacktop--; //

彈出運算子

} s[i]=0; //

題目結束

return result[0];}

float trans(char *input)

while(input[i]!=0 && input[i]!='/'

)

if(input[i]==0

) num=(float

)p;

else

if(q<=0

) num=0.0/0.0

;

else

}return

num;

}int main(void

) ; //

題目float result=0.0; //

題目結果

char input[50]=; //

輸入結果

int statistic=0; //

統計正確量

float inputnum=0; //

輸入數值

for(;i<80;i++) //

介面 printf("*"

); printf(

"\n歡迎使用算式生成器!\n");

printf(

"\n請輸入要求:\n");

printf(

"參與計算數的範圍:");

scanf("%d

",&n);

printf(

"生成算式的數量:");

scanf("%d

",&questionnum);

printf("\n

");for(i=0;i//

生成題目並判斷輸入是否正確

else

printf(

"error!\n\n");

}printf(

"correct entry: %d\n

",statistic); //

統計結果

printf("

accuracy: %.2f%%\n

",((float)statistic*100)/questionnum);

return0;

}

(第一周)小學四則運算

兩人組成員 黃興 謝孝淼 需求分析 1 選擇運算方法 四則運算或混合運算 2 生成兩組100以內隨機整數及運算符號,並進行運算 3 輸入結果與計算結果進行判斷 若結果一致,則回答正確,選擇繼續或結束答題 若結果不一致,則回答錯誤,並顯示正確答案,選擇繼續或結束答題 4 在選擇繼續或結束答題時,若連續...

軟體工程作業 小學四則運算

部落格班級 ahpu軟體工程 作業要求 實現小學四則運算 作業目標 熟練使用markdown編輯 學號3180701118 目錄8.答題並判斷正確 9.選擇運算方式選單 三 執行介面 四 作業小結 寫乙個能自動生成小學四則運算題目的程式,然後在此基礎上擴充套件 1 除了整數以外,還要支援真分數的四則...

現代軟體工程第一周作業

軟體過程與專案管理第一周作業 1.選一種你比較熟悉的軟體,點評它的優缺點,並描述此類軟體的發展歷史。答 wps 文字編輯系統 是一款辦公軟體。由 wps文字 wps wps演示三大模組組成。2 缺點 相容性較差。功能相對較弱。3 發展歷史 1988年 5月,求伯君憑一台 386電腦寫出 wps1.0...