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

news2024/11/26 20:47:46

五一过的好快,五天假期说没就没,因为一些事情耽搁到现在,不过还是要继续学习的,之后就照常更新,先说一下,这个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;
}

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

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

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

我鞭长莫及
却也马不停蹄

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

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

相关文章

odoo实施之创建行业demo

创建数据库&#xff0c;添加公司数据 选择应用&#xff0c;获取15天免费试用 创建完成 设置客户公司logo 创建用户 更改用户语言 前置条件&#xff1a;配置邮件 开发模式下&#xff0c;额外信息 加载demo数据

Conda下Richdem包遇到问题

Conda中Richdem包遇到问题 文章目录 Conda中Richdem包遇到问题问题一报错解决 问题二报错解决 参考 问题一 报错 RichDEM 是一套数字高程模型 &#xff08;DEM&#xff09; 水文分析工具&#xff0c;这次打算用richdem进行地形分析&#xff0c;尝试在conda里面安装richdem包的…

VMware下Ubuntu的安装教程

文章目录 一、Ubuntu如何下载1.下载官方地址https://ubuntu.com/2.点选Ubuntu服务器版本3.点击下载Ubuntu服务器版本iso镜像二、VMware安装Ubuntu服务器系统1.创建虚拟机2.选择下载好的Ubuntu服务器镜像3.创建安装完成三、Ubuntu Server如何设置1.Ubuntu Server没有中文所以全都…

windows vscode设置扩展和缓存目录

vscode的扩展和缓存占了很大的空间&#xff0c;而且默认在C盘&#xff0c;很烦。。。 修改vscode快捷方式的目标处&#xff1a;"C:\Users\Nv9\AppData\Local\Programs\Microsoft VS Code\Code.exe" --extensions-dir "D:\Program Cache\VScode\extensions"…

sql注入练习

1.什么是SQL注入 SQL注入是比较常见的网络攻击方式之一&#xff0c;它不是利用操作系统的BUG来实现攻击&#xff0c;而是针对程序员编写时的疏忽&#xff0c;通过SQL语句&#xff0c;实现无账号登录&#xff0c;甚至篡改数据库 2.sql注入原理 攻击者注入一段包含注释符的SQL语…

kraken2 最新版安装,极简模式

kraken2 git clone https://github.com/DerrickWood/kraken2.gitcd kraken2./install_kraken2.sh /opt/krakenvim .bashrc ---------------- # Kraken export PATH"/opt/kraken:$PATH" ----------------source .bashrc Note: 不晓得是不是我设置了清华源&#xff0c…

Spring Boot集成Swagger快速入门Demo

1.什么是Swagger&#xff1f; Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 主要作用&#xff1a; 使得前后端分离开发更加方便&#xff0c;有利于团队协作。&#xff08;实际开发中&#xff0c;接口文档的内容会不停的…

kafka学习笔记(三、生产者Producer使用及配置参数)

1.简介 1.1.producer介绍 生产者就是负责向kafka发送消息的应用程序。消息在通过send()方法发往broker的过程中&#xff0c;有可能需要经过拦截器(Interceptor)、序列化器(Serializer)和分区器(Partitioner)的一系列作用后才能被真正的发往broker。 demo: public class Kafk…

【NodeMCU实时天气时钟温湿度项目 4】通过NTPClient库获取实时网络时间并显示在TFT屏幕上

今天是【实时天气时钟温湿度项目】第四专题&#xff0c;主要内容是&#xff1a;学习导入NTPClient库&#xff0c;通过这个库获取实时网络时间&#xff0c;显示在1.3寸TFT液晶屏幕上。此前三个专题&#xff0c;请选择查看以下链接。 第一专题内容&#xff0c;请参考 【N…

使用Docker安装MySQL5.7.36

