[問題] 這程式碼打完後感覺有點長

看板C_and_CPP (C/C++)作者 (政)時間16年前 (2010/01/04 23:17), 編輯推噓3(303)
留言6則, 3人參與, 最新討論串1/1
#include<stdio.h> #include<stdlib.h> int recur(int i,int j); int recur1(int i,int j); int recur2(int i,int j); int main() { int g1,g2,s1,s2,s3,s4,s5; printf("先想好兩個數字(限整數)\n"); printf("請將第一個數字數入a="); scanf("%d",&g1); while(g1>=100 || g1<=0) //判斷輸入的數字範圍0~99,如果不是就一直重新輸入 { printf("輸入錯誤,你輸入的是%d\n",g1); printf("輸入超過範圍\n"); printf("請重新輸入\n"); scanf("%d",&g1); continue; } printf("請乘於50\n%d*",g1); scanf("%d",&s1); while(s1!=50) //判斷輸入的數字是不是50,如果不是就一直重新輸入 { printf("輸入錯誤,你輸入的是%d\n",s1); printf("請重新輸入\n"); printf("請乘於50\n%d*",g1); scanf("%d",&s1); continue; } printf("%d* %d=",g1,s1); g1=recur(g1,s1);//運算給recur副程式處理,並傳回值 printf("%d\n",g1); printf("請加上30\n%d+",g1); scanf("%d",&s2); while(s2!=30)//判斷輸入的數字是不是30,如果不是就一直重新輸入 { printf("輸入錯誤,你輸入的是%d\n",s2); printf("請重新輸入\n"); printf("請加上30\n%d+",g1); scanf("%d",&s2); continue; } printf("%d+%d=",g1,s2); g1=recur1(g1,s2);//運算給recur1副程式處理,並傳回值 printf("%d\n",g1); printf("請乘於2\n%d*",g1); scanf("%d",&s3); while(s3!=2)//判斷輸入的數字是不是2,如果不是就一直重新輸入 { printf("輸入錯誤,你輸入的是%d\n",s3); printf("請重新輸入\n"); printf("請乘於2\n%d*",g1); scanf("%d",&s3); continue; } printf("%d*%d=",g1,s3); g1=recur(g1,s3);//運算給recur副程式處理,並傳回值 printf("%d\n",g1); printf("請加上第二個想的數字\n%d+",g1); scanf("%d",&s4); while(s4>=100 or s4<=0)//判斷輸入的數字範圍0~99,如果不是就一直重新輸入*/ { printf("輸入錯誤,你輸入的是%d\n",s4); printf("輸入超過範圍\n"); printf("請重新輸入\n"); scanf("%d",&s4); continue; } printf("%d+%d=",g1,s4); g1=recur1(g1,s4);//運算給recur1副程式處理,並傳回值 printf("%d\n",g1); printf("請減掉60\n%d-",g1); scanf("%d",&s5); while(s5!=60)//判斷輸入的數字是不是60,如果不是就一直重新輸入 { printf("輸入錯誤,你輸入的是%d\n",s5); printf("請重新輸入\n"); printf("請減掉60\n%d-",g1); scanf("%d",&s5); continue; } printf("%d-%d=",g1,s5); g1=recur2(g1,s5);//運算給recur2副程式處理,並傳回值 printf("%d\n",g1); printf("答案是:%d%d\n",(((g1+60-s4)/2)-30)/50,(g1+60)-(g1+60-s4)); printf("前兩位為所想的第一數\n後兩位為所想的第二數\n"); system("PAUSE"); return 0; } int recur(int i,int j) { int k; k=i*j; return(k); } int recur1(int i,int j) { int k; k=i+j; return(k); } int recur2(int i,int j) { int k; k=i-j; return(k); } 請問,板上有沒有神人能夠把它簡化一點? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.213.225 ※ 編輯: hhenry666 來自: 122.116.213.225 (01/04 23:20)

01/04 23:22, , 1F
保重
01/04 23:22, 1F

01/04 23:26, , 2F
不是函式名字 recur開頭的就是遞回=.=
01/04 23:26, 2F

01/04 23:58, , 3F
recur這幾個不就只是 +-* 而已嗎... 光砍這三個就...
01/04 23:58, 3F
使用各種控制敘述如 do-while,switch,遞回函式或其他方法(註:一定要使用 遞回函式 ),不可使用組合兩個變數直接輸入/輸出方法 ※ 編輯: hhenry666 來自: 122.116.213.224 (01/05 00:13)

01/05 00:17, , 4F
你的老師意思是(do-while || switch ||recursion ) ??
01/05 00:17, 4F
應該都可,好像就只是要做出算出他的數值然後再回傳回去 ※ 編輯: hhenry666 來自: 122.116.213.224 (01/05 00:22)

01/05 01:15, , 5F
問題就在於你的recur那幾個根本就不是遞迴...
01/05 01:15, 5F

01/05 17:26, , 6F
我只想說,要練習遞迴卻出這種題目的老師也是有點問題= =
01/05 17:26, 6F
文章代碼(AID): #1BGWPzCi (C_and_CPP)
文章代碼(AID): #1BGWPzCi (C_and_CPP)