是不是觉得 C 语言课后习题太多,不知道该做哪道?好不容易挑了几道,又卡在步骤里出不来?其实啊,做题不在多,在于精。兔子哥从各种教材里挑了 300 道最有代表性的题,从基础到进阶都有,每道题都带详细步骤,保证你做完一道会一类。咱们今天就先拿几道典型题说说,一起看看怎么一步步解开它们。
基础篇:变量与输入输出
这部分精选了 50 道题,全是练基本功的。比如 “输入一个整数,输出它的平方”,步骤其实很简单:
- 先想清楚需要什么变量。一个存输入的整数,比如 int a; 还可以用一个变量存平方结果,int square; 当然啦,也可以不存,直接输出 a*a。
- 怎么获取输入?用 scanf ("% d", &a); 这里千万别忘了加 &,很多新手第一次做都会漏掉。
- 计算平方。square = a * a; 或者直接在 printf 里写 a*a。
- 输出结果。printf ("平方是:% d", square);
你看,分这四步,是不是就清晰多了?这部分的题主要练语法,比如 printf 的格式符怎么用,int 和 float 怎么区分,把这些练熟了,后面学难的才不费劲。
进阶篇:循环与判断
这部分有 100 道题,全是考试常考的题型。就说 “判断一个数是不是完数(因子之和等于自身)”,比如 6 的因子是 1、2、3,加起来正好是 6。步骤是这样的:
- 定义变量。int n, i, sum = 0; n 是要判断的数,sum 存因子之和,记得初始化 sum 为 0。
- 输入 n 的值。scanf ("% d", &n);
- 找因子。用 for 循环从 1 跑到 n-1,i 每次加 1,如果 n% i == 0,就说明 i 是因子,sum += i;
- 判断是否等于自身。if (sum == n) 就输出是完数,不然就不是。
代码大概是这样:
int n, i, sum = 0;
scanf ("% d", &n);
for (i=1; i < n; i++)
{
if (n % i == 0)
{
sum = sum + i;
}
}
if (sum == n)
{
printf ("是完数");
}
else
{
printf ("不是完数");
}
很多人做这道题会把循环条件写成 i <= n/2,其实也对,因为一个数的因子最大不会超过它的一半,这样能省点时间。但新手还是先按 i < n 来写,不容易错。
综合篇:数组与函数
这部分有 150 道题,难度大一点,但学会了特别涨本事。比如 “用函数求数组的最大值”,步骤分两部分:
函数部分:
- 定义函数,返回值是 int,参数是数组和数组长度,int find_max (int arr [], int len)
- 定义一个变量存最大值,int max = arr [0];
- 循环遍历数组,if (arr [i] > max) 就把 arr [i] 赋给 max;
- 返回 max。
主函数部分:
- 定义数组,比如 int scores [5] = {85, 92, 78, 90, 88};
- 调用函数,int max_score = find_max (scores, 5);
- 输出结果。
这道题的关键是数组作为函数参数时,要同时传长度,不然函数不知道数组有多少个元素。很多新手会忘传长度,结果算错。
| 题型分类 | 题量 | 核心考点 | 适合阶段 |
|---|---|---|---|
| 基础语法 | 50 | 变量、输入输出、运算符 | 入门 1-2 周 |
| 循环判断 | 100 | for/while、if-else 嵌套 | 学习 1 个月后 |
| 数组函数 | 150 | 数组操作、函数调用、指针 | 学习 2 个月后 |
有人可能会问,这 300 道题得做多久啊?兔子哥觉得不用急,每天做 3-5 道,一个多月就能做完。关键是每道题都要亲手敲代码,别光看答案。遇到卡壳的地方,先自己想 10 分钟,想不通就看步骤解析,看懂了再合上书自己写一遍。
还有同学说,做过的题过几天就忘咋办?很简单,做错的题标个记号,周末回头再做一遍。比如循环题里的冒泡排序,第一次做十有八九会错,第二次就好多了,第三次基本就忘不了了。
这些题都是兔子哥当年学 C 语言时反复做过的,知道哪些地方容易掉坑,所以步骤里都标得清清楚楚。你要是能把这 300 道题吃透,不管是期末考试还是平时作业,肯定都没问题。刚开始慢一点没关系,坚持下去,你会发现自己越来越顺。有啥不懂的,随时来找兔子哥聊。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
评论列表
C语言精题详解,提升编程能力。