PTA常見錯誤


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.編譯錯誤

這種錯誤一般是程序中有語法錯誤,比如少了分號之類。

常見錯誤總結如下圖所示:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM