一起刷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小就输出C
    printf("%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++;
        else
            others++;
    }
    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;
	else
		return 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;
	else
		fact = i * f(i - 1);
	return fact;
}
int main()
{
	int i = 5;
    int fact = f(i);
	printf("%d\n",fact); 
    return 0;
}

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

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

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

我鞭长莫及
却也马不停蹄

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【CTF Web】攻防世界 GFSJ0478 cookie Writeup(HTTP协议+信息收集+Cookie)

cookie X老师告诉小宁他在cookie里放了些东西&#xff0c;小宁疑惑地想&#xff1a;‘这是夹心饼干的意思吗&#xff1f;’ 解法 按 F12&#xff0c;点击网络。 刷新页面。查看请求头中的 Cookie。 look-herecookie.php访问&#xff1a; http://61.147.171.105:53668/cookie.…

如何迁移Windows PC数据到统信UOS 1070

原文链接&#xff1a;如何迁移Windows PC数据到统信UOS 1070 Hello&#xff0c;大家好啊&#xff01;随着统信UOS 1070的推出&#xff0c;越来越多的用户和企业选择迁移到这个基于Linux的操作系统&#xff0c;以享受其安全性和稳定性的优势。今天&#xff0c;我们将探讨如何使用…

分布式与一致性协议之ZAB协议(五)

ZAB协议 ZAB集群如何从故障中恢复 如果我们想把ZAB集群恢复到正常状态&#xff0c;那么新领导者就必须确立自己的领导关系&#xff0c;成为唯一有效的领导者&#xff0c;然后作为主节点"领导"各备份节点一起处理读写请求 如何确立领导关系 前面提到&#xff0c;选…

最后一块石头的重量 II ,目标和,一和0

最后一块石头的重量 II&#xff08;0-1背包问题 将石头尽可能分为两堆重量一样的&#xff0c;进行相撞则为0 class Solution {public int lastStoneWeightII(int[] stones) {int sum0;for(int x:stones){sumx;}int targetsum/2;int[] dpnew int[target1];//dp[j]表示最大石堆的…

基础算法,贪心算法,贪心策略,OJ练习

文章目录 一、概念二、OJ练习2.1 区间选点2.2 区间合并2.3 区间2.4 合并果子2.5 排队接水2.6 货仓选址2.7 防晒2.8 畜栏预定2.9 雷达设备2.10 国王游戏2.11 耍杂技的牛2.12 给树染色2.13 任务2.14 能量石 三、总结 一、概念 贪心是一种在每次决策时采取当前意义下最优策略的算…

怎么在家访问公司内网?

在当前的疫情情况下&#xff0c;越来越多的公司开始允许员工在家办公&#xff0c;这就需要解决一个问题&#xff1a;如何在家访问公司的内网资源呢&#xff1f;今天我将介绍一种解决方案——使用【天联】组网&#xff0c;它具有许多优势。 【天联】组网的优势 无网络限制&#…

视频断点上传

什么是断点续传 通常视频文件都比较大&#xff0c;所以对于媒资系统上传文件的需求要满足大文件的上传要求。http协议本身对上传文件大小没有限制&#xff0c;但是客户的网络环境质量、电脑硬件环境等参差不齐&#xff0c;如果一个大文件快上传完了网断了没有上传完成&#xf…

泰迪智能科技中职大数据实验室建设(职业院校大数据实验室建设指南)

职校大数据实验室是职校校园文化建设的重要部分&#xff0c;大数据实训室的建设方案应涵盖多个方面&#xff0c;包括硬件设施的配备、软件环境的搭建、课程资源的开发、师资力量的培养以及实践教学体系的完善等。 打造特色&#xff0c;对接生产 社会经济与产业的…

KT148A语音芯片串口版本播放音乐的时候,直接导致单片机工作异常

一、问题描述 在使用你们KT148A串口版本播放音乐的时候&#xff0c;直接导致单片机工作异常&#xff0c;测了一下供电发现每次播放音乐的时候&#xff0c;供电会有很大波动。看了一下你们的手册&#xff0c;说是带载能力不够&#xff0c;但是我把供电接出来&#xff0c;接到你…

【数据结构】二叉树知识点详解

