【C语言】有关的经典题型内含数组及递归函数题型讲解(入门适用)

C语音经典题型
- 1. 在屏幕上输出9*9乘法口诀表
- 2. 求10 个整数中最大值
- 3. 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果
- 4. 编写程序数一下 1到 100 的所有整数中出现多少个数字9
- 5. 能把函数处理结果的二个数据返回给主调函数
- 6. 实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定
- 7. 编写一个函数实现n的k次方,使用递归实现
- 8. 计算一个数的每位之和(递归实现)
- 9. 字符串逆序(递归实现)
- 10. 将数组A中的内容和数组B中的内容进行交换。(数组一样大)
- 11. 创建一个整形数组,完成对数组的操作
1. 在屏幕上输出9*9乘法口诀表
//在屏幕上输出9*9乘法口诀表
//1*1=1
//2*1=2 2*2=4
//3*1=3 3*2=6 3*3=9
//...
//
#include <stdio.h>
int main()
{int i = 0;for (i = 1; i <= 9; i++){//打印一行的数据int j = 0;for (j = 1; j <= i; j++){printf("%d*%d=%-3d ", i, j, i * j); //-3d向左对齐}printf("\n");}return 0;
}
2. 求10 个整数中最大值
#include <stdio.h>
//求10 个整数中最大值int main()
{int arr[] = { -1,-2,-3,-4,-5,-6,-7,-8,-9,-10 };// 0 1 ...int m = arr[0];int i = 0;for (i = 1; i < 10; i++){if (arr[i] > m)m = arr[i];}printf("%d\n", m);return 0;
}
注意:
不能将m定义为0,如果定义为零,只能满足正数形式,并不能满足负数。
3. 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果
#include <stdio.h>
//计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果int main()
{int i = 0;float sum = 0.0;int flag = 1;for (i = 1; i <= 100; i++){sum += flag*1.0f/i;flag = -flag;}printf("%f\n", sum);return 0;
}
4. 编写程序数一下 1到 100 的所有整数中出现多少个数字9
#include <stdio.h>
//编写程序数一下 1到 100 的所有整数中出现多少个数字9int main()
{int i = 0;int count = 0;for (i = 1; i <= 100; i++){if (i % 10 == 9)count++;if (i / 10 == 9)//注意不是else if,否则结果会为19count++;}printf("%d\n", count);return 0;
}
注意: 个位和十位都要判断有没有数字9。
5. 能把函数处理结果的二个数据返回给主调函数
#include <stdio.h>
被调用的函数
void test(int arr[]) //形参用数组的形式
{arr[0] = 3;arr[1] = 5;
}//主调函数
int main()
{int arr[2];test(arr);printf("%d %d\n", arr[0], arr[1]);return 0;
}void test(int*p1, int*p2) //形参用二个指针
{*p1 = 3;*p2 = 5;
}//主调函数
int main()
{int x = 0; int y = 0;test(&x, &y);printf("%d %d\n", x,y);return 0;
}int x;
int y;void test() //用俩个全局变量
{x = 3;y = 5;
}//主调函数
int main()
{test();printf("%d %d\n", x, y);return 0;
}
注意: return 这二个数是不可取的。
6. 实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定
#include <stdio.h>//实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定
//如:输入9,输出9 * 9口诀表,输出12,输出12 * 12的乘法口诀表。//
//1*1=1
//2*1=2 2*2=4
//3*1=3 3*2=6 3*3=9
//
void print_table(int m)
{int i = 0;for (i = 1; i <= m; i++){//打印一行int j = 0;for (j = 1; j <= i; j++){printf("%-2d*%-2d=%-3d ", i, j, i * j);}printf("\n");}
}int main()
{int n = 0;scanf("%d", &n);//9 12 5//打印对应的乘法口诀表print_table(n);return 0;
}
7. 编写一个函数实现n的k次方,使用递归实现
图解演示

代码如下
#include <stdio.h>
double Pow(int n, int k)
{if (k > 0)return n * Pow(n, k - 1);else if (k == 0)return 1.0;elsereturn 1.0 / Pow(n, -k);
}int main()
{int n = 0;int k = 0;scanf("%d %d", &n, &k);printf("%lf\n", Pow(n, k));return 0;
}
8. 计算一个数的每位之和(递归实现)
题目内容:
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和。
例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
输入:1729,输出:19
思路
DigitSum(1729)
DigitSum(172) + 9
DigitSum(17) + 2 +9
DigitSum(1) + 7 + 2 + 9
#include <stdio.h>
int DigitSum(int n)
{if (n > 9)return DigitSum(n / 10) + n % 10;elsereturn n;
}int main()
{int n = 0;scanf("%d", &n);int ret = DigitSum(n);printf("%d\n", ret);return 0;
}
9. 字符串逆序(递归实现)
题目内容:
编写一个函数 reverse_string(char * string)(递归实现)
实现:将参数字符串中的字符反向排列,不是逆序打印。
要求:不能使用C函数库中的字符串操作函数。
比如:
char arr[] = "abcdef"
逆序之后数组的内容变成:fedcba
#include <stdio.h>
#include <string.h>int my_strlen(char* str) //模拟strlen的实现
{int count = 0;while (*str != '\0'){count++;str++;}return count;
}void reverse_string(char* str) //非递归的方法
{int left = 0;int right = my_strlen(str)-1;while (left<right){char tmp = *(str + left);*(str + left) = *(str + right);*(str + right) = tmp;left++;right--;}
}void reverse_string(char* str) //递归的方法
{int len = my_strlen(str);char tmp = *str;//1*str = *(str + len - 1);//2*(str + len - 1) = '\0';//3if(my_strlen(str+1)>=2)reverse_string(str+1);//4*(str + len - 1) = tmp;//5
}int main()
{//char arr[] = "abcdef";char arr[] = "abcdef";reverse_string(arr);printf("%s\n", arr);return 0;
}
10. 将数组A中的内容和数组B中的内容进行交换。(数组一样大)
#include<stdio.h>
int main()
{int arr1[5] = { 1,3,5,7,9 };int arr2[5] = { 2,4,6,8,0 };int i = 0;int sz = sizeof(arr1) / sizeof(arr1[0]);int tmp = 0;for (i = 0; i < sz; i++){tmp = arr1[i];arr1[i] = arr2[i];arr2[i] = tmp;}for (i = 0; i < sz; i++){printf("%d ", arr1[i]);}printf("\n");for (i = 0; i < sz; i++){printf("%d ", arr2[i]);}printf("\n");return 0;
}
11. 创建一个整形数组,完成对数组的操作
要求:
实现函数init() 初始化数组为全0
实现print() 打印数组的每个元素
实现reverse() 函数完成数组元素的逆置。
自己设计以上函数的参数,返回值。
#include <stdio.h>
void init(int arr[], int sz)
{int i = 0;for (i = 0; i < sz; i++){arr[i] = 0;}
}void print(int arr[], int sz)
{int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");
}void reverse(int arr[], int sz)
{int left = 0;int right = sz - 1;while (left<right){int tmp = arr[left];arr[left] = arr[right];arr[right] = tmp;left++;right--;}
}
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };int sz = sizeof(arr) / sizeof(arr[0]);print(arr, sz);reverse(arr, sz);print(arr, sz);init(arr, sz);print(arr, sz);return 0;
}
如果这份博客对大家有帮助,希望各位给恒川一个免费的点赞作为鼓励,并评论收藏一下,谢谢大家!!!
制作不易,如果大家有什么疑问或给恒川的意见,欢迎评论区留言。
相关文章:
【C语言】有关的经典题型内含数组及递归函数题型讲解(入门适用)
C语音经典题型1. 在屏幕上输出9*9乘法口诀表2. 求10 个整数中最大值3. 计算1/1-1/21/3-1/41/5 …… 1/99 - 1/100 的值,打印出结果4. 编写程序数一下 1到 100 的所有整数中出现多少个数字95. 能把函数处理结果的二个数据返回给主调函数6. 实现一个函数,…...
MyBatis操作数据库
目录 MyBatis 功能架构 学习MyBatis 第一个MyBatis查询 1、创建数据库和表 2、搭建MyBatis开发环境 2.1、在项目中添加MyBatis框架 2.2、配置数据库连接信息 2.3、配置MyBatis中xml的保存路径(规则) 3、添加业务代码 3.1、创建实体类 3.2、构…...
Object.keys(obj)与Object.values(obj)的用法
语法 Object.keys(obj) 参数:要返回其枚举自身属性的对象 返回值:一个表示给定对象的所有枚举属性的字符串数组 传入对象,返回属性名 1 var obj {a:123,b:345}; 2 console.log(Object.keys(obj)); //[a,b] 处理字符串,返回索…...
关于ES6新特性的总结
目录1.let & const2.解构赋值3.模板字符串4.简化对象写法5.箭头函数6.函数参数的默认值设置7.rest参数8.扩展运算符9.SymbolSymbol特点创建SymbolSymbol使用场景Symbol内置值10.迭代器11.生成器12.Promise基本使用Promise封装读取文件Promise封装ajaxPromise.prototype.the…...
13. CSS 处理
提取 Css 成单独文件CSS 文件目前被打包到 js 文件中,当 js 文件加载时,会创建一个 style 标签来生成样式,加载一个页面的时候,先 html -> js -> css,会有页面闪屏现象,用户体验不好。应该是单独的 Css 文件&…...
One-hot编码
One-Hot 编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候,其中只有一位有效。 例如: 自然状态码为:000,001,010,011,100,1…...
Java中的深克隆与浅克隆
浅克隆: 实现Cloneable接口即可实现,浅克隆只对象内部的基础数据类型(包括包装类)被克隆,引用数据类型(负责对象)会被使用引用的方式传递。 简单来说,就是浅克隆属性如果是复杂对象…...
如何使用MyBatis框架实现对数据库的增删查改?
目录:1.创建MyBatis项目以及如何配置2.MyBatis操作数据库的模式3.实现增删查改注意:在我们操作数据库之前,先要保证我们已经在数据库建好了一张表。创建MyBatis项目以及如何配置我们在创建项目的时候,引入MyBatis相关依赖配置数据…...
结构体内存大小
000、前言 要想计算结构体内存大小,就会涉及到一个结构体内存对齐的问题,而不是对其成员进行简单的加运算 (1)在写本博客之前 有位同学和我讨论了一个学校的题目,题目如下: 我借这道题目问了另外一位同…...
gerrit操作和jinkens编译合入代码
gerrit 先 查看自己的push 找到后添加reviewer 填写邮箱开头就可以出来 记得1 然后send 让人review 编译不过,gerrit上查看 1.是不是checkstyle问题 2.编译不过,去jinkens查看 先retrigger重新编译 如果发现多次编译失败 则要看下console output 查…...
网络工程师面试题(面试必看)(3)
作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页 前言 本系列将会提供网络工程师面试题,由多位专家整合出本系列面试题,包含上百家面试时的问题。面试必考率达到80%,本系列共86道题…...
第N次重装系统之Ubtntu
前言又一次换了服务器,由于centOS已经完成了自己的生命周期,接下来我会转去使用Ubtntu系统。当然,大部分docker命令是不会收到影响的,但是一部分安装过程可能就要重新学习了。其实这个系统也有自己的老牌包管理器apt,所…...
一个 适用 vue3 ts h5移动端 table组件
vue3-h5-table 介绍 适用于 vue3 ts 的 h5 移动端项目 table 组件 支持 左侧固定 滑动 每行点击回调 支持 指定列排序 链接 :https://github.com/duKD/vue3-h5-table 效果 props说明minTableHeight表格最小高度 可选 默认600rowNum表格显示几行 可选 默认 6he…...
Vue.js 生产打包上线实战
项目管理后台采用Vue.js 架构,开发完毕后设计到打包上传到服务器发布。 发布成功后,总结出主要要决绝两个主要问题: 1.打包前,环境设置 2.上传到服务器,直接放在Tomcat中出现跨域访问问题。 此次项目实际处理方法为…...
C语言指针的算术运算
C语言指针的算术运算 C语言中,指针是一种非常重要的数据类型。除了可以指向特定的内存地址外,指针还可以进行算术运算。指针的算术运算包括加、减、比较等操作,下面我们将详细介绍这些运算符的使用方法,并提供实际的示例。 指针…...
快速排序/快速选择算法
一.快速排序 1.基本介绍 快速排序(Quicksort〉是对冒泡排序的一种改进,都属于交换排序。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分(每次选择中轴值),中轴值左边的元素小于中轴值,中轴值右边的元素全部大于中轴值(但不要求有序)&#x…...
【数据结构初阶】单链表面试题|内含链表带环问题
目录 前言 链表面试题 1. 删除链表中等于给定值 val 的所有节点。oj链接 2.反转一个单链表。oj链接 3. 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。oj链接 4. 输入一个链表,…...
一文解析ethtool 命令的使用
命令简介 ethtool命令用于查询和控制网络设备驱动程序和硬件设置,尤其是有线以太网设备,devname网卡的名称。网卡就像是交换机的一个端口,正常使用我们只是配置网卡IP地址等信息,网卡的速率、双工模式等我们并不关心。通过ethtoo…...
深度学习训练营之yolov5训练自己的数据集
深度学习训练营之训练自己的数据集原文链接环境介绍准备好数据集划分数据集运行voc_train.py遇到问题完整代码创建new_data.yaml文件模型训练时遇到的报错模型训练结果可视化参考链接原文链接 🍨 本文为🔗365天深度学习训练营 中的学习记录博客…...
Java中的AQS
文章目录什么是AQSAbstractQueuedSynchronizer方法解析自旋与阻塞ReentrantLock,Semaphore以及CountDownLatch对比ReentrantLock实现原理原理ReentrantLock源码中compareAndSetState的方法Semaphore实现原理CountDownLatch实现原理什么是AQS AQS是Java中的一个抽象…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
边缘计算网关提升水产养殖尾水处理的远程运维效率
一、项目背景 随着水产养殖行业的快速发展,养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下,而且难以实现精准监控和管理。为了提升尾水处理的效果和效率,同时降低人力成本,某大型水产养殖企业决定…...
高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。
2024 年,高端封装市场规模为 80 亿美元,预计到 2030 年将超过 280 亿美元,2024-2030 年复合年增长率为 23%。 细分到各个终端市场,最大的高端性能封装市场是“电信和基础设施”,2024 年该市场创造了超过 67% 的收入。…...
RFID推动新能源汽车零部件生产系统管理应用案例
RFID推动新能源汽车零部件生产系统管理应用案例 一、项目背景 新能源汽车零部件场景 在新能源汽车零部件生产领域,电子冷却水泵等关键部件的装配溯源需求日益增长。传统 RFID 溯源方案采用 “网关 RFID 读写头” 模式,存在单点位单独头溯源、网关布线…...
汇编语言学习(三)——DoxBox中debug的使用
目录 一、安装DoxBox,并下载汇编工具(MASM文件) 二、debug是什么 三、debug中的命令 一、安装DoxBox,并下载汇编工具(MASM文件) 链接: https://pan.baidu.com/s/1IbyJj-JIkl_oMOJmkKiaGQ?pw…...
