一起刷C语言菜鸟教程100题(15-26含解析)

五一过的好快,五天假期说没就没,因为一些事情耽搁到现在,不过还是要继续学习的,之后就照常更新,先说一下,这个100题是菜鸟教程里面的,但是有一些题,我加入了自己的理解,甚至对有一些题进行了改编,目的是让大家更顺手一点,链接放在下面,需要的小伙伴可以点进去看看,话不多说,开始刷题。


C 语言经典100例 | 菜鸟教程 (runoob.com)

使用方法:

1.先看题目自己想思路,自己做

2.自己做不出来看解题思路,再次尝试

3.实在不会,看解题思路和代码一起理解


 题目15:   利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示

解题思路:这个题要用到三目操作符,具体表现形式如下:

表达式?如果表达式成立就输出这里: 如果表达式不成立就输出这里

#include<stdio.h>
int main()
{int score;char grade;scanf("%d",&score);grade=(score>=90)?'A':((score>=60)?'B':'C');//这里的意思是先判断score的大小,如果大于等于90就输出A,如果小于九十就进行第二个判断//(注意这里的score已经小于90了)如果大于等于60就输出B//如果比60小就输出Cprintf("%c\n",grade);return 0;
}

题目16:   输入两个正整数m和n,求其最大公约数和最小公倍数 

解题思路:这个题想必大家一定很熟悉,两个正整数其中小的数字先从它本身减一开始找因数,如果那个因数也能被大数整除,那么这个因数就是它们的最大公因数,求出来最大公因数后,公倍数等于   m * n / 最大公因数   就算出来结果了,菜鸟教程给的辗转相除法,耗时小,锻炼思维,大家可以理解理解 

#include <stdio.h>
int main()
{int m = 0, n = 0, i = 0;scanf("%d %d",&m,&n);if (m > n){int t = m;m = n;n = t;}for (i = 2; i < m; i--){if(m % i == 0 && n % i == 0){printf("最大公因数为%d\n",i);break;}}printf("最小公倍数为%d\n",m*n/i);return 0;
} 

题目17 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

解题思路:这个题及其经典,所以直接把菜鸟教程的代码搬过来了,其中while后面的括号里之所以这么写是因为你输入了一段字符最后回车也算,所以是不等于 '\n' ,之后因为c是char类型,所以直接去计数就好。

#include<stdio.h>
int main()
{char c;int letters=0,spaces=0,digits=0,others=0;printf("请输入一些字母:\n");while((c=getchar())!='\n'){if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))letters++;else if(c>='0'&&c<='9')digits++;else if(c==' ')spaces++;elseothers++;}printf("字母=%d,数字=%d,空格=%d,其他=%d\n",letters,digits,spaces,others);return 0;
}

题目18:输入两个数字a,b,求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字,b代表几个数字相加。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 

解题思路:这个题每次循环都让 (a * 10)+ a  ,然后再把每次结果相加就得出答案,要保证每次个位加的都保持最开始的 a 

#include <stdio.h>
int main()
{int a = 0, b = 0,sum1 = 0,t = 0;scanf("%d %d",&a,&b);t = a;for (int i = 1; i <= b; i++){sum1 = sum1 + a;a = a * 10 + t;}printf("%d\n",sum1 );return 0;
}

题目19:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。 

解题思路:仅仅只是找到还是很好写代码的,里面判断能不能被整除,之后能被整除就相加,最后如果等于因子之和就输出,最后别忘了循环过后下轮开始 sum 为 0

#include <stdio.h>
int main()
{int sum = 0;for (int i = 1; i <= 1000; i++){for (int j = 1; j < i; j++){if (i % j == 0){sum = sum + j;}}if (sum == i){printf("%d\n",i);}sum = 0;}return 0;
}

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

解题思路:这道题也很基础,题目怎么说,我们怎么写,这里给大家菜鸟教程的代码

#include<stdio.h>
int main()
{float h,s;h=s=100;h=h/2; //第一次反弹高度for(int i=2;i<=10;i++){s=s+2*h;h=h/2;}printf("第10次落地时,共经过%f米,第10次反弹高%f米\n",s,h);return 0;
}

题目21:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 

解题思路:这个题我们可以用递归来做,递归结束条件为1,每次都减一,这样就能做出来这道题了

#include <stdio.h>
int p(int day)
{if (day == 1)return 1;elsereturn 2*(p(day - 1) + 1);
}
int main()
{int day = 10;int peach = p(day);printf("%d\n",peach);return 0;
}

题目22:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。 

解题思路:这个题我们可以用字符来比较,为了防止队友自己比起来,,防止重复比赛,所以有了第一个和第二个判断语句,第三个判断语句是题目中的那句话,我们就可以做出来了

