各位前輩好...
最近開始學C++,在寫作業時有幾個疑點= =
老師雖然說不限定作法VB IF ELSE 、 CASE等方法(我恨= =...以前學vb且在c++課本發現相同的方法..)
但還是想用老師教導過的東西解出來(我覺得這樣對基本的函數更瞭解)
曾經想過用getchar 來抓 a,b,c 之字元
在將字元轉換成公式,後來實際操作後才發現到那是在緩衝區不能讀出來的(得用 PUTCHAR叫出來= =可是記憶位置變動了所以無效)...
換方法后是用scanf 來抓 a b c...重點來了 如下面程式19行我設定將輸入之a,b,c值抓入g裡面最後在顯示出g結果還是失敗,我想過應該是A的ASCALL碼抓到g裡所以顯示出來的是亂碼。
現在也是一個頭兩個大!!
麻煩可以指點以下嗎
1.#include
2.#include
3.int main (void) {
4.float x1 ; //宣告 長方形長
5.float x2 ; //宣告 長方形寬
6.float a ; //選擇三角形
7.float b; //選擇圓形
8.float c ; //選擇長方形
9.char h ; //騙人用的
10.float g; //
11.printf("請選擇計算圖形:( a=三角形 b=圓形 c=長方形 )=") ;
12.h = getchar();
13.printf("你選擇的是%c圖形:\n",h);
14.printf("請輸入 %c 圖形之兩數值 \n",h);
15.scanf ("%f,%f",&x1,&x2);
16.a = x1*x2*0.5 ;
17.b = x1*x2*3.14 ;
18.c = x1*x2 ;
19printf("請再次輸入所求圖形:");
20.scanf("%f",g)
21.printf("計算結果%f \n",g)
22.system("pause") ;
23.}
2007-10-09 11:51:51 · 2 個解答 · 發問者 杉雨淚 2 in 電腦與網際網路 ➔ 程式設計
前輩你好= =
你的方法我"大概"清楚(剛學沒多久抱歉=呵呵)
我的問題是下列這段程式
能選擇abc之函數(16 17 18)後能顯示a'b'c的值
希望你能補充這方面的
老師沒教到的...我暫時不想接觸(抱歉我堅持一步一腳印= =)
2007-10-09 13:32:08 · update #1
康康你好,謝謝你教我這麼重要的觀念...
這意味著我無法用外來的方式來指引內部的程式碼嗎??
如: printf("請輸入值");
scanf("%f",g);
printf ("顯示:%f",g);
如果這時g藉由外部輸入變成12
所以g固定成12
這時我給她個互換
而 a = y 我無法讓a變成12嗎@
2007-10-09 14:17:47 · update #2
恩恩..感謝你補充...請問我能+康康及時通嗎!
剛接觸這塊希望有個好前輩!!
希望能學好C++到時候學到JAVA更能輕而一舉^^
2007-10-09 14:21:52 · update #3
◎這裡有個觀念,程式碼 "內部" 的變數 ( 例如您例子內的 a, b, c ) 是無法經由 "外來輸入" 來取用的。
意即,您的 "外" 來輸入鍵入 a, b, c 是碰觸不到程式碼 "內" 變數 a, b, c 的。
就好像您外在輸入 "main" 這個字,再怎麼樣也碰不到程式碼的 main( )。
===========================
◎改寫:
13.printf("你選擇的是%c圖形:\n",h);
14.printf("請輸入 %c 圖形之兩數值 \n",h);
15.scanf ("%f,%f",&x1,&x2);
if( h == 'a' )
printf("計算結果%f \n", x1*x2*0.5);
else if( h == 'b')
printf("計算結果%f \n", x1*x2*3.14);
else if( h == 'c')
printf("計算結果%f \n", x1*x2 );
===========================
◎如果堅持非使用變數 a, b, c 不可:
13.printf("你選擇的是%c圖形:\n",h);
14.printf("請輸入 %c 圖形之兩數值 \n",h);
15.scanf ("%f,%f",&x1,&x2);
16.a = x1*x2*0.5 ;
17.b = x1*x2*3.14 ;
18.c = x1*x2 ;
if( h == 'a' ) //這是字元 'a'
printf("計算結果%f \n", a); //這是變數 float a
else if( h == 'b') //這是字元 'b'
printf("計算結果%f \n", b); //這是變數 float b
else if( h == 'c') //這是字元 'c'
printf("計算結果%f \n", c); //這是變數 float c
===========================
◎如果堅持非使用變數 g 不可:
13.printf("你選擇的是%c圖形:\n",h);
14.printf("請輸入 %c 圖形之兩數值 \n",h);
15.scanf ("%f,%f",&x1,&x2);
16.a = x1*x2*0.5 ;
17.b = x1*x2*3.14 ;
18.c = x1*x2 ;
if( h == 'a' )
g = a; //這是變數 float a
else if( h == 'b')
g = b; //這是變數 float b
else if( h == 'c')
g = c; //這是變數 float c
{ printf("計算結果%f \n", g); } //這一行給上面三個 if...else 共用
===========================
◎switch...case 的改法:
13.printf("你選擇的是%c圖形:\n",h);
14.printf("請輸入 %c 圖形之兩數值 \n",h);
15.scanf ("%f,%f",&x1,&x2);
16.a = x1*x2*0.5 ;
17.b = x1*x2*3.14 ;
18.c = x1*x2 ;
switch( h )
{
case 'a':
g = a;
break;
case 'b':
g = b;
break;
case 'c':
g = c;
break;
}
printf("計算結果%f \n", g); //這一行無論 g 為何,都會執行。
===========================
◎簡化 switch...case 的改法:
13.printf("你選擇的是%c圖形:\n",h);
14.printf("請輸入 %c 圖形之兩數值 \n",h);
15.scanf ("%f,%f",&x1,&x2);
switch( h )
{
case 'a':
g = x1*x2*0.5;
break;
case 'b':
g = x1*x2*3.14 ;
break;
case 'c':
g = x1*x2;
break;
}
printf("計算結果%f \n", g);
2007-10-09 18:09:49 補充:
強調:
"外" 來輸入鍵入 a, b, c 是碰觸不到程式碼 "內" 變數 a, b, c 的。
經由 if(h == 'a') 判斷 "外" 來輸入,再經由 g = a 去取用 "內" 變數 a, b, c。
2007-10-10 07:51:22 補充:
Hi...
我對 C / C++ 也幾乎等同初學階段。
或許是在除錯方面也卡了一陣子,所以依照經驗巧合幫上了一點小忙。
您太看重我了,呵呵,謝謝。
要學高深的程式設計,當然找版上高等知識家會比較好。
當然很高興能一起學習程式設計 ^ ^,我的即時通:soaring_liou@yahoo.com.tw
2007-10-09 14:02:01 · answer #1 · answered by ? 5 · 0⤊ 0⤋
#include
#include
#include
#define pi acos(-1)
int main(int argc, char* argv[]){
//=====START=====//
int opt;
double area[3];
printf("Input option...\n(1.Triangle/2.Circle/3.Rectangle): "),scanf("%d",&opt);
switch(opt){
case 1:
printf("Triangle...\nInput Length: "),scanf("%lf",(area+0));
printf("Input Height: "),scanf("%lf",(area+1));
area[2]=area[0]*area[1]/2;
break;
case 2:
printf("Circle...\nPI=%lf\nInput Radius: ",pi),scanf("%lf",(area+0));
area[2]=pow(area[0],2)*pi;
break;
case 3:
printf("Rectangle...\nInput Length: "),scanf("%lf",(area+0));
printf("Input Width: "),scanf("%lf",(area+1));
area[2]=area[0]*area[1];
break;
default:
break;
}
printf("Area is %lf\n",area[2]);
//=====END=====//
system("PAUSE");
return 0;
}
2007-10-09 16:20:43 補充:
有個地方我忘了,你最好把
double area[3];
改成
double area[3] = 0;
2007-10-09 16:21:57 補充:
我又忘了…最好再改成
double area[3] = { 0 };
要加大括號
2007-10-09 12:19:02 · answer #2 · answered by Big_John-tw 7 · 0⤊ 0⤋