1.最常犯的錯誤:格式錯誤。
在PTA程序檢測中,輸入輸出要嚴格按照題目要求。輸出的格式要完全按照題目要求來,該空格地方空格,該換行要換行。否則,就算你運行結果是對的,PTA還是提示你格式錯誤
格式錯誤1:輸出沒有完全按照題目要求輸出。
7-1 計算攝氏溫度
本題要求編寫程序,計算華氏溫度100°F對應的攝氏溫度。計算公式:C=5×(F−32)/9,式中:C表示攝氏溫度,F表示華氏溫度,輸出數據要求為整型。
要求:按照下列格式輸出
fahr = 100, celsius = 計算所得攝氏溫度的整數值
你輸入的代碼如下
#include <stdio.h>
int main()
{
int fahr,celsius;
fahr=100;
celsius=5*(fahr-32)/9;
printf("fahr =100, celsius = %d",celsius);
return 0;
}
代碼並沒有錯誤,但是運行結果卻是格式錯誤
,錯誤在於你的printf語句沒有按照題目的輸出格式來輸出。fahr = 100
這里的100
和=
應該要有一個空格隔開。
避免犯格式錯誤,最好辦法就是把題目的輸出復制到代碼中
格式錯誤2:輸出的頭尾多了空格或者換行符
如果輸出內容有多行時候,通過循環結構實現輸出很容易會多一個換行符。比如
for(i=1;i<=5;i++) printf("hello\n");
上面代碼運行沒任何問題,輸出了5行hello
,但是最后一個hello
還會多了一個\n
,就是會換行。 但是多的這個換行符就會和題目要求輸出不匹配,一般PTA題目輸出多行內容,最后一行都沒有換行符,所以這段代碼提交還是會犯格式錯誤問題。怎么解決呢?
- 1.最后一項單獨判斷
for(i=1;i<=5;i++)
{
if(i==5) printf("hello");
else printf("hello\n");
}
- 2.最后一項不好確定,引入flag
int flag=1;
for(i=1;i<=5;i++)
{
if(flag) {printf("hello");flag=0;}
else printf("\nhello");
}
上述代碼輸出的5行hello
,就可以去掉尾部換行符
。還有尾部多空格符
,一樣處理。你也可以根據題目具體輸出要求修改你的程序。
2.答案錯誤或部分正確
你的程序輸出結果錯誤。每個PTA程序都會設置幾組測試數據,如果你的得分沒有滿分,那就是有些測試數據結果錯誤,導致沒法滿分。說明你的程序考慮不夠完善,有些臨界條件或者功能沒實現,導致部分正確。所以你必須繼續調試程序,找出不完善地方。
3.運行超時
- 未在規定時間運行結束,可能你的程序死循環。
- 循環次數過多,超過時間限制。本該單層循環結束,卻用雙層循環解決,也會這樣問題。
4.段錯誤
-
這個錯誤一般在程序使用
數組
這種結構才會出現錯誤,如果定義數組長度太小,沒有達到題目要求最大值的情況。
比如這個題目:
這里有提到字符串長度不超過10000,這個時候你定義數組就要超過這個值,否則引起段錯誤或答案錯誤。比如你可以定義char str[10010];
-
scanf沒有加
&
-
野指針。指針沒有指向。如
int *p;
printf("%d", *p1);
5.編譯錯誤
這種錯誤一般是程序中有語法錯誤,比如少了分號
之類。