十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
1樓答案完全錯誤,有沒有用過goto?

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、龍里網(wǎng)絡(luò)推廣、微信平臺小程序開發(fā)、龍里網(wǎng)絡(luò)營銷、龍里企業(yè)策劃、龍里品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供龍里建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
建議樓主不要用goto語句,程序員最忌諱看goto程序,程序一復(fù)雜就很煩,這個程序還簡單
先說錯誤原因:
else if (go==' '); //這里多了個分號";"所以一定執(zhí)行g(shù)oto end;
改進(jìn):去掉分號就可以了,像二樓那樣改達(dá)不到程序目的
程序中很多錯誤,分析下:
#include stdio.h
#include conio.h
int zhong(int a, int b){return (a+b);}
int guo(int a, int b){return (a-b);}
int wo(int a, int b){return (a*b);}
int ni(int a, int b){return (a/b);}
int x,y,z,go; //go最好用char類型
main()
{
int zhong(int a, int b);
int guo(int a, int b);
int wo(int a, int b);
int ni(int a, int b);
get:
printf("please input one number!\n");
scanf("%c",go); //輸入時必定包含'字符'和'\r'(回車),這里只讀取字符,'\r'留在流中,下次運(yùn)行時會讀取'\r',建議:用getchar().
if(go=='+')
{
int zhong(int a, int b);
scanf("%d%d",x,y);
z=zhong(x,y);
if ((x||y)!=' ') //錯誤,必定成立,因?yàn)?x||y)的值為1或0,永遠(yuǎn)不等于' '(空格字符)
{
printf ("%d+%d=%d\n",x,y,z);
}
else if ((x||y)==' ') //與上同理
{
printf("end\n");
}
}
else if (go=='-')
{
int guo(int a, int b);
scanf("%d%d",x,y);
z=guo(x,y);
if((x||y)!=' ') //error
{
printf ("%d-%d=%d\n",x,y,z);
}
else if ((x||y)==' ') //error
{
printf("end\n");
}
}
else if (go=='*')
{
int wo(int a, int b);
scanf("%d%d",x,y);
z=wo(x,y);
if((x||y)!=' ') //error
{
printf ("%d*%d=%d\n",x,y,z);
}
else if ((x||y)==' ') //error
{
printf("end\n");}
}
else if (go=='/')
{
int ni(int a, int b);
scanf("%d%d",x,y);
z=ni(x,y);
if ((x||y)!=' ') //error
{
printf ("%d/%d=%d\n",x,y,z);
}
else if ((x||y)==' ') //error
{
printf("end\n");
}
}
else if (go==' '); //錯誤在這里,去掉";"就可以了
{
goto end;
}
goto get;
end:
printf("ByeBye!\n");
getch();
}
還有,除法會遇到圓整問題,要x,y,z使用double類型
goto語句也稱為無條件轉(zhuǎn)移語句,其一般格式如下: goto 語句標(biāo)號; 其中語句標(biāo)號是按標(biāo)識符規(guī)定書寫的符號, 放在某一語句行的前面,標(biāo)號后加冒號(:)。語句標(biāo)號起標(biāo)識語句的作用,與goto 語句配合使用。
如: label: i++;loop: while(x7);goto loop.
C語言不限制程序中使用標(biāo)號的次數(shù),但各標(biāo)號不得重名。goto語句的語義是改變程序流向, 轉(zhuǎn)去執(zhí)行語句標(biāo)號所標(biāo)識的語句。
goto語句通常與條件語句配合使用??捎脕韺?shí)現(xiàn)條件轉(zhuǎn)移, 構(gòu)成循環(huán),跳出循環(huán)體等功能。
go to語句使用原則:
1、使用goto語句只能goto到同一函數(shù)內(nèi),而不能從一個函數(shù)里goto到另外一個函數(shù)里。
2、使用goto語句在同一函數(shù)內(nèi)進(jìn)行g(shù)oto時,goto的起點(diǎn)應(yīng)是函數(shù)內(nèi)一段小功能的結(jié)束處,goto的目的label處應(yīng)是函數(shù)內(nèi)另外一段小功能的開始處。
3、不能從一段復(fù)雜的執(zhí)行狀態(tài)中的位置goto到另外一個位置,比如,從多重嵌套的循環(huán)判斷中跳出去就是不允許的。
4、應(yīng)該避免向兩個方向跳轉(zhuǎn)。這樣最容易導(dǎo)致"面條代碼"。
以上內(nèi)容參考:百度百科—goto語句
goto語句稱為無條件轉(zhuǎn)移語句,通常與條件語句配合使用??捎脕韺?shí)現(xiàn)條件轉(zhuǎn)移,?構(gòu)成循環(huán),跳出循環(huán)體等功能。但是,在結(jié)構(gòu)化程序設(shè)計(jì)中一般不主張使用goto語句,?以免造成程序流程的混亂,使理解和調(diào)試程序都產(chǎn)生困難。而且,goto語句一般可以用其他語句來代替。
當(dāng)然,goto語句也有其優(yōu)勢,例如可以用goto語句一次性跳出多重循環(huán),而不需要使用多個break語句一步一步地跳出,從而使代碼更為簡潔。
在C語言中使用goto語句的注意事項(xiàng)如下:
使用goto語句只能轉(zhuǎn)移到到同一函數(shù)內(nèi),而不能從一個函數(shù)里轉(zhuǎn)移到另外一個函數(shù)里。
使用goto語句在同一函數(shù)內(nèi)進(jìn)行轉(zhuǎn)移時,轉(zhuǎn)移的起點(diǎn)應(yīng)是函數(shù)內(nèi)一段小功能的結(jié)束處,goto的目的label處應(yīng)是函數(shù)內(nèi)另外一段小功能的開始處。
不能從一段復(fù)雜的執(zhí)行狀態(tài)中的位置goto到另外一個位置,比如,從多重嵌套的循環(huán)判斷中跳出去就是不允許的。
應(yīng)該避免向兩個方向跳轉(zhuǎn)。這樣最容易導(dǎo)致“面條代碼”。
所以說,goto語句要小心使用。