一、 特別正經的四則運算結對作業簡介!——駕駛司機一枚 ~~
1.題目要求:
本次作業要求兩個人合作完成,駕駛員和導航員角色自定,鼓勵大家在工作期間角色隨時互換
我們在剛開始上課的時候介紹過一個小學四則運算自動生成程序的例子,請實現它,要求:
(1)能夠自動生成四則運算練習題
(2)可以定制題目數量
(3)用戶可以選擇運算符
(4)用戶設置最大數(如十以內、百以內等)
(5)用戶選擇是否有括號、是否有小數
(6)用戶選擇輸出方式(如輸出到文件、打印機等)
(7)最好能提供圖形用戶界面(根據自己能力選做,以完成上述功能為主)
因為我們倆的編程能力都不是很強,而且現學的話時間比較短,就直接忽視圖形用戶界面什么的了
什么都不說了 先給自己立一個flag!如果可以的話,以后可能會補一下的
2.駕駛員和領航員的職責:
♂“滴滴滴”——駕駛員:
能夠完成全部代碼工作,程序基本實現全部要求功能,並將代碼上傳至coding.net或者GitHub代碼托管系統中(15分)
能夠對導航員在本次編程工作中起到的作用給出客觀評價,並完成500字以上的總結(5分)
♂“讓一讓啊讓一讓”——領航員:
能夠輔助駕駛員完成全部代碼工作,並且為關鍵函數選用合適的覆蓋標准設計測試用例,並編寫代碼進行單元自動測試(10分)
能夠根據上次作業的代碼檢查表對駕駛員的本次工作進行評價(5分)
能夠對本次工作完成500字以上的總結(5分)
二、 特別正經的四則運算代碼詳解!——略略略 ~~
1.放在前面的所謂main函數
main()
{
int x=30,y=6;
char choice;
srand( (unsigned)time( NULL ) );
while(1)
{
system("cls");
printf("****************************************************************************************************************************************************************");
gotoxy(x,y);
puts("1.加法練習.");
gotoxy(x,y+1);
puts("2.減法練習.");
gotoxy(x,y+2);
puts("3.乘法練習.");
gotoxy(x,y+3);
puts("4.除法練習.");
gotoxy(x,y+4);
puts("5.混合運算.");
gotoxy(x,y+5);
puts("6.退出.");
gotoxy(x,y+7);
puts("請選擇想要的運算方式...");
choice=getch();
printf("****************************************************************************************************************************************************************");
puts("請設置練習的最大數:");
scanf("%d",&Max);
printf("****************************************************************************************************************************************************************");
puts("請輸入題目數量:");
scanf("%d",&Number);
switch(choice)
{
void add();
void subt();
void mult();
void divid();
void huenhe();
case '1':add();break;
case '2':subt();break;
case '3':mult();break;
case '4':divid();break;
case '5':huenhe();break;
case '6':exit(0);
default:printf("選擇有誤!按任意鍵重新輸入...");
getch();
}
}
}
以上就是一個簡單的用戶選擇界面,emmm
2.加法運算部分
void add()
{
int i,t,num1,num2,answer;
t=0;
system("cls");
while(t!=Number)
{
num1=rand()%Max;
num2=rand()%Max;
question(num1,num2,'+');
scanf("%d",&answer);
if(answer==num1+num2)
puts("正確!");
else
printf("錯誤!正確答案是:%d\n",num1+num2);
t++;
}
if(t==Number)
{
printf("\n 你已經完成練習,按任意鍵返回菜單...");
getch();
}
}
其實總體思路很簡單,隨機取數然后判斷用戶輸入答案和正確答案是否一致,減法和加法是一樣的這里就不過多解釋了QAQ
3.除法運算部分
void divid()
{
int i,t,num1,num2,answer;
t=0;
while(t!=Number)
{
num1=rand()%Max;
num2=rand()%Max;
if (num2==0)num2++;
question(num1,num2,'/');
scanf("%d",&answer);
if(answer==num1/num2)
{
puts("正確!");
}
else
{
printf("錯誤!正確答案是:%d\n",num1/num2);
}
t++;
}
if(t==Number)
{
printf("\n 你已經完成練習,按任意鍵返回菜單...");
getch();
}
}
感謝我的領航員孟柳老可愛的提醒,原來隨機輸出被除數是有零的...哭唧唧...然后我就特別簡單粗暴地隨機到零加1了,哈哈哈
4.混合運算
void huenhe()
{
int t,a,b;
long s,m,j,answer,num1,num2,num3;
char opt1,opt2;
t=0;
s=answer=t=m=0;
system("cls");
while(t!=Number)
{
num1=rand()%Max;
num2=rand()%Max;
num3=rand()%Max;
a=rand()%4;
b=rand()%4;
opt1=fuhao(a);
opt2=fuhao(b);
printf("%ld %c %ld %c %ld=",num1,opt1,num2,opt2,num3);
scanf("%ld",&answer);
if(opt1=='*'||opt1=='/')
{
switch(opt1)
{ case '*':m=num1*num2;break;
case '/':m=num1/num2;break;
}
switch(opt2)
{
case '+':s=m+num3;break;
case '-':s=m-num3;break;
case '*':s=m*num3;break;
case '/':s=m/num3;break;
}
}
else if(opt2=='*'||opt2=='/')
{
switch(opt2)
{
case '*':m=num2*num3;break;
case '/':m=num2/num3;break;
}
switch(opt1)
{
case '+':s=num1+m;break;
case '-':s=num1-m;break;
case '*':s=num1*m;break;
case '/':s=num1/m;break;
}
}
if(opt1==opt2||opt1=='+'&&opt2=='-'||opt1=='-'&&opt2=='+')
{
switch(opt1)
{
case '+':j=num1+num2;break;
case '-':j=num1-num2;break;
}
switch(opt2)
{
case '+':s=j+num3;break;
case '-':s=j-num3;break;
}
}
if(answer==s)
{
puts("正確!");
}
else
{
printf("錯誤!正確答案是:%ld\n",s);
}
t++;
}
if(t==Number)
{printf("\n 你已經完成練習,按任意鍵返回菜單.....");
getch();
}
}
混合運算啊...就是一個判斷判斷再判斷的過程!簡單粗暴= =
三、 特別正經的結對作業小結—— 特別嚴肅
首先,要特別感謝我家小老可愛,和我一起結對也是有點辛苦的,哈哈哈,畢竟我還是萌新啊(←湊不要臉),咳咳咳,怎么說,這次結對作業雖然完成的不是很完美,但是的確是我們倆認認真真研究做出來的,有瑕疵也沒關系,其實做到這樣子感覺就很開心了,在這個過程中就是自我提升自我學習的過程,老可愛給我提出了很多很有建設性的問題,對一開始的用戶界面也進行了一定的改良(一開始,有點點糟心了哈哈哈),時間其實還是有些倉促的,我們還沒有學會UI什么的,對於文件傳送也是一臉茫然,試了好幾次也不對,就放棄了,哎,有時間是一定要好好研究研究的,在我提交作業之前,看了好幾位大神的提交作業,dalao果然都能做出來界面啊~~甚至於,做出來可下載安裝的軟件,哎,差距,雖然感到了差距的如此之大,更加激勵了我要好好學習,補上缺失的部分,最后的最后,撒浪嘿呦~
此處貼上結對伙伴孟柳老可愛的博客園
本次程序代碼
四、 特別正經的結對作業照片—— 咳咳咳
(↑↑↑↑↑寢室日常的兩個長發小可愛哈哈哈)
—————The End——————