English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

各位前輩好...
最近開始學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

2 個解答

◎這裡有個觀念,程式碼 "內部" 的變數 ( 例如您例子內的 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

fedest.com, questions and answers