> 文档中心 > 【小杨带你刷好题】C语言篇~day1

【小杨带你刷好题】C语言篇~day1

在这里插入图片描述

文章目录

每篇前言

1.导语
2.习题列表

      1.生成不重复的三位数
      2.小球自由下落

3.结语

每篇前言

博客主页:小杨爱编程☆

作者简介:2022年博客萌新

作者专栏:小杨带刷好题【C语言】

我的座右铭:🌹有志者立长志,无志者常立志🌹

作者请求:由于博主水平有限,难免会有错误和不准之处,我也非常渴望知道这些错误,恳请各位小伙伴能够在留言区批评斧正。在这里插入图片描述


导语

   本篇博客主要向各位小伙伴们讲解C语言的经典例题,带领各位小伙伴们一起刷C语言,希望各位小伙伴们能够在这里收获多多!让我们一起努力!一起进步!希望大家能够通过阅读这篇博客,受益良多!


习题列表

1.生成不重复的三位数

习题描述:

现有1,2,3,4这四个数字,小杨想从这四个数中选择几个数构成三位数,请问能组成多少个互不相同且无重复数字的三位数?且分别是什么?

习题分析:

本题的本质是排列组合问题,抽象的描述就是一共有3个空位,而有4个数,要将这4个数填入到空位中,且每个数在一次组合的过程中只能使用一次,求能组合成多少种不同的数。

  • 类似于这种问题可以直接使用for循环嵌套,本题是组合成三位数,则需要三层for循环嵌套,由于每个位置可选择的数字有4个(即1,2,3,4),所以每层循环的始末分别为1和4

  • 使用嵌套循环,由于每次循环都会有变量改变,所以组合成的数字必定是不相同的,但是组合成的数中可能有重复的数字,所以必须要加上一个if判断语句来筛选掉不符合题目要求的三位数

习题代码如下:

#includeint main(){//定义变量int i = 0;    //百位int j = 0;    //十位int k = 0;    //个位int count = 0;//符合条件的三位数个数//以下为三层for循环嵌套for (i = 1; i <= 4; i++){for (j = 1; j <= 4; j++){for (k = 1; k <= 4; k++){//if判断筛选满足条件的三位数if (i != j && i != k && j != k){printf("%d%d%d  ", i, j, k);count++;}}}}printf("\n");printf("%d", count);return 0;}

代码输出结果:

在这里插入图片描述
在这里,小伙伴们可能会觉得这个输出结果太长了,既不美观又比较难数个数,想问一下能不能将这些三位数分成多行来进行输出,这样既美观又清晰?

为了满足各位小伙伴们的请求,下面我对这个代码进行一下优化,代码如下:

#includeint main(){//定义变量int i = 0;    //百位int j = 0;    //十位int k = 0;    //个位int count = 0;//符合条件的三位数个数//以下为三层for循环嵌套for (i = 1; i <= 4; i++){for (j = 1; j <= 4; j++){for (k = 1; k <= 4; k++){//if判断筛选满足条件的三位数if (i != j && i != k && j != k){printf("%d%d%d  ", i, j, k);count++;//将输出的格式进行优化操作:每行输出5个数if (count % 5 == 0){printf("\n");}}}}}printf("\n");printf("%d", count);return 0;}

优化后的程序代码输出如下:

在这里插入图片描述


由此返回目录

2.小球自由下落

习题描述:

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?

习题分析:

分析:以落下弹起算一次,s=0,h=100
第一次 :  落下:s=h+s =100  弹起:h=h/2=50 总路程:s=s+h=100+50=150
第二次 : 落下:s=h+s=150   弹起: h=h/2=25 总路程:s=s+h=150+25=175

第十次 :   落下:s=h+s  弹起: h=h/2  总路程: s=s+h

习题代码如下:

#include int main() {float H = 100; //第1次下跌的距离float h = 100 / 2;   //第1次反弹的距离//从第二次落地开始,需要加上反弹的高度;for (int i = 2; i <= 10; i++) {H = H + h * 2;//考虑向上反弹的距离h = h / 2;  //表示反弹距离}printf("第10次落地时经过了%f米\n", H);printf("第10次反弹了%f米\n", h);return 0;}

代码输出结果:
在这里插入图片描述


由此返回目录

结语

各位小伙伴们,今天的试题讲解就先到了这里!

小伙伴们,切记!这些示例代码一定要记得自己实际操作一下,这样才能加深对这些知识的理解!

最后,感谢每一位小伙伴的阅读,让我们一起努力,一起加油,一起进步!
在这里插入图片描述