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这两个数
相关推荐
z2005093011 小时前
每日简单算法题——————跟着卡尔
算法
️是7812 小时前
信息奥赛一本通—编程启蒙(3395:练68.3 车牌问题)
数据结构·c++·算法
Liangwei Lin12 小时前
LeetCode 118. 杨辉三角
算法·leetcode·职场和发展
计算机安禾12 小时前
【c++面向对象编程】第24篇:类型转换运算符:自定义隐式转换与explicit
java·c++·算法
鼠鼠我(‘-ωก̀ )好困12 小时前
leetGPU
算法
我星期八休息13 小时前
Linux系统编程—基础IO
linux·运维·服务器·c语言·c++·人工智能·算法
池塘的蜗牛13 小时前
A Low-Complexity Method for FFT-based OFDM Sensing
算法
故事和你9113 小时前
洛谷-【图论2-1】树5
开发语言·数据结构·c++·算法·动态规划·图论
咖啡里的茶i14 小时前
视觉显著目标的自适应分割与动态网格生成算法研究
人工智能·算法·目标跟踪
paeamecium14 小时前
【PAT甲级真题】- String Subtraction (20)
数据结构·c++·算法·pat考试·pat