c语言教程常见错误解析边学边练快速入门

admin C语言 5


学 C 语言的新手,是不是总遇到这种情况?代码敲完一运行,满屏红色错误提示,看得头都大了;好不容易改完能运行了,结果跟预期完全不一样。其实啊,这些错误大多是新手都会踩的坑,今天兔子哥就把这些常见错误一个个拆开来讲,每个都带例子,教你怎么改,再给个小练习,边学边练,入门能快不少,一起往下看吧!


最容易犯的错,估计就是忘了写分号。你看这个代码:
c运行
#include int main(){printf("我忘了写分号")  // 这里少了分号return 0;}

编译的时候会提示 “语法错误”,光标可能还会指在 return 那一行,新手很容易以为是 return 错了。其实就是 printf 后面少了个分号。C 语言里,每个语句结束都得加分号,就像说话要加句号一样。
有同学说,有时候加了分号还是错。那你看看是不是把分号写成中文的了?中文分号 “;” 和英文分号 “;” 看着像,电脑可分不清,这个坑我当初也踩过好几次。
改完的正确代码是这样:
c运行
#include int main(){printf("我加上分号了;\n");  // 英文分号安排上return 0;}

练习一下:写一个打印自己名字的程序,故意忘了加分号,看看报错信息,再加上分号运行,记住这种感觉。


用 scanf 的时候忘了加 &,这也是新手高频错误。比如想输入一个数字:
c运行
#include int main(){int num;printf("请输入一个数:");scanf("%d", num);  // 这里少了&printf("你输入的是:%d\n", num);return 0;}

运行可能会崩溃,或者出来一个莫名其妙的数。为啥呢?scanf 需要知道把输入的数存到哪里,# 就是告诉它存到 num 这个变量的地址里,没 & 它就找不到地方了。
改成这样就对了:
c运行
scanf("%d", &num);  // 加上&

有朋友问,那 printf 里的 num 为啥不加 &?因为 printf 只需要知道 num 里存的啥,不用知道它存在哪,这俩函数用法不一样,记混了很正常,多练几次就分清了。
练习:写个程序输入两个数,计算乘积,故意漏一个 &,看看结果啥样,再加上对比。


数组下标从 0 开始,这个规则好多人记不住。比如定义了一个 5 个元素的数组,想打印第 5 个元素:
c运行
#include int main(){int arr[5] = {1,2,3,4,5};printf("第5个元素是:%d\n", arr[5]);  // 下标错了return 0;}

运行可能会输出一个奇怪的数,这是因为数组下标最大是 4(0 到 4 刚好 5 个元素),arr [5] 已经超出范围了,电脑就随便读个附近的数给你。
正确的应该是 arr [4]:
c运行
printf("第5个元素是:%d\n", arr[4]);  // 下标从0开始

有同学说,每次算下标都得减 1,好麻烦。其实写多了就习惯了,比如 for 循环遍历数组,用 i 从 0 到 4,刚好对应 5 个元素,慢慢就顺了。
练习:定义一个包含 3 个名字的数组,用循环打印出来,体会下标从 0 开始的用法。


循环条件写错导致死循环,这错误能让新手急得直拍桌子。比如想打印 1 到 5:
c运行
#include int main(){int i = 1;while (i <= 5){printf("%d ", i);// 忘了写i++}return 0;}

运行起来就停不下来,屏幕上一直刷 1,只能强行关掉程序。因为 i 一直是 1,永远满足 i <=5 的条件,循环就停不了。
加上 i++ 让 i 不断增加:
c运行
while (i <= 5){printf("%d ", i);i++;  // 每次循环i加1}

这样打印到 5 就会停下来。有次我帮同学调代码,找了半天没发现问题,最后才看到他把 i++ 写成 i-- 了,结果 i 越来越小,也是死循环,这种小错误真得仔细看。
练习:写个循环打印 10 到 1,故意把条件写错,看看是不是死循环,再改对它。


兔子哥觉得,学 C 语言别怕犯错,这些错误都是必经之路。关键是每次错了别只改个符号就完了,得想想为啥错,记住这种错误的样子。下次再遇到类似报错,就知道往哪个方向找问题了。
边学边练的时候,最好把每次犯的错记在小本子上,比如 “2024.5.1 忘了给 scanf 加 &”,过段时间翻一翻,会发现错来错去就是那几种,记住了就能少走很多弯路。入门快的人,不是不犯错,而是能从错误里学东西,希望你也能这样,慢慢就熟练了!

标签: 莫名其妙 有时候

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~