【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中的一个抽象…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
