Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【C语言】 题集 of ⑨

【C语言】 题集 of ⑨

作者头像
謓泽
发布于 2022-12-12 06:51:43
发布于 2022-12-12 06:51:43
1.1K00
代码可运行
举报
文章被收录于专栏:【C】系列【C】系列
运行总次数:0
代码可运行

 🚩write in front🚩


🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家^星级博主~掘金⇿InfoQ创作者~周榜34»总榜1892🏅 🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知 📝个人主页⇥打打酱油desuCSDN博客💬 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏⇥【C】题目_謓泽的博客-CSDN博客[〇~①]🎓 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩 

『C~题集』of ⒐

 🚩write in front🚩

🌸第四十一题→数字每一位之和『递归』🌸

🌸第四十二题→冒泡排序🌸

🌸第四十三题→学习小组🌸  

🌸第四十四题→正整数的相乘🌸

🌸第四十五题→数组元素交换🌸

🍀第四十一题の代码🍀

🍀第四十二题の代码🍀

🍀第四十三题の代码🍀

🍀第四十四题の代码🍀

🍀第四十五题の代码🍀

🌸第四十一题→数字每一位之和『递归』🌸

输入一个无符号数字,无非就是用输入函数scanf()进行输入,但是要注意下这是无符号输入那么我们就要在数据类型前面加上unsigned(无符号类型)才可以。 计算数字每一位之和,就是假设我们输入的数字是19,那么就是相当于9+1=10,这样。 用递归进行实现,在前面的题已经都说过了,那么再来说下。 概述:一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层,当最内层的函数执行完毕后,再一层一层地由里到外退出。 那么递归它也是具有限制条件的,不然它就会造成死递归,这个就相当于死循环一样。 存在限制条件,当满足这个限制条件之后的时候,递归便会不再继续。 每次递归调用之后都会越来越接近这个限制条件。 当然,这道题目不用递归也是非常好解决的,关键点就两行代码如下↓

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sum += n % 10;//求个位sum = sum + n % 10
n = n / 10;   //把个位抹去

🌸第四十二题→冒泡排序🌸

题目内容→创建一个函数Bubble_Sort()实现冒泡排序。 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。  冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定性算法。 冒泡排序基础的排序算法,也是我们必须要牢牢掌握的一种算法。

🌸第四十三题→学习小组🌸

题目内容→张三同学有一个学习小组有⑤个人,每个人有③门课的考试成绩,求全组分科的平均成绩和各科总平均成绩,请用C语言编程帮张三同学实现一下吧。 输入描述:三行输入,分别输入五个人的语文成绩,数学成绩、英语成绩。 输出描述:二行输出,一门学科的平均分和三门各科总平均分。 题解思路如下↓ 这道题目主要的就是考察下对数组的使用(一维数组、二维数组),注意:当我们计算完当前科目的总成绩的时候,并且它进行了当前科目的平均分。要记得给它在当前科目总成绩进行清0的操作。

🌸第四十四题→正整数的相乘🌸

题目内容→本道题目要求使用递归来实现不使用 * 运算符,实现两个正整数的相乘。 其实递归我们已经在前面的题型已经讲了很多次了,这里再把递归的限制条件说下↓ 每一个递归函数都应该只进行有限次的递归调用,否则它就会进入死胡同,永远也不能退出了,这样的程序是没有意义的。 存在限制条件,当满足这个限制条件之后的时候,递归便会不再继续。 每次递归调用之后都会越来越接近这个限制条件。 实际上递归不用看的太过于复杂,把递归看的简单点,了解题的特性实际上这样使用递归效果更好。这也是我推荐初学者认识递归的最好的办法。像这道题目我jiode是函数实参肯定是要有两个参数的,首先题目要求了我们是不能使用乘法并且是递归的,那么我们还有加减法,那么可以思考下怎么样往这方面用递归的方法来解决,4 * 4 = 16 = (4 + 4 * (4-1))就比如这个那么你是不是可以弄成递归的特性来解决呢。注:递归的限制条件在这里是非常的容易的,由于0x任何数都得0那么我们这里就可以设 a 或 b 二者位限制条件。

🌸第四十五题→数组元素交换🌸

