C语言Day10(c程序设计小红书+pta)

目录

(一)用选择法对十个整数排序

(二)用冒泡排序对是个正整数排序

(三)函数

1.函数的定义

2.函数的调用:

(四)用函数调用的方法求两数之和

(五)统计一个数字中1的个数

(六)函数的递归调用

(七)递归调用之求年龄

(八)递归调用之求阶乘

(九)汉诺塔

(十)用调用求一个数组中的最大值

(十一)函数的数组调用求平均值


 

(一)用选择法对十个整数排序

#include
int main()
{
	int arr[10];
	int min = 0;
	for (int i = 0; i < 10; i++)
	{
		scanf("%d", &arr[i]);
	}
	for (int i = 0; i <10-1; i++)/*循环的轮数*/
		/*思路为:第一轮:十个数里面先找到最小的那一个,把最小的放在最前面*/
		/*第二轮:在剩下的九个数里面找到最小的那一个,把最小的放在这九个数的最前面,也就是所有数的第二个*/
		/*第三轮是8个数比较,第四轮7,5.6.6.5.7.4.8.3.9.2,所以一共需要九轮*/
	{
		min = i;/*每一轮中先设定此轮的比较数内第一个为最小值*/
		for (int j = i + 1; j < 10; j++)/*所以从第二个数往后历遍所有数并依次与比较min比较*/
		{
			if (arr[min] > arr[j])
			{
				min = j;
			}
		}
	   int temp = arr[min];/*把一开始设定的最小值与比较完之后的最小值交换*/
	   arr[min] = arr[i];
	   arr[i] = temp;
			
	}
	for (int i = 0; i < 10; i++)
	{
		printf("%4d", arr[i]);
	}
	return 0;
}

(二)用冒泡排序对是个正整数排序

#include
int main()
{
	int arr[10];
	for (int i = 0; i < 10; i++)
	{
		scanf("%d", &arr[i]);
	}
	for (int i = 0; i < 10 - 1; i++)/*循环的轮数*/
		/*切记有几个数,那么循环轮数就是几-1*/
	{
		for (int j = 0; j < 10 - 1 - i; j++)/*每一轮循环都是从第一个数开始,与后一个数两两比较*/
			/*第一轮结束,最大的那个数已经在最后边了,下一次就是从第一个数两两比较一直到倒数第二个数,所以是10-1-i*/
		{
			if (arr[j] > arr[j + 1])/*改题目运用的是从小到大排序,所以把最大的那个往后放*/
			{
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
	for (int i = 0; i < 10; i++)
	{
		printf("%4d", arr[i]);
	}
	return 0;
}

(三)函数

1.函数的定义

返回值  函数名(参数列表)

{

函数体

}

函数名:每个函数名都需要有一个独一无二的名字(标识符)

void:空,可以修饰返回值(必须写)或参数列表

你可能感兴趣的:(c语言,c语言,算法,数据结构,c#,开发语言,排序算法)