• 3

關於c++問題

各位01的高手 因為在下實在不懂c++
今天姪子(專科一年級)期未考回來 因為考的很差 所以老師給了補救的機會
因為在下是有自修過vb的語言(自學 所以算是新手階級) 但c++完全沒踫過 所以完全無法也看不懂
所以只好厚顏上來請教線上的高手 這個問題請問如何解??可以大約說明一下 讓我可以跟姪子解示如何解??
謝謝

老師給的題目是
----------------------------------------------------------------------------------------------------
#include<iostream.h>
void a(int,int);//area
int a1(int,int,int);//volume
void b(int,int,int,int*,int*)//area and volume
void main(void)
{ clrscr();
int l,w,h,area;
cout>>"input long,width,hifh";cin>>l>>w>>h;
area=a(l,w);
voi=al(area,h);
cout<<"area="<<area<<volume"<<vol<<endl=";
cout>>"input long,width,high=";cin>>l>>w>>h;
cout<<"area="<<area<<"volume="<<vol<<endl;}
int a(fl,fw);
{int a; a=fl*fw;returu(a);
int al,fa,fh;
{ return(fa*fl);}
void b(int fl,int,fw,int fh,int pa,int pv);
{pa=fl*fv=fl*fw*fv);}
----------------------------------------------------------------------------------------------------
老師要的答案是
1.錯誤更正

2.螢幕結果

(a);---->這個變成圖了 加入空格本是 ( a ) ;

2008-06-29 20:03 發佈
文章關鍵字 問題 C++
<!-- code formatted by http://manoli.net/csharpformat/ -->

#include<iostream.h>//沒有iostream.h這個標頭檔
//只有叫做iostream這個
//using namespace std;
//不想在cin, cout前面都要寫std::的話要補上面一行
void a(int,int);
int a1(int,int,int);
void b(int,int,int,int*,int*)//少了分號

void main(void){ //main要是int才對
clrscr();//沒有宣告這個函式
int l,w,h,area;
cout>>"input long,width,hifh"; //輸出流的鍵號是向左
cin>>l>>w>>h;
area=a(l,w); //a這個func的type上面是宣告void不傳回值
voi=al(area,h); //阿你參數怎麼少一個??
cout<<"area="<<area<<volume"<<vol<<endl=";//volume這個變數宣告在那?
//還有endl這個操縱器不應該放在雙引號裡面
cout>>"input long,width,high=";//一樣是鍵號方向問題
cin>>l>>w>>h;
cout<<"area="<<area<<"volume="<<vol<<endl; //vol也沒宣告
//若是宣告int main,就要return一個值回去
}

int a(fl,fw);{//多打分號
//還有你fl跟fw的形態呢?
int a; //你a這個名字已經給func用了
a=fl*fw;
return( a ); //是return,不是returu
int al,fa,fh;
{return(fa*fl);//多一個左大括號
//照理說return後的東西概念上不應該有括號
//但用了還是給過
}

void b(int fl,int,fw,int fh,int pa,int pv); //多打分號
//且宣告變數時,型態跟變數名稱中間不應該有逗號
{
//pa=fl*fv=fl*fw*fv);
//fl*fv運算式不應該是左值
//分號前面也多了小括號
}



連running script都要別人給......




===============
經barst兄指正,func name是可以跟variable一樣

剛剛拿VS試寫,確實也是如此
奇蹟的公式等於萬千的努力加上絕不放棄
謝謝 stayasone 大大詳細的講解
C++ 格式真的有夠嚴謹

沒錯看來我姪子真的是被當定了 一.一|||

我還在消化 stayasone 的講解

stayasone wrote:
#include<iostream.h>//沒有iostream.h這個標頭檔

//只有叫做iostream這個

早期某些舊型compiler的確是用
#include<iostream.h>
來呼叫iostream喔
所以他並沒有錯

void main(void){ //main要是int才對

ANSI C才規定一定要用int main
非ANSI的話誰管你阿XD

clrscr();//沒有宣告這個函式

好像Borland牌的compiler有這東西


其他應該沒啥東西啦...
找個ANSI C compiler跑一次應該會出現不少error訊息
然後去debug就是了
keima.sawamura wrote:
早期某些舊型compiler的確是用
#include<iostream.h>
來呼叫iostream喔
所以他並沒有錯


原來如此,看來您應該是前輩了!
我丟g++跟visual studio都是沒有.h,所以一直不知道早期有.h

至於int main......
確實我學的書有說那是ANSI標準,我也沒試過拿void去compile會怎樣
奇蹟的公式等於萬千的努力加上絕不放棄

return( a ); //是return,不是returu

int al,fa,fh;

{return(fa*fl);//多一個左大括號


昨天我只有幫你de語法上的bug,收到樓主的來信之後

確定樓主是個好人,所以我想提一下這個東西

雖然引言裡的東西依照註解改過後,就沒有語法的問題,但邏輯上有些怪怪的

執行完return a的時候,這個副函式應該就結束了

也就是說下面的int al...;跟return ( fa*fl );是不會被執行到的
奇蹟的公式等於萬千的努力加上絕不放棄
哇!寫這麼糟糕的程式,真是該打屁股
前半段回的差不多了
//
int a(fl,fw);
{int a; a=fl*fw;returu(a);
int al,fa,fh;
{ return(fa*fl);}
void b(int fl,int,fw,int fh,int pa,int pv);
{pa=fl*fv=fl*fw*fv);}

應該改成
int a(int fl,int fw) //變數型別
{
int a; //名字跟function可以一樣
a=fl*fw;
return ( a );
//以上三行可以直接改成 return fl*fw;
}

int a1(int fa,int fh) //這邊是另一個函示內容 錯字
{
return(fa*fl);
}

void b(int fl,int,fw,int fh,int *pa,int *pv)
{
*pv=fh* *pa=fl*fw; //指標 加使用指定運算子規則
}

另外
cout<<"area="<<area<<volume"<<vol<<endl=";
這一行應該修正為
cout<<"area="<<area<<" volume="<<voi<<endl ; //引號位置不對 變數名稱錯誤
糟糕的點除了程式BUG一堆,還有是這個程式還有 變數名稱過短,無法表達程式含意,以及未縮排
這老師出這題還蠻狠的,要真的程式寫成這樣,早就被FIRE了



謝謝大家專業的指導

並不是老師出手太狠 但還是覺的老師用心良苦 因為其實那些錯課堂上都有說 (書和姪子的筆記中都有)

這是因為不得己才要求老師補考

平常自己不用功讀 考試當然考不好

待會等姪子放學 再問他成積吧

看來要準備重修了

請問一下 各位前輩 (可能有點難) 枋間有那種超級基礎的c++ 的書嗎??很入門的

因為姪子的課本和筆記說實在的我也看不是很懂 但蠻有興趣研究的

可以請前輩們指點一二嗎?? 謝謝
我自己挑書都是找某一個觀念,然後看那一本書介紹的比較詳細,然後就選哪一本

我自己有買『博碩』出的『深度解析C++』,用過其他本書來說,我個人是比較喜歡博碩出版的東西
奇蹟的公式等於萬千的努力加上絕不放棄
  • 3
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?