题目内容→将数组 arr1 的元素的数字和数组 arr2 的元素的进行交换。 int arr1[5] = { 1, 3, 5, 7, 9 }; int arr2[5] = { 2, 4, 6, 8, 10 }; 把这两组的值进行交换,得到下面交换的值。如下所示↓ int arr1[5] = { 2, 4, 6, 8, 10 }; int arr2[5] = { 1, 3, 5, 7, 9 }; 输出内容:要把每个元素给打印出来,交换前的元素和交换后的电路。 这道题目如果你会把两个变量进行交换的方法,那么你就可以很轻松的解决这道题目了。只不过还加上了一维数组的知识点。稍稍的比普通的交换难上了那么一丢丢而已,那么快点去实现它吧。


🍀第四十一题の代码🍀

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int print(unsigned int n)
{
	//这里之所以是n>9是因为n<10的话无论我们输入什么数字都是最终相加之和
	if (n > 9)
	{
		//取模得到个位,除以得到十位。
		return print(n / 10) + n % 10;
	}
	else
	{
		return n;
	}
}
int main(void)
{
	unsigned int num = 0;
	printf("请输入数字→");
	scanf("%d", &num);
	int ret = print(num);
	printf("ret = %d\n", ret);
	return 0;
}

运行结果🖊  请输入数字→1234 ret = 10

🍀第四十二题の代码🍀

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