拉取镜像并查看 docker pull mysql:5.7.36拉取成功后查看&#xff08;非必须&#xff09; docker images创建并设置宿主机 mysql 配置文件目录和数据文件目录 创建相关文件夹将容器中的mysql数据保存到本地&#xff0c;这样即使容器被删除&#xff0c;数据也不会丢失。 mkd…

牛客NC142 最长重复子串【中等 字符串 Java/Go】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/4fe306a84f084c249e4afad5edf889cc 思路 注意&#xff1a;题目给的时间复杂度是O(N^2)那么直接套用双重循环&#xff1a;外层循环i为假定起始重复子串的初始位置&#xff0c;内层循环的j为假定重复子串的结束位置…

每日一题5:Pandas-修改列

一、每日一题 一家公司决定增加员工的薪水。 编写一个解决方案&#xff0c;将每个员工的薪水乘以2来 修改 salary 列。 返回结果格式如下示例所示。 解答&#xff1a; import pandas as pddef modifySalaryColumn(employees: pd.DataFrame) -> pd.DataFrame:employees.loc[…

人工神经网络初步

大家好&#xff0c;这里是七七&#xff0c;由于各种比赛的缘故&#xff0c;使用了很多人工神经网络模型。但是很多的原理都不是很明白&#xff0c;就导致了不能灵活地运用┭┮﹏┭┮。为此&#xff0c;去看了些人工神经网络原理书&#xff0c;写下此专题。 在进入正文之前要先…

Delta lake with Java--数据增删改查

之前写的关于spark sql 操作delta lake表的&#xff0c;总觉得有点混乱&#xff0c;今天用Java结合真实的数据来进行一次数据的CRUD操作&#xff0c;所涉及的数据来源于Delta lake up and running配套的 GitGitHub - benniehaelen/delta-lake-up-and-running: Companion reposi…

Mac idea gradle解决异常: SSL peer shut down incorrectly

系统&#xff1a;mac 软件&#xff1a;idea 解决异常: SSL peer shut down incorrectly 查看有没有安装 gradle -v安装 根据项目gradle提示安装版本 brew install gradle7idea的配置 在settings搜索gradle&#xff0c;配置Local installation&#xff0c;选择自己的安装目录…

Unity Shader中获取像素点深度信息

1.顶点着色器中对深度进行计算 v2f vert(appdata v) {v2f o;o.pos UnityObjectToClipPos(v.vertex);o.uv TRANSFORM_TEX(v.uv, _MainTex);o.depth (o.pos.z / o.pos.w 1.0) * 0.5; // Normalize depth to [0, 1]return o; }但是达不到预期&#xff0c;最后返回的值一直大于…

连通“数据”,让制造变“聪明”

说起数据智能&#xff0c;你第一时间想到的是什么呢&#xff1f;是科技感十足的智慧城市&#xff1f;还是炫酷的人工智能景象&#xff1f; 数据作为企业的战略资产越来越受到重视&#xff0c;从最初的数据协助业务协同&#xff0c;转化为数据驱动业务&#xff0c;数据驱动运营…

Hive两代命令行客户端(Hive、Beeline)

Hive命令行客户端 Hive有两个主要的客户端工具&#xff0c;分别是旧版的Hive CLI&#xff08;Command Line Interface&#xff09;和新版的Beeline。 Hive CLI&#xff1a; Hive CLI 是 Hive 最早期的命令行客户端工具&#xff0c;它使用 JDBC 连接到 Hive 服务器&#xff0c;…

栈的2道面试题【有效的括号】【用栈实现队列】

栈的面试题&#xff1a; 1.有效的括号 题目&#xff1a; 有效的括号 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合…

深入剖析Tomcat(七) 日志记录器

在看原书第六章之前&#xff0c;一直觉得Tomcat记日志的架构可能是个“有点东西”的东西。在看了第六章之后呢&#xff0c;额… 就这&#xff1f;不甘心的我又翻了翻logback与新版tomcat的源码&#xff0c;额…&#xff0c;日志架构原来也没那么神秘。本篇文章先过一遍原书内容…