C语言新手小白必看(上) -- PTA常见错误与解决方法

新手小白在做PTA上的题目时,提交以后常常出现有下面4种状态

"答案正确"说明你的代码通过了全部的测试点。下面就另外三种错误展开说一下:

(一)部分错误:说明你的代码只通过了一部分测试点。另一部分测试点没有通过。没有通过的原因通常有两种:(1)格式错误,(2)答案错误,如下图所示:

(1)格式错误:说明你没有按照题目给出的输出样例的格式进行输出。最常见的情况就是:输出样例中有空格的地方你的pringf语句中没有,或者输出样例里没空格的地方你在printf语句中多敲了空格。一定要严格按照题目的输出样例的格式,来写你的printf语句中双引号里面那些东西。输出样例中的固定文字,你就copy;输出样例中的变量,你就用对应的格式转换说明符占位,然后再后面的参数中,写上对应的变量就行。例如:

输出样例:cost = 55.00,这个55.00是你算出来的浮点数变量a的值,并且要求保留2位小数。

这时你的printf语句就应该写成 printf("cost = %.2f", a),特别注意,输出样例的等号两边有空格,你的printf语句中也要有。

至于浮点出保留几位小数,用%.n来可控制输出,要保留几位小数,把n换成几就行了。

(2)答案错误:说明你的计算本身错了,这个时候就找自己代码中的逻辑错误了。推荐你可以找一个正确的代码,比较以下别人的代码和你的代码的逻辑有哪些不同。当然这种错误是比较难找的,需要有有点耐心。

(二) 段错误:这种错误通常是和内存有关系的,比如输出时,变量前面没加地址符号,如scanf("%d", N);再有就是数组越界,也可能会出现段错误。

(三)编译错误:这也是新手最常见的错误,其实就是你的语法没写对,编译器编译不了。这种错误,教大家一个办法。看下图:

当出现编译错误时,下面一定会有提示。只要在错误提示中找到error,不用管warning。error前面的数字说明该错误是你的代码的第几行第几个字符出现的,^~~~~直接就给你标记出了错误开始的地方,重点看这个地方。例如图中代码第6行,本意是计算0.54*N的值,但是把*省略了。这种省略在数学上有这种写法,但是在C语言中没有。写成这样编译器不认识,所以就编译错误了。

还有很多的编译错误,比如语句末尾分号没有敲,英文符号敲成中文的了,小括号,花括号少敲另一个等等,都可以很快的通过这个方法找出来。

后面还会有一篇《C语言新手小白必看(下)》,我们会总结更多的新手写C语言源代码是容易出现的错误。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
7-7 简易连连看 (15分) 本题要求实现一个简易连连看游戏模拟程序。 给定一个2N×2N的方阵网格游戏盘面,每个格子中放置一些符号。这些符号一定是成对出现的,同一个符号可能不止一对。程序读入玩家给出的一对位置(x ​1 ​​ ,y ​1 ​​ )、(x ​2 ​​ ,y ​2 ​​ ),判断这两个位置上的符号是否匹配。如果匹配成功,则将两个符号消为“*”并输出消去后的盘面;否则输出“Uh-oh”。若匹配错误达到3次,则输出“Game Over”并结束游戏。或者当全部符号匹配成功,则输出“Congratulations!”,然后结束游戏。 输入格式: 输入在一行中给一个正整数N(<5)。随后2N行,每行2N个大写英文字母(其间以1个空格分隔),表示游戏盘面。盘面之后给出一个正整数K,随后K行,每行按照格式“x ​1 ​​ y ​1 ​​ x ​2 ​​ y ​2 ​​ ”给出一个玩家的输入。注意格子的行、列编号是从1到2N。 输出格式: 根据玩家的每一步输入,输出相应的结果。输出盘面时注意,每行字符间以1个空格分隔,行末不得有多余空格。 输入样例1: 2 I T I T Y T I A T A T Y I K K T 11 1 1 1 3 4 2 4 3 3 1 4 2 2 2 1 2 3 1 2 4 4 4 3 1 2 1 3 4 3 3 1 4 4 1 2 3 2 4 3 2 1 1 2 2 输出样例1: * T * T Y T I A T A T Y I K K T * T * T Y T I A T A T Y I * * T Uh-oh * * * T Y * I A T A T Y I * * T Uh-oh * * * T Y * I A * A T Y I * * * * * * T * * I A * A T * I * * * * * * * * * I A * A * * I * * * * * * * * * * A * A * * * * * * Congratulations! 输入样例2: 2 I T I T Y T I A T A T Y I K K T 5 1 1 4 4 1 1 2 3 1 1 2 3 2 2 4 1 2 2 3 3 输出样例2: Uh-oh * T I T Y T * A T A T Y I K K T Uh-oh Uh-oh Game Over

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值