c语言课后习题不会做?手把手教你解题思路

admin C语言 5


是不是对着 C 语言课后习题发呆,不知道从哪下手?搜了 “c 语言课后习题怎么做”“c 语言解题技巧”,出来的答案要么太复杂,要么不接地气?其实啊,做习题就像拆快递,得一步一步来,着急没用。兔子哥今天就拿几道典型题当例子,手把手教你怎么想、怎么写,保证你看完就有思路。
先看一道基础题:“从键盘输入两个整数,输出它们的乘积”。刚看到这题,你可能会想,这还不简单?但真要写代码,又不知道从哪开始。别急,咱们分步骤来:
第一步,确定需要什么变量。题目里说两个整数,那肯定得定义两个 int 类型的变量,比如 a 和 b。乘积嘛,可能还需要一个变量存结果,就叫 result 吧。
第二步,怎么获取输入。C 语言里输入用 scanf,记得变量前面加 &,所以应该是 scanf ("% d% d", &a, &b);。
第三步,计算乘积。result = a * b; 这步简单。
第四步,输出结果。用 printf,格式是 printf ("% d", result);。
把这些串起来,代码就出来了。你看,是不是没那么难?很多时候,你觉得难是因为没把问题拆解开。
再来看道循环题:“输出 1 到 100 之间所有能被 3 整除的数”。这题咋想呢?
首先,得让数字从 1 跑到 100,这肯定要用循环,for 循环就很合适,i 从 1 开始,到 i <= 100 结束。
然后,判断每个数能不能被 3 整除。用什么判断?if 语句啊,条件是 i % 3 == 0,% 是取余数的意思,余数为 0 就是能被整除。
最后,满足条件的就输出,printf ("% d", i); 加个空格好看点。
所以代码大概是这样:
for (i=1; i<=100; i++)
{
if (i%3 == 0)
{
printf ("% d", i);
}
}
是不是很清晰?你可能会问,为什么用 for 循环不用 while?其实都可以,只是 for 循环在这里更简洁,把初始化、条件、更新写在一行里,不容易忘。
再试试数组题:“定义一个包含 5 个元素的数组,输入元素后,输出它们的平均值”。
第一步,定义数组。int arr [5]; 注意下标是 0 到 4 哦。
第二步,输入元素。用循环输入最方便,for (i=0; i<5; i++) { scanf ("% d", &arr [i]); }。
第三步,计算总和。还得用循环,sum = sum + arr [i]; 记得 sum 要初始化为 0。
第四步,算平均值。average = sum / 5.0; 这里用 5.0 是为了得到小数结果,不然整数除法会丢小数。
第五步,输出平均值。printf ("%.2f", average); 保留两位小数好看。
步骤关键操作容易出错的地方
定义数组int arr[5];写成 arr [5] = {1,2,3,4,5}; 下标越界
输入元素&arr[i]漏写 &,或者循环条件写成 i<=5
计算总和sum 初始化为 0忘了初始化 sum,导致结果不对
计算平均值用 5.0 而不是 5用 5 会得到整数,丢失精度

有人可能会说,题目太长看不懂怎么办?教你个法子,把题目里的要求一条条划出来,比如 “输入”“5 个元素”“平均值”,每一条对应一个步骤,就像做填空题一样,一条条去满足。
还有同学问,思路有了但代码写不出来咋整?那就先写伪代码,用中文把步骤写下来,再翻译成 C 语言。比如上面那道数组题,伪代码可以是:
  1. 建一个能装 5 个数的盒子
  2. 往盒子里放 5 个数
  3. 把这 5 个数加起来
  4. 除以 5 得到平均数
  5. 把平均数告诉用户

这样一步步翻译,是不是就简单多了?
兔子哥当年做习题,也经常卡壳。后来发现,只要不慌,把问题拆成小步骤,每个步骤用学过的知识点去解决,慢慢就顺了。别想着一下子写出完美的代码,先写出能运行的,再慢慢改。刚开始慢没关系,练多了自然就快了。你要是哪道题实在想不通,把题目发给我,咱们一起琢磨琢磨。

标签: 手把手 基础题

发布评论 0条评论)

  • Refresh code

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