軟考程式設計師輔導:程式設計師C語言新人常見問題
不知不覺,學習C語言也快一年了。雖然有C語言課,但是老師完全讓我們自己看書,在自學的過程中,和周圍同學交流中,以及後來在CSDN,BCCN,百度知道看帖回帖中,也看到許多C語言新人常遇到的問題與常犯的錯誤。為了讓新人們少走彎路少碰壁,我便打算寫下此文。當然,由於我自己的'水平也有限,其中可能自己也不知不覺犯了錯誤,望高手們果斷斧正。
1、程式畫面一閃而過
#include
int main(void)
{
int iSignal; /*定義變量表示訊號燈的狀態*/
printf(“the Red Light is 0,the Green Light is 1n”); /*輸出提示資訊*/
scanf(“%d”,&iSignal); /*輸入iSignal變數*/
if(iSignal==1) /*使用if語句進行判斷*/
{
printf(“the Light is green,cars can runn”); /*判斷結果為真時輸出*/
}
if(iSignal==0) /*使用if語句進行判斷*/
{
printf(“the Light is red,cars can’t runn”); /*判斷結果為真時輸出*/
}
return 0;
}
解析:在XP以上的系統用win-tc,dev-cpp等IDE編譯執行此程式時,無論輸入什麼數字,結果都是一閃而過,因為程式執行完語句後就直接退出了。
解決方案:這裡有幾個辦法(1)
在程式開頭加上#include
然後在程式末尾加上system(“pause”);
此方法僅適用於MS-DOS,windows,不適用於*nix等系統(2)
在需要暫停的地方加入一個或兩個getchar();
這種方法,實質上並不是暫停程式,而是讓程式等待使用者輸入若干個回車。但是效果和暫停是相同的。(3)
在程式開頭加上#include
在需要暫停的地方加入一個getch();,原理和上一種差不多。在win-tc裡用得比較多。
2、if,for,while的判斷後直接跟;
例如:
#include
int main(void)
{
int a;
scanf(“%d”,&a);
if (a == 123);////錯誤,if(a == 123)後面不應加上;,而應該緊跟著
////{ printf();}程式碼
{
printf(“ccc”);
}
else
{
printf(“ddd”);
}
getchar();
return 0;
}
#include
int main(void)
{
int n,i;
printf(“please input a number>2:”);
scanf(“%d”,&n);
for(i=2;i {
if(n%i==0)
break;
}
if(i printf(“%d not a sushun”,n);
else
printf(“%d is a sushun”,n);
return 0;
}
解析&解決方案:見註釋
3、漏標頭檔案,main函式格式不規範。
例如:
main()
{
int a;
scanf(“%d”,&a);
printf(“input %d”, a);
}
解析:這段程式沒有帶上標頭檔案stdio.h。即漏寫了#include 。如果僅有scanf,printf函式的話,stdio.h是可以省略並可以正確執行的,但是這是非常不好的習慣。而main()這種寫法,C89標準勉強充許這種形式,C99標準是不允許的。而void main(),至今仍未有任何標準考慮接受它。但是有些編譯器的確允許。當然,這種寫法廣為流行,應該和老譚的書關係非常大。
解決方案:用到的標頭檔案應該用include包含進去。main()函式應該寫成int main(void)這種形式,在main()函式尾部加上return 0;即
#include
int main(void)
{
int a;
scanf(“%d”,&a);
printf(“input %d”, a);
return 0;
}
相關推薦:
化學學習口訣
十點讓你輕鬆學好高中外語
報關員考試輔導:配合查驗
報關員考試報關單填制:用途/生產廠家
企業培訓考試真題
1、程式畫面一閃而過
#include
int main(void)
{
int iSignal; /*定義變量表示訊號燈的狀態*/
printf(“the Red Light is 0,the Green Light is 1n”); /*輸出提示資訊*/
scanf(“%d”,&iSignal); /*輸入iSignal變數*/
if(iSignal==1) /*使用if語句進行判斷*/
{
printf(“the Light is green,cars can runn”); /*判斷結果為真時輸出*/
}
if(iSignal==0) /*使用if語句進行判斷*/
{
printf(“the Light is red,cars can’t runn”); /*判斷結果為真時輸出*/
}
return 0;
}
解析:在XP以上的系統用win-tc,dev-cpp等IDE編譯執行此程式時,無論輸入什麼數字,結果都是一閃而過,因為程式執行完語句後就直接退出了。
解決方案:這裡有幾個辦法(1)
在程式開頭加上#include
然後在程式末尾加上system(“pause”);
此方法僅適用於MS-DOS,windows,不適用於*nix等系統(2)
在需要暫停的地方加入一個或兩個getchar();
這種方法,實質上並不是暫停程式,而是讓程式等待使用者輸入若干個回車。但是效果和暫停是相同的。(3)
在程式開頭加上#include
在需要暫停的地方加入一個getch();,原理和上一種差不多。在win-tc裡用得比較多。
2、if,for,while的判斷後直接跟;
例如:
#include
int main(void)
{
int a;
scanf(“%d”,&a);
if (a == 123);////錯誤,if(a == 123)後面不應加上;,而應該緊跟著
////{ printf();}程式碼
{
printf(“ccc”);
}
else
{
printf(“ddd”);
}
getchar();
return 0;
}
#include
int main(void)
{
int n,i;
printf(“please input a number>2:”);
scanf(“%d”,&n);
for(i=2;i {
if(n%i==0)
break;
}
if(i printf(“%d not a sushun”,n);
else
printf(“%d is a sushun”,n);
return 0;
}
解析&解決方案:見註釋
3、漏標頭檔案,main函式格式不規範。
例如:
main()
{
int a;
scanf(“%d”,&a);
printf(“input %d”, a);
}
解析:這段程式沒有帶上標頭檔案stdio.h。即漏寫了#include 。如果僅有scanf,printf函式的話,stdio.h是可以省略並可以正確執行的,但是這是非常不好的習慣。而main()這種寫法,C89標準勉強充許這種形式,C99標準是不允許的。而void main(),至今仍未有任何標準考慮接受它。但是有些編譯器的確允許。當然,這種寫法廣為流行,應該和老譚的書關係非常大。
解決方案:用到的標頭檔案應該用include包含進去。main()函式應該寫成int main(void)這種形式,在main()函式尾部加上return 0;即
#include
int main(void)
{
int a;
scanf(“%d”,&a);
printf(“input %d”, a);
return 0;
}
相關推薦:
化學學習口訣
十點讓你輕鬆學好高中外語
報關員考試輔導:配合查驗
報關員考試報關單填制:用途/生產廠家
企業培訓考試真題