這是本學期第二次作業,屬于個人練習項目。
題目:編寫一個能對0--10之間的整數進行四則運算的“軟體”
程式能接收使用者輸入的整數答案,并判斷對錯
程式結束時,統計出答對、答錯的題目數量。
補充說明:0——10的整數是随機生成的
使用者可以用鍵盤輸入來選擇四則運算中的一種,比如輸入1代表加法運算
使用者用鍵盤輸入一個字元來結束程式的運作并顯示統計結果,比如輸入e程式結束并顯示統計結果
程式設計語言不限制,指令行輸出和圖像界面輸出都可以。
要求:要有需求分析,具體設計思路,代碼實作,測試,書中PSP耗時分析,總結。
以上内容都寫到部落格中,代碼也寫到部落格中,要求寫程式時要有螢幕截圖,最後把測試的界面也截圖發到部落格上,PSP表也截圖到部落格上。
打分說明:作業滿分10分,遲交的0分,不交作業和抄襲的-10。10分包括:把代碼送出到github(1分),需求分析(1.5分),具體設計思路(1.5分),代碼實作(1分),測試(1分),書中PSP耗時分析(1.5分),總結(1.5分),代碼是否規範(1分)
作業送出截止時間為10月6日23:00,做完後把你的部落格連結和github連結發的QQ群裡,另外也要給助教的qq發一下。
github送出教程:http://www.cnblogs.com/math/p/4633472.html
我會把每次作業的完成情況統計完發到我的部落格和QQ群裡,敬請關注!
思考題(1分):如果使用者要求處理的範圍是0——100,程式應該如何設計才能很輕松的應對擴充性。
附加題(3分):程式能處理使用者的錯誤輸入,比如使用者輸入一個小數或一個字元。
思考題和附加題都是加分題,做這兩題的可以獲得相應的加分。
作業樣例,我是用C語言寫的,僅供參考。有兩個檔案,一個是head.h,另一個是calculate.c
head.h的代碼如下:
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<time.h>
4 int Add(int *,int *); //加法函數,實作加法功能
5 int Sub(int *,int *); //
6 int Mul(int *,int *); //
7 int Div(int *,int *);
8 int Calculate(); //計算函數,判斷是哪種計算并調用相關函數
9 int RandNum(int max,int min);//生成随機數
10 void JudgeHint(int rightOrfault);//輸出判斷對錯
11
12 int Calculate()
13 {
14 int right=0; //統計做對多少道題
15 int fault=0; //統計做錯多少道題
16 char type=' '; //接收使用者要生成的運算類型
17 printf("請選擇要進行那種運算\n
18 輸入 + 号表示選擇加法\n
19 輸入 - 号表示選擇減法\n
20 輸入 * 号表示選擇乘法\n
21 輸入 / 号表示選擇除法\n
22 輸入 e 表示結束程式\n
23 ");
24 scanf("%d\n",&type);
25 while(type!='e')
26 {
27 scanf("%d\n",&type);
28 if(type=='+')
29 {
30 //把變量right和fault的位址傳遞給函數Add,&是取位址符
31 //指針其實就是位址
32 Add(&right,&fault);
33 }
34 else if(type=='-')
35 {
36 // to do sub
37 }
38 else if(type=='*')
39 {
40 // to do mul
41 }
42 else if(type=='/')
43 {
44 // to do div
45 }
46 }
47 printf("您共答對%d道題,答錯%d道題\n",right,fault);
48 return 0;
49 }
50
51
52 int Add(int *right,int *fault)//函數的參數是兩個指針,分别用來統計正确和錯誤的題數
53 {
54 int answer;
55 int a,b,sum;
56 a=RandNum(10,0);
57 b=RandNum(10,0);
58 sum=a+b;
59 printf("加法運算:%d + %d = ",a,b);
60 scanf("%d",&answer);
61 if(sum==answer)//回答正确,*right加一,否則*fault加一
62 {
63 //right是一個指向整數的指針參數,*right表示right指向的
64 //記憶體單元的值,在其他程式設計語言中指針也叫引用。
65 (*right)++;
66 JudgeHint(1);
67 }
68 else
69 {
70 (*fault)++;
71 JudgeHint(0);
72 }
73 return 0;
74 }
75
76 int RandNum(int max,int min)
77 {
78 int randNumber;
79 srand((unsigned)time(NULL));//産生随機種子
80 randNumber=rand()%(max-min+1)+min;//生成想要的随機數
81 return randNumber;
82 }
83
84 void JudgeHint(int rightOrfault)
85 {
86 if(rightOrfault==1)
87 printf("回答正确!\n");
88 else if(rightOrfault==0)
89 printf("回答錯誤!\n");
90 }
calculate.c的代碼如下:
1 #include "head.h"
2 int main(int argc,char* argv[])
3 {
4 Calculate();
5 return 0;
6 }
推薦一本書《UNIX程式設計藝術》,可以從你們圖書館借來看看。