2005-10-20, 07:35 PM | #16 (permalink) | |
註冊會員
|
引用:
我把printf("y or n:"); scanf("%c",&c); 加到裡面 #include <stdio.h> #include <stdlib.h> main() { int a,b,i; char c; do{ <-----這裡會問,但是不管輸入甚麼都一樣會繼續執行 for(i=1;i<=4;i++) { printf("請輸入一算式"); scanf("%d%c%d",&a,&c,&b); if(c=='+') printf("%d%c%d=%d\n",a,c,b,a+b); else if(c=='-') printf("%d%c%d=%d\n",a,c,b,a-b); else if(c=='*') printf("%d%c%d=%d\n",a,c,b,a*b); else if(c=='/') printf("%d%c%d=%0.2f\n",a,c,b,(float)a/b); } <-----這裡的話只會直接顯示y or n:,之後就直接結束了 }while(c=='y'); system("PAUSE"); return 0; } 我是要讓他跑完後問還要不要在跑一遍. |
|
送花文章: 4,
|
2005-10-21, 03:23 PM | #19 (permalink) |
管理版主
|
#include <conio.h>
#include <stdio.h> #include <stdlib.h> main() { int a,b; char c; do{ printf("請輸入一組整數算式: "); scanf("%d%c%d",&a,&c,&b); switch(c) { case '+': printf("等於 %d",a+b); break; case '-': printf("等於 %d",a-b); break; case '*': printf("等於 %0.0lf",(double)a*b); break; //超長整數請見 http://66.102.7.104/search?q=cache:t...&lr=lang_zh-TW case '/': printf("等於 %0.2f",(float)a/b); break; } //if(c=='+') printf("%d%c%d=%d\n",a,c,b,a+b); //else if(c=='-') printf("%d%c%d=%d\n",a,c,b,a-b); //else if(c=='*') printf("%d%c%d=%d\n",a,c,b,a*b); //else if(c=='/') printf("%d%c%d=%0.2f\n",a,c,b,(float)a/b); printf("\n是否繼續跑一遍?(y/n)"); c=getch(); if(c=='N' || c=='n') break;//一成立就會跳出上一層的迴圈,在本題是 do{~}while(true); printf("%c\n\n",c); }while(true); printf("\n\n即將退出本程式,"); system("PAUSE"); return 0; } 以上藍字可用 c=getch(); printf("%c\n\n",c); }while(c=='Y' || c=='y'); 替換 其中除法也可改良一下 printf("等於 %0.2f",(float)a/b); 當 1/1000 時 會顯示 0.00 所以加一個判斷 if(a/b<0.01) printf("等於 %0.5f",(float)a/b); 變成 case '/': float f; f=(float)a/b; if(f<=0.01) printf("等於 %0.5f",f); else printf("等於 %0.2f",f); } |
送花文章: 2014,
|
2005-10-22, 10:53 AM | #22 (permalink) | |
管理版主
|
引用:
A:一個要按 [Enter]鍵才會繼續執行,一個只接受一個按鍵值就會繼續執行 不需再按[Enter] 還有一個 getchar(); 方法同 getch() 只是 getchar(); 其等號左邊必須是 int 而不是 char 很多時候會被誤導 寫成 char c; //...簡略 do{ c=getchar(); }while(c=='y'); 首先應該是 scanf("%c",&c); 接著當你語法覺得沒錯時有幾個地方可以檢查一下 ; 及 { } 是否少寫或多寫 接著有些編譯器受OS快取的影響就算你改正了 他還是用快取的東西做編譯聯結 此時可試著退出程式重新啟動編譯環境 (這情況雖然不大可能但不可排除) 還有一種情況 就是沒有#include 你所使用的函數,但還是編譯成功 此時您要注意 編譯Log視窗的警訊 說真的就是因為C/C++ IDE編譯器 沒有VB人性化 所以個人才不怎麼玩 C/C++ 的說 |
|
送花文章: 2014,
|
2005-10-26, 11:16 PM | #23 (permalink) |
註冊會員
|
scanf("%c",&c)是我筆誤
我研究了很久,發現好像是因為會讀取到某個資料,而那筆資料剛好不是y所以就結束迴圈了 不過難道無法解決嗎? 另外getchar(); 其等號左邊必須是 int 而不是 char是為什麼不能那樣寫? 為我用char好像對程式沒什麼影響耶? 另外這個部份: printf("請輸入一算式"); scanf("%d%c%d",&a,&c,&b); switch(c){ case '+': printf("=%d\n",a+b); break; case '-': printf("=%d\n",a-b); break; case '*': printf("=%0.0lf\n",(double)a*b); break; case '/': printf("=%0.2f\n",(float)a/b); break; } 在執行時是==>請輸入一算式算式換行結果 請問要怎麼才能不換行,直接在同一行顯示結果阿? |
送花文章: 4,
|
2005-10-26, 11:56 PM | #24 (permalink) | |
註冊會員
|
引用:
因為電腦完全不知道你要輸入多少值才要計算結果 你可能輸入三個字元3+3才要計算 也可能輸入5個字元 12+34 所以無法預測什麼情況下要進行計算 |
|
送花文章: 623,
|