C语言-函数递归练习

1,输入三个整数,输出从大到小的序列

复制代码
#include<stdio.h>
//输入三个整数,输出从大到小的序列
//例如: 输入: 2 3 1  输出:3 2 1
//写法一
//int main() {
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	//输入
//	scanf("%d %d %d", &a, &b, &c);
//	//调整
//	int tmp = 0;
//	if (a < b) {
//		tmp = a;
//		a = b;
//		b = tmp;
//	}
//	if (a<c) {
//		tmp = a;
//		a = c;
//		c = tmp;
//	}
//	if (b<c) {
//		tmp = b;
//		b = c;
//		c = tmp;
//	}
//	//输出
//	printf("%d %d %d", a, b, c);
//	return 0;
//}
//写法二:函数版
void Swap(int* px, int* py) {
	int tmp = *px;
	*px = *py;
	*py = tmp;
}
int main() {
	int a = 0;
	int b = 0;
	int c = 0;
	//输入
	scanf("%d %d %d", &a, &b, &c);
	//调整
	int tmp = 0;
	if (a < b) {
		Swap(&a, &b);
	}
	if (a < c) {
		Swap(&a, &c);
	}
	if (b < c) {
		Swap(&b, &c);
	}
	//输出
	printf("%d %d %d", a, b, c);
	return 0;
}

2,写代码打印1-100之间的所有3的倍数的数字

复制代码
#include<stdio.h>
//写代码打印1-100之间的所有3的倍数的数字
int main() {
	int i = 0;
	//for ( i = 1; i <=100; i++)
	//{
	//	if (i%3==0)
	//	{
	//		printf("%d ", i);
	//	}
	//}
	//另一种写法
	for (i = 3; i <= 100; i+=3)
	{
			printf("%d ", i);
	}
	return 0;
}

3,给定两个数,求这两个数的最大公约数

复制代码
#include<stdio.h>
//给定两个数,求这两个数的最大公约数 
//写法一:暴力求解
//int main() {
//	int a = 0;
//	int b = 0;
//	//输入
//	scanf("%d %d", &a, &b);
//	//求最大公约数
//	int min = (a < b) ? a : b;
//	int m = min;
//	while (1) {
//		if (a%m==0&&b%m==0) {
//			break;
//		}
//		m--;
//	}
//	printf("%d\n", m);
//	return 0;
//}
//写法二:辗转相除法
int main() {
	int a = 0;
	int b = 0;
	int c = 0;
	//输入
	scanf("%d %d", &a, &b);
	//求最大公约数
	while (c=a%b) {
		a = b;
		b = c;
	}
	printf("%d\n", b);
	return 0;
}

4,编写程序数一下1-100的所有整数中出现多少个数字9

复制代码
#include<stdio.h>
//编写程序数一下1-100的所有整数中出现多少个数字9 
int main() {
	int i = 0;
	int count = 0;
	for ( i = 1; i <=100; i++)
	{
		//判断个位是不是9
		if (i%10==9)
			count++;
		//判断十位是不是9
		if (i / 10 == 9)
			count++;
	}
	printf("%d\n", count);
	return 0;
}

5,计算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的值
//分子总是1
//分母是1-100
int main() {
	int i = 0;
	double sum = 0;
	int flag = 1;
	for ( i = 1; i <=100; i++)
	{
		sum = sum + flag*(1.0 / i);//全加(注意是1.0 , 而不是1)
		flag = -flag;
	}
	printf("%lf\n", sum);
	return 0;
}

6,求10个整数中的最大值

