零基础学 C 语言,是不是一做题就发懵?好不容易写出代码,要么编译报错,要么结果不对?搜 “c 语言课后习题常见错误”“新手学 C 语言避坑”,出来的答案又太复杂?其实啊,新手犯错就那么几种,把这些错弄明白了,做题能顺不少。兔子哥今天就拿几道典型题当例子,把常见错误拆开来给你看,保证你看完就知道咋避坑。
就说最基础的 “输入两个整数求和” 这道题,几乎每个新手都栽过跟头。有个同学写的代码是这样的:
int a, b, sum;
scanf ("% d% d", a, b);
sum = a + b;
printf ("和是 % d", sum);
编译的时候一堆错,你知道为啥不?对了,scanf 里的变量前面得加 &,这就像告诉程序 “数据要放到哪个盒子里”,没 & 程序就找不着盒子了。正确的应该是 & a 和 & b。还有人会把 printf 里的 % d 写成 % f,那也不对,整数就得用 % d,小数才用 % f。
再看循环题,“输出 1 到 5 的平方”。有同学这么写:
int i;
for (i=1; i>5; i++)
printf ("% d", i*i);
运行之后啥也没输出,怪不怪?其实是循环条件写反了,i 一开始是 1,i>5 根本不成立,循环一次都不执行。得改成 i<=5 才行。这种错误啊,编译器不提醒,只能自己盯着条件看。
数组题里,“给 5 个元素的数组赋值并输出”,错误就更多了。比如:
int arr [5], i;
for (i=1; i<=5; i++)
{
arr [i] = i;
printf ("% d", arr [i]);
}
看起来没啥问题,但数组下标是从 0 开始的,arr [5] 已经超出范围了,程序可能会崩。正确的应该是 i 从 0 到 4,循环条件 i<5。
| 错误类型 | 错误代码片段 | 错误原因 | 正确写法片段 |
|---|---|---|---|
| scanf 漏写 & | scanf("%d", a); | 没提供变量地址 | scanf("%d", &a); |
| 循环条件错误 | for(i=1; i>5; i++) | 条件永远不成立 | for(i=1; i<=5; i++) |
| 数组下标越界 | int arr[5]; arr[5] = 10; | 下标超出范围 | int arr[5]; arr[4] = 10; |
| 函数参数错误 | int add(int x, y) { ... } | 没声明 y 的类型 | int add(int x, int y) { ... } |
为什么这些错误新手特别容易犯?说白了还是对语法规则不熟悉,又没养成检查的习惯。就像写作文忘了加标点,不是不会,是粗心。
那怎么才能少犯错呢?兔子哥有几个小窍门:
- 写完代码别急着运行,先从头到尾看一遍,重点看变量名、括号、分号这些细节。
- 把常见错误记在小本子上,比如 “scanf 要加 &”“数组下标从 0 开始”,做题前翻一翻。
- 遇到编译错误,别慌,看错误提示里的行数,对着那一行找问题,多半是小错误。
有人可能会说,我总是把分号写成中文的咋办?这个简单,输入法调成全英文模式,写代码的时候别切换,养成习惯就好了。还有人分不清 = 和 ==,其实也容易,赋值用 =,判断相等用 ==,多写几次就能记住。
兔子哥觉得,刚开始学的时候犯错太正常了,谁不是这么过来的呢?关键是别害怕犯错,每错一次就记下来,弄明白为什么错,下次就不会再犯了。这些常见错误就像路上的小石子,看清了绕过去去,后面的路就好走多了。你要是哪哪哪道题总错了?可以跟兔子哥说说,咱们一起找找原因。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~