void Bubble_Sort(int arr[],int sz)
{
	int i = 0;
	//确定排序的次数
	for (i = 0; i < sz - 1; i++)
	{
		//每次交换的次数,第一次交换次数n-1,依次......
		int j = 0;
		//防止无效循环,也就是当我们数组已经是冒泡排序的情况。
		int flag = 1;	
        //确定交换的次数。
		for (j = 0; j < sz - 1 - i; j++)
		{
			//第一个数字和第二个数字比较,当第一个数字大于第二个数字时候进行交换。
			if (arr[j] > arr[j + 1])
			{
				//创建临时变量,进行交换!
				int change;
				change = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = change;
				flag = 0;
			}
		}
		if (flag == 1)
		{
			break;
		}
	}
}
int main(void)
{
	int i = 0;
	//数组的逆序排序
	int arr[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
	//sz是数组总元素的大小              
	int sz = sizeof(arr) / sizeof(arr[0]);
	//调用函数
	Bubble_Sort(arr,sz);
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

运行结果🖊  0 1 2 3 4 5 6 7 8 9 


🍀第四十三题の代码🍀

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int i = 0;
	int j = 0;//循环初始化下标
	int arr[3][5] = { 0 };//行-科目,列-学生。
	int sum = 0;  //当前科目的总成绩
	int average = 0;  //总平均分
	int v[3];     //各科平均数
	printf("请输入各科学生的成绩:\n");
	for (i = 0; i < 3; i++)
	{
		printf("\n一门学科数入5次成绩\n");
		if (i == 0)
			printf("数学学科:");
		if (i == 1)
			printf("语文学科:");
		if (i == 2)
			printf("英语学科:");
		for (j = 0; j < 5; j++)
		{
			scanf("%d", &arr[i][j]);  //输入每个同学的各科成绩
			sum += arr[i][j];			//计算当前科目的总成绩(sum)
		}
		v[i] = sum / 5;  // 当前科目的平均分,用总的成绩除以5
		sum = 0;	     // 把当前科目总成绩清0
	}
	printf("\n数学成绩 = %d\n语文成绩 = %d\n英语成绩 = %d\n", v[0], v[1], v[2]);
	average = v[0] + v[1] + v[2];
	printf("平均分: %d\n", average / 3);
	return 0;
}

运行结果🖊  请输入各科学生的成绩: 一门学科数入5次成绩 数学学科:80 80 80 80 80 一门学科数入5次成绩 语文学科:90 90 90 90 90 一门学科数入5次成绩 英语学科:100 100 100 100 100 数学成绩 = 80 语文成绩 = 90 英语成绩 = 100 平均分: 90


🍀第四十四题の代码🍀

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int Multiply(int a, int b)
{
	if (b == 0)
	{
		return 0;
	}
	return a + Multiply(a, b - 1);// a + a * b
}
int main(void)
{
	int i = 0;
	int j = 0;
	printf("请输入两个数字:");
	scanf("%d %d", &i, &j);
	Multiply(i, j);
	printf("%d\n", Multiply(i, j));
	return 0;
}

运行结果🖊  请输入两个数字:4  5  20


🍀第四十五题の代码🍀

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<stdio.h>
#define number 5
int main(void)
{
	int i = 0;
	int arr1[number] = { 1, 3, 5, 7, 9 };
	int arr2[number] = { 2, 4, 6, 8, 10 };
    for (i = 0; i < number; i++)
    {
        printf("没交换之前的值:arr1[%d] = %d\n",i + 1, arr1[i]);
    }
	for (i = 0; i < number; i++)
	{
		printf("没交换之前的值:arr2[%d] = %d\n", i + 1, arr2[i]);
	}	
	printf("\n");
	int sz = sizeof(arr1) / sizeof(arr1[0]);
	for (i = 0; i < sz; i++)
	{
		int tmp;
		tmp = arr1[i];
		arr1[i] = arr2[i];
		arr2[i] = tmp;
		printf("arr1[%d] = %-2d  ", i + 1, arr1[i]);
		printf("arr2[%d] = %-2d\n", i + 1, arr2[i]);
	}
	return 0;
}

运行结果🖊  没交换之前的值:arr1[1] = 1 没交换之前的值:arr1[2] = 3 没交换之前的值:arr1[3] = 5 没交换之前的值:arr1[4] = 7 没交换之前的值:arr1[5] = 9 没交换之前的值:arr2[1] = 2 没交换之前的值:arr2[2] = 4 没交换之前的值:arr2[3] = 6 没交换之前的值:arr2[4] = 8 没交换之前的值:arr2[5] = 10 arr1[1] = 2   arr2[1] = 1  arr1[2] = 4   arr2[2] = 3  arr1[3] = 6   arr2[3] = 5  arr1[4] = 8   arr2[4] = 7  arr1[5] = 10  arr2[5] = 9 

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
『C语言』题集 of ⑩
🚩write in front🚩 🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家 ^ 星级博主~掘金⇿InfoQ创作者~周榜77»总榜1766🏅 🆔本文由 謓泽 原创 CSDN首发 🙉 如需转载还请通知⚠ 📝个人主页-謓泽的博客_CSDN博客💬 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏-【C】题目_謓泽的博客-CSDN博客🎓 ✉️我们并非登上我们所选择
謓泽
2022/12/12
5750
『C语言』题集 of ⑩
【C语言】题集 of ⑦
其实每个人对递归的理解都是有不同的,这种最终还是需要你去多多练习相对应题目才行。
謓泽
2022/12/12
8780
【C语言】二维数组
练习1:一个学习小组有 5 个人,每个人有三门课的考试成绩。求全组分科的平均成绩和 各科总平均成绩。
謓泽
2022/12/12
1.8K0
【C语言】二维数组
C语言:深入理解指针(2)
    通过深入理解指针(1),我们对指针有了一个初步的了解,还了解了指针变量类型的意义、指针的运算、assert断言、const修饰变量、野指针………………下面我们继续深入学习。
小陈在拼命
2024/02/17
1540
C语言:深入理解指针(2)
【C语言】题集 of ⑧
🚩write in front🚩 🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家^星级博主~掘金⇿InfoQ创作者~周榜34»总榜2005🏅 🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知⚠ 📝个人主页:打打酱油desuCSDN博客💬 📣系列专栏:【C】题目_謓泽的博客-CSDN博客[〇~①]🎓 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩  『
謓泽
2022/12/12
5540
初识C语言·指针(2)
结果是整个数组的大小,那么就说明了sizeof()里面的数组名不是首元素地址的含义,代表的是整个数组。
_lazy
2024/10/16
480
初识C语言·指针(2)
【C语言新手村】刷副本
学习过程中,我们需要不断练习一些题目来提高我们的水平,而一道题目的解法也不止有一种,在C语言中,我们除了要会写这道编程题,更要精益求精,尽量把自己的代码写到最好,这样才能提升我们写代码的能力
f狐o狸x
2024/11/19
570
【C语言新手村】刷副本
【C语言经典例题】——程序员必须会的经典基础例题(三)
思路: 我们可以看到,三角的两边都是1,并且从第二行(从0开始算)开始,两边之间的数字,都是上一行的两位数字之和,比如第三行的数字3,等于上一行的1+2,等等。如此,把它看成一个二维数组,便可直接入手
诺诺的包包
2023/02/20
6980
抽丝剥茧C语言(中阶)数组
本章会详细的讲解数组,以前因为数组的困惑会迎刃而解。 数组的作用是储存大量元素,不用不停的创建变量。
有礼貌的灰绅士
2023/03/28
5970
抽丝剥茧C语言(中阶)数组
c语言qsort函数的模拟实现
回调函数就是⼀个通过函数指针调用的函数。 如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。 这样讲也许会有点抽象,等下面讲到实际案例时再具体介绍:>
用户11029269
2024/03/19
1130
c语言qsort函数的模拟实现
【C语言】题集 of ⑤
🚀write in front🚀   📝个人主页:打打酱油desu_泽En_CSDN博客 🆔本文由 泽En 原创 CSDN首发🐒 如需转载还请通知⚠ 🏅2021年度博客之星物联网与嵌入式开发TOP5→作者周榜56→总排名3255🏅  🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏:【C】题目_打打酱油desu-CSDN博客 💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🖊 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 ♐  目录 🚀write
謓泽
2022/12/12
6100
【C语言】题集 of ⑤
c语言牛客网64-114题基础练习
如烟花般绚烂却又稍纵即逝
2024/11/26
1670
c语言牛客网64-114题基础练习
如何深入掌握C语言数组(详解)
1、数组必须 先定义,后使用 2、只能逐个引用数组元素,不能一次引用整个数组 3、数组元素表示形式:  数组名[下标]  , 下标可以是常量或整型表达式
用户9645905
2022/11/30
1K0
如何深入掌握C语言数组(详解)
C语言指针超详解——最终篇一
回调函数就是一个通过函数指针调用的函数。 如果你把函数的指针(地址)作为参数传递给另个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数。
fhvyxyci
2024/09/24
1180
C语言指针超详解——最终篇一
带你深入了解c语言指针后续
以数组指针为例: 数组指针示例:写一个指向 int arr[10] 数组的数组指针;
初阶牛
2023/03/01
3840
C语言指针——练习
该函数通过一个while循环来遍历字符串,每遍历一个字符,计数器len就加1。当遍历到字符串的结尾字符'\0'时,循环结束,函数返回计数器的值,即字符串的长度。 
小李很执着
2024/06/15
880
C语言指针——练习
C语言进阶-回调函数
目录 前言 回调函数 回调型计算器 回调冒泡排序(模拟qsort库函数) qsort函数原型 compar参数 代码演示  冒泡排序(bubble_sort) ---- 前言 ---- 本文主要讲解 回调函数的理解 回调实现计算器 qsort各种功能的使用 冒泡排序各种功能的实现 回调函数 ---- 定义 回调函数就是一个通过函数指针调用的函数 如果你把函数的指针(地址)作为参数传递给另一 个函数, 当这个指针被用来调用其所指向的函数时,我们就说这是回调函数 回调函数不是由该函数的实现
用户9645905
2022/11/30
9730
C语言进阶-回调函数
C语言—有序序列合并
要求:输入包含三行, 第一行包含两个正整数n, m,用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。 第二行包含n个整数,用空格分隔。 第三行包含m个整数,用空格分隔。
用户11369558
2024/11/20
950
C语言——I /深入理解指针(二)
这里我们使用 &arr[0] 的方式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址,而且是数组首元素的地址,我们来做个测试。
用户11015888
2024/03/11
1150
C语言——I /深入理解指针(二)
【C语言】题集 of ③
 🚀write in front🚀 🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5,2021博客之星Top100→周榜31→总榜2629🏅 🆔本文由 謓泽 原创 CSDN首发🐒 如需转载还请通知⚠ 📝个人主页:打打酱油desu_泽En_CSDN博客🎓 📢系列专栏:【C】系列_打打酱油desu-CSDN博客📣 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩  目录  🚀write in front
謓泽
2022/12/12
8950
相关推荐
『C语言』题集 of ⑩
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档