复制代码
#include<stdio.h>
////求10个整数中的最大值 
int main() {
    //准备10个整数
	/*int arr[10] = { 3,1,5,4,9,6,8,7,2,0 };*/
	//输入十个数字
	int arr[10] = { 0 };
	//int arr[] = { 0 };//会报错
	//这里没有指定数组的元素个数,就会根据初始化的内容来推算元素的个数
	int i = 0;
	for ( i = 0; i < 10; i++)
	{
		scanf("%d", &arr[i]);
	}
	
	//找出最大值
	int max = arr[0];//假设0号选手是最大值
	//int i = 0;
	for ( i = 1; i < 10; i++)
	{
		if (arr[i] > max) {
			max = arr[i];
		}
	}
	printf("%d\n", max);
	return 0;
}

7,在屏幕上打印输出9*9乘法口诀表

复制代码
#include<stdio.h>
//在屏幕上打印输出9*9乘法口诀表
// 1*1
// 2*1 2*2
// 3*1 3*2 3*3
//.........
int main() {
	int i = 0;
	//打印9行
	for ( i = 0; i <=9; i++)
	{
		//打印一行
		int j = 0;
		for ( j = 0; j <=i; j++)
		{
			printf("%d*%d=%2d ", i, j, i * j);
		}
		printf("\n");
	}
	return 0;
}

8,实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定

复制代码
#include<stdio.h>
// 实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定
void print_table(int n) {
	int i = 0;
		for ( i = 0; i <=n; i++)
		{
			//打印一行
			int j = 0;
			for ( j = 0; j <=i; j++)
			{
				printf("%d*%d=%2d ", i, j, i * j);
			}
			printf("\n");
		}
}

int main() {
	int n = 0;
	scanf("%d", &n);
	print_table(n);
	return 0;
}

9,(把函数处理结果的二个数据返回给主调函数)的可行方法

复制代码
#include<stdio.h>
// (把函数处理结果的二个数据返回给主调函数)的可行方法
//方法一:形参用数组
//void test(int arr[]) {    //int arr[] 的另一种写法 int *arr  本质就是指针变量
//	arr[0] = 3;   //arr[0]  --->  *(arr+0)
//	arr[1] = 4;   //arr[1]  --->  *(arr+1)
//}
//int main() { 
//	int arr[2] = { 0 };
//	test(arr);
//	return 0;
//}
// 
////方法二:形参用二个指针
//void test(int *px ,int *py) {   
//	*px = 3;
//	*py = 4;
//}
//int main() { 
//	int a=0;
//	int b=0;
//	test(&a,&b);
//	return 0;
//}
//
////方法三:用两个全局变量
int a = 0;
int b = 0;
void test(int *px ,int *py) {   
	a = 3;
	b = 4;
}
int main() { 
	test(&a,&b);
	printf("a=%d b=%d\n", a, b);
	return 0;
}
//错误方法,直接return这两个数
相关推荐
炽烈小老头14 分钟前
【每天学习一点算法 2026/03/08】相交链表
学习·算法·链表
一碗白开水一37 分钟前
【工具相关】OpenClaw 配置使用飞书:打造智能飞书助手全流程指南(亲测有效,放心享用)
人工智能·深度学习·算法·飞书
仰泳的熊猫1 小时前
题目2194:蓝桥杯2018年第九届真题-递增三元组
数据结构·c++·算法
Tisfy1 小时前
LeetCode 1888.使二进制字符串字符交替的最少反转次数:前缀和O(1)
算法·leetcode·字符串·题解
滴滴答滴答答2 小时前
机考刷题之 9 LeetCode 503 下一个更大元素 II
算法·leetcode·职场和发展
飞Link2 小时前
梯度下降的优化算法中,动量算法和指数加权平均的区别对比
人工智能·深度学习·算法
啊哦呃咦唔鱼2 小时前
LeetCode hot100-15 三数之和
数据结构·算法·leetcode
_日拱一卒2 小时前
LeetCode(力扣):杨辉三角||
算法·leetcode·职场和发展
rqtz2 小时前
基于I2C总线的IMU-磁力计融合算法与数据共享
算法·iic·espidf·qmc5883p·icm42670p·imu磁力计融合
leluckys3 小时前
算法-链表-二、成对交换两个节点
数据结构·算法·链表