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这两个数
相关推荐
workflower6 小时前
用硬件换时间”与“用算法降成本”之间的博弈
人工智能·算法·安全·集成测试·无人机·ai编程
重生之我是Java开发战士8 小时前
【动态规划】简单多状态dp问题:按摩师,打家劫舍,删除并获得点数,粉刷房子,买卖股票的最佳时机
算法·动态规划·哈希算法
KAU的云实验台9 小时前
单/多UAV、静/动态路径规划,基于PlatEMO平台的带约束多目标优化 本文核心内容:
算法·matlab·无人机
Liangwei Lin9 小时前
洛谷 P1807 最长路
数据结构·算法
会编程的土豆9 小时前
【数据结构与算法】二叉树从建立开始
数据结构·c++·算法
_日拱一卒9 小时前
LeetCode:最大子数组和
数据结构·算法·leetcode
计算机安禾9 小时前
【数据结构与算法】第22篇:线索二叉树(Threaded Binary Tree)
c语言·开发语言·数据结构·学习·算法·链表·visual studio code
算法鑫探9 小时前
解密2025数字密码:数位统计之谜
c语言·数据结构·算法·新人首发
计算机安禾10 小时前
【数据结构与算法】第21篇:二叉树遍历的经典问题:由遍历序列重构二叉树
c语言·数据结构·学习·算法·重构·visual studio code·visual studio