树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合有一个特殊的结点&#xff0c;称为根结点&#xff0c;根节点没有前驱结点除根节点外&#xff0c;其余结点被分成M(M>0)个互不相交的集合T1、T2、…

STM32-DAC

DAC 前言一、理论介绍二、DAC代码三、实验结果总结 前言 前言写个参考吧 STM32 DAC串口 一、理论介绍 DAC是数字模拟转换器&#xff08;Digital to Analog Converter&#xff09;的缩写&#xff0c;它是一种将数字信号转换为模拟信号的设备。 RC有2个通道。 DAC的初始化 #…

Vue3专栏项目 -- 一、第一个页面(上)

一、ColumnList 组件&#xff08;专栏列表组件&#xff09;编码&#xff1a; 该组件要接收一个数组&#xff0c;数组中是一个个专栏数据&#xff0c;数据中包括id、title、avator、description。所以我们定义一个泛型&#xff0c;泛型为id为number类型title为string类型如下这…

【从零开始学架构 架构基础】架构设计的本质、历史背景和目的

本文是《从零开始学架构》的第一篇学习笔记&#xff0c;主要理解架构的设计的本质定义、历史背景以及目的。 架构设计的本质 分别从三组概念的区别来理解架构设计。 系统与子系统 什么是系统&#xff0c;系统泛指由一群有关联的个体组成&#xff0c;根据某种规则运作&#…

VS Code安装通义灵码插件

搜索通义灵码插件 当编写完部分代码后&#xff0c;会出现通义灵码的图标&#xff0c;点击该图标&#xff0c;可以选择补全代码。 之后需要登录阿里云账号 返回vscode 在左下角输入框输入提出的问题“合并两个数组”&#xff0c;回车显示问题的答案。

简单了解泛型

基本数据类型和对应的包装类 在Java中, 基本数据类型不是继承自Object, 为了在泛型代码中可以支持基本类型, Java给每个基本类型都对应了一个包装类型. 简单来说就是让基本数据类型也能面向对象.基本数据类型可以使用很多方法, 这就必须让它变成类. 基本数据类型对定的包装类…

免费思维13招之一:体验型思维

思维01:体验型思维 第一大战略:体验型思维。 体验型思维是免费思维中最简单的思维,我们先从最简单的讲起,由简入繁,简单的我们少讲,复杂的我们多讲。 那么,什么是体验型思维呢? 很简单,就是先让客户进行体验,再进行成交的方式。这一种思维,具体的可以分为两种:…

yolo world 瑞芯微芯片rknn部署、地平线芯片Horizon部署、TensorRT部署

特别说明&#xff1a;参考官方开源的 yoloworld 代码、瑞芯微官方文档、地平线的官方文档&#xff0c;如有侵权告知删&#xff0c;谢谢。 模型和完整仿真测试代码&#xff0c;放在github上参考链接 模型和代码。 yoloworld出来的有一段时间了&#xff0c;还没有盘到板端上玩一玩…

IJCAI 2024:吉林大学、中国科学院计算技术研究所和自动化研究所等揭示数据增强在开放场景下的“两面性”

吉林大学人工智能学院研究员高一星、中国科学院计算技术研究所副研究员唐帆、中国科学院自动化研究所研究员董未名等在人工智能领域的CCF-A类顶级国际会议IJCAI上发表的工作&#xff0c;揭示并分析基于样本混合的数据增强方法在开放场景下存在的问题&#xff0c;提出了基于非对…

《安富莱嵌入式周报》第336期:开源计算器,交流欧姆表,高性能开源BLDC控制器,Matlab2024a,操作系统漏洞排名,微软开源MS-DOS V4.0

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 本周更新一期视频教程&#xff1a; BSP视频教程第30期&#xff1a;UDS ISO14229统一诊断服务CAN总线专题&#xff0c;常…

C++:多态-虚函数

C 中的多态性是面向对象编程中的一个重要概念&#xff0c;它允许在运行时选择不同的函数实现&#xff0c;以适应不同类型的对象。 多态的种类 编译时多态性&#xff08;Compile-time Polymorphism&#xff09;&#xff1a;也称为静态多态性或早期绑定&#xff0c;指在编译时确…