#include <stdio.h>
int main()
{char i,j,k;for(i = 'x'; i <= 'z'; i++){for(j = 'x'; j <= 'z'; j++){if(i != j){for(k = 'x'; k <= 'z'; k++){if(i != k && j != k) {if(i != 'x' && k != 'x'&& k != 'z') a说他不和x比,c说他不和x,z比{printf("顺序为:a--%c\tb--%c\tc--%c\n",i,j,k);}}}}}}return 0;
}

题目23:输入一个数字,打印出n边菱形,如输入4,输出如下图案

   *********
****************

 解题思路:这类画图题一般都是找规律的题目,我们可以把菱形拆解成上三角和下三角,我们发现上三角形每一行 * 前面的空格都是逐渐递减,而 * 是逐渐递增的,下三角形的空格逐渐递增, * 逐渐递减,就可以完成代码了

#include <stdio.h>
int main()
{int n = 0;scanf("%d",&n);int i = 0, j = 0, k = 0;for(i = 1; i <= n ; i++){for (j = (n - i); j >= 1; j--){printf(" ");}for (k = 1; k <= (2 * i) - 1; k++){printf("*");}printf("\n");}for(i = 1; i <= (n - 1) ; i++){for (j = 1; j <= i; j++){printf(" ");}for (k =(2 * (n - i)) - 1; k >= 1; k--){printf("*");}printf("\n");}return 0;
}

题目24:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和

解题思路:大家熬过上个题,这个题是不是就简单了许多,只需要把分子和分母的规律各自找出来再除一下就行

#include <stdio.h>
int main()
{double m = 0, s = 0, sum = 0;m = 1.0;s = 2.0;for (int i = 1; i <= 20; i++){sum = sum + s / m;double t = s;s = m + s;m = t;}printf("%f",sum);return 0;
}

题目25:求1+2!+3!+...+20!的和

解题思路:这个题不知道为什么我用DEV C++ 5.11显示出来为0.000000,可能版本有问题???这个疑问有没有大佬来解决啊<~.~>

题目26:利用递归方法求5!

解题思路:熟悉递归用法 ,大家可以先尝试一下,和之前单独讲递归函数汉诺塔问题那里提到过,链接给大家放在这里,递归函数进阶版汉诺塔http://t.csdnimg.cn/baGuR

#include <stdio.h>
int f(int i)
{int fact = 0;if (i == 0)return 1;elsefact = i * f(i - 1);return fact;
}
int main()
{int i = 5;int fact = f(i);printf("%d\n",fact); return 0;
}

今天内容就到这里,希望大家可以勤加练习 

今天依旧积累几句话激励自己和大家

理想与现实差了十万八千里

我鞭长莫及
却也马不停蹄

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/7949.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络1--通信过程的理解

1.封装与解包 通信的过程就是不断的封装和解包的过程 封装即就是按照“应用”“传输” “网络” “链路” 层&#xff0c;封装给每一层都加上相应的包头&#xff08;每一层都有协议&#xff0c;&#xff09;解包就是接受到的包文被一层层去掉相对应的包头。 任何一层的协议都…

JavaScript解决精度问题-math.js-使用入门

JavaScript精度失真案例 0.1+0.2 结果是:0.300000000000000041-0.9 结果是:0.099999999999999984.10*100 结果是:409.999999999999946.10/0.1 结果是:60.99999999999999大数计算 9007199254740992+1 结果是9007199254740992 JavaScript 浮点数运算结果不对,因浮点数的存储…

ResNet神经网络搭建

一、定义残差结构 BasicBlock 18层、34层网络对应的残差结构 浅层网络主线由两个3x3的卷积层链接&#xff0c;相加后通过relu激活函数输出。还有一个shortcut捷径 参数解释 expansion 1 &#xff1a; 判断对应主分支的残差结构有无变化 downsampleNone &#xff1a; 下…

Minio(官方docker版)容器部署时区问题研究记录

文章目录 感慨&概述补充&#xff1a;MINIO_REGION和容器时间的关系 问题一&#xff1a;minio容器和本地容器时间不一致问题说明原因探究解决方法结果验证 问题二&#xff1a;minio修改时间和本地查询结果不一致具体问题原因探究解决办法时间转化工具类调用测试和验证上传文…

Unit6

Unit6 1. val 强壮 valid invalid validate invalidate prevail prevailing prevalent 2. pri 主要的 prime Prime Minister premier primary primary school prior prior to sth prioritize priority principle principal prince princess 3. nov 新 news newspap…

thinkphp5 中路由常见的使用方法

在ThinkPHP 5中&#xff0c;路由的常见使用方法主要包括以下几个方面&#xff1a; 基本路由配置&#xff1a; 你可以通过修改config目录下面的route.php文件来配置路由规则。例如&#xff0c;使用Route::get或Route::post等方法定义不同的HTTP请求类型的路由。 use think\Route…

stm32芯片外设

STM32 F1系列微控制器是ST公司推出的一系列基于ARM Cortex-M3内核的微控制器。这一系列微控制器拥有丰富的外设资源&#xff0c;包括但不限于&#xff1a; ADC&#xff08;模数转换器&#xff09;&#xff1a;用于将模拟信号转换为数字信号&#xff0c;通常用于传感器数据的读取…

高级数据结构与算法习题(9)

一、判断题 1、Let S be the set of activities in Activity Selection Problem. Then the earliest finish activity am​ must be included in all the maximum-size subset of mutually compatible activities of S. T F 解析:F。设S是活动选择问题中的一…

flutter开发实战-webview_flutter 4.x版本使用

flutter开发实战-webview_flutter 4.x版本使用 在之前使用的webview_flutter版本是3.x的&#xff0c;升级到4.x后&#xff0c;使用方式有所变化。 一、webview_flutter 在工程的pubspec.yaml中引入插件 webview_flutter: ^4.4.2二、使用webview_flutter 在4.x版本中&#…

JAVA语言开发的(智慧校园系统源码)智慧校园的痛点、智慧校园的安全应用、智慧校园解决方案

一、智慧校园的痛点 1、信息孤岛问题&#xff1a;由于校园内各部门或系统独立开发&#xff0c;缺乏统一规划和标准&#xff0c;导致数据无法有效整合和共享&#xff0c;形成了信息孤岛。 2、技术更新与运维挑战&#xff1a;智慧校园的建设依赖于前沿的信息技术&#xff0c;如云…

15【PS作图】像素画地图绘制

绘制视角 绘制地图的时候&#xff0c;有的人会习惯把要绘制的 房子、车子、围栏 小物件先画好&#xff0c;然后安放在地图上 但这样绘制出的各种物件之间&#xff0c;会缺乏凝聚力 既然物品都是人构造出的&#xff0c;不如以人的视角去一步步丰富地图&#xff1b; 比如下图…

关于c++ 中 string s { ‘a‘ , ‘b‘ , ‘c‘ , ‘d‘ } 的方式的构造过程

&#xff08;1&#xff09;这样的构造方式不常见&#xff0c;但也确实 STL 库提供了这样的构造函数 &#xff08;2&#xff09;以反汇编分析这行代码 &#xff08;3&#xff09;谢谢阅读

前端深度扩展

1 为什么要有webpack 模块化管理&#xff1a;构建工具支持Common JS、ES6模块等规范&#xff1b;依赖管理&#xff1a;在大型项目中&#xff0c;手动管理文件依赖关系。webpack可以自动分析项目中的依赖关系&#xff0c;将其打包成1个或多个优化过的文件&#xff0c;减少页面加…

【网络】深入了解端口,一个端口能否被多个进程绑定

引言 在计算机网络中&#xff0c;端口是一项关键概念&#xff0c;它在网络通信中扮演着重要的角色。本文将深入介绍端口的作用、分类&#xff0c;并分析一个端口能否被多个进程绑定的问题。 1. 端口的作用 端口是计算机与网络通信的入口或出口&#xff0c;用于标识进程和应用…

Prefiquence(双指针,动态规划)

文章目录 题目描述输入格式输出格式样例样例输入 #1样例输出 #1样例输入 #2样例输出 #2样例输入 #3样例输出 #3 提示提交链接解析参考代码 题目描述 给您两个二进制字符串 a a a 和 b b b 。二进制字符串是由字符 0 0 0 和 1 1 1 组成的字符串。 您的任务是确定最大可能的…

【数据结构与算法】力扣 239. 滑动窗口最大值

题干描述 给你一个整数数组 nums&#xff0c;有一个大小为 k **的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#xff1a; 输入&#xff1a; nums [1,3,-1,-3,5,3…

代码随想录day56 | 动态规划P16 | ● 583. ● 72. ● 编辑距离总结篇

583. 两个字符串的删除操作 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1&#xff1a; 输入: word1 "sea", word2 "eat" 输出: 2 解释: 第一步将 &quo…

嵌入式开发常见概念简介

目录 0. 《STM32单片机自学教程》专栏总纲 API Handle(句柄) 0. 《STM32单片机自学教程》专栏总纲 本文作为专栏《STM32单片机自学教程》专栏其中的一部分&#xff0c;返回专栏总纲&#xff0c;阅读所有文章,点击Link: STM32单片机自学教程-[目录总纲]_stm32 学习-CSD…

每日OJ题_贪心算法三⑤_力扣134. 加油站

目录 力扣134. 加油站 解析代码 力扣134. 加油站 134. 加油站 难度 中等 在一条环路上有 n 个加油站&#xff0c;其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车&#xff0c;从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一…

java设计模式三

工厂模式是一种创建型设计模式&#xff0c;它提供了一个创建对象的接口&#xff0c;但允许子类决定实例化哪一个类。工厂模式有几种变体&#xff0c;包括简单工厂模式、工厂方法模式和抽象工厂模式。下面通过一个简化的案例和对Java标准库中使用工厂模式的源码分析来说明这一模…