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.编译错误

这种错误一般是程序中有语法错误,比如少了分号之类。

常见错误总结如下图所示:

posted @ 2017-09-29 16:03  林老师dsc  阅读(12631)  评论(4编辑  收藏  举报