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.编译错误
这种错误一般是程序中有语法错误,比如少了分号
之类。