C++函数(芜湖~ 学到二级的最后一个章节啦!!!!!!!)

发布时间:2024年01月03日

简单理解一下函数

函数就好比一个盒子,里面放着指定的代码(例如之前用到的strlen,就是一个输出数组长度的代码),使用起来可以让代码更简洁,而且可以重复使用,但是也分为自定义函数和系统函数,自定义函数就是拿一个新的盒子,然后自己往里面放代码(注意:函数的定义要写在主函数外),系统函数就是系统帮你提前编写好的,可以直接调用,不需要自己定义。

现在主要是用系统函数,自定义函数后面再用;

具体系统函数函数有哪些可以参考前面的文章,再加个新的:swp(int,int),是用于交换两个数值。

OK 进入正文

输出数组的最大值

题目描述: 输入一个n*n的矩阵 输出每一行的最大值,每一列的最大值 输入 一个整数 n,代表矩阵规模 n行整数,矩阵的数据 输出2行第1行,空格隔开,矩阵每一行的最大值 第2行,空格隔开,矩阵每一列的最大值

样例输入

3

1 2 3

9 8 7

2 4 5

样例输出

3 9 5

9 8 7

#include<iostream>
using namespace std;
int main()
{
	int a[110][110];
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			cin>>a[i][j];
		}
	}
	for(int i=0;i<n;i++)
	{
		int ma=-1;
		for(int j=0;j<n;j++)
		{
			ma=max(ma,a[i][j]);
		}
		cout<<ma<<" ";
	}
	cout<<endl;
	for(int i=0;i<n;i++)
	{
		int ma=-1;
		for(int j=0;j<n;j++)
		{
			ma=max(ma,a[j][i]); 
		}
		cout<<ma<<" ";
	}
	
	
	return 0;
}

交换数值

题目描述: 输入一个n*n的矩阵 交换每一列的最大值,最小值 输入 一个整数 n,代表矩阵规模 n行整数,矩阵的数据 输出 交换后的矩阵

样例输入

3

1 2 3

9 8 7

2 4 5

样例输出

9 8 7

1 2 3

2 4 5

#include<iostream>
using namespace std;
int main()
{
	int a[110][110];
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			cin>>a[i][j];
		}
	}
	for(int i=0;i<n;i++)
	{
		int ma=-1;
		int mai=0;
		int maj=0;
		int mi=9999;
		int mii=0;
		int mij=0;
		for(int j=0;j<n;j++)
		{
			if(ma<a[j][i])
			{
				ma=a[j][i];
				mai=j;
				maj=i;
			}
			if(mi>a[j][i])
			{
				mi=a[j][i];
				mii=j;
				mij=i;
			}
		}
		swap(a[mai][maj],a[mii][mij]);
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	
	
	return 0;
}

冒泡排序

题目描述: 对于给定的正整数序列,按照每个数的? 各位数的和? 从大到小排序,各位数的和? ?相同的按照本身大小排序,大的在前, 小的在后。 输入格式 第一行 1 个整数 n, 表示序列的大小。(0 < n ≤ 1000) 第二行 n 个正整数,表示序列的每个数,每个数不大于 100000000。 输出格式 输出按照题目要求排序后的序列。

样例输入

6

17 26 9 13 88 10

样例输出

88 9 26 17 13 10

#include<iostream>
using namespace std;
int main()
{
	int a[110];
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	for(int i=0;i<n-1;i++)
	{
		for(int j=0;j<n-1-i;j++)
		{
			int tmp=a[j];
			int sum=0;
			int tmp1=a[j+1];
			int sum1=0;
			while(tmp!=0)
			{
				sum=sum+tmp%10;
				tmp=tmp/10;
			}
			while(tmp1!=0)
			{
				sum1=sum1+tmp1%10;
				tmp1=tmp1/10;
			}
			if(sum<sum1)
			{
				swap(a[j],a[j+1]);
			}
			if(sum==sum1&&a[j]<a[j+1])
			{
				swap(a[j],a[j+1]);
			}
		}
	}
	for(int i=0;i<n;i++)
	{
		cout<<a[i]<<" ";
	}
	
	
	return 0;
}

数组k位之后逆序重放

题目描述: 将一个数组中的值k到最后一位逆序重新存放。 例如,原来的顺序为8,6,5,4,1。要求将其第三位之后的值逆序,变为8 6 1 4 5。 输入 输入为3行:第一行数组中元素的个数n(1<n<100)第二行是n个整数,每辆整数之间用空格分隔。第三行是整数n,表示从哪里开始逆序? 输出 输出为一行:输出逆序后数组的整数,每两个整数之间用空格分隔。

样例输入

9

1 2 3 4 5 6 7 8 9

6

样例输出

1 2 3 4 5 9 8 7 6

#include<iostream>
using namespace std;
int main()
{
	int a[110];
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	int s;
	cin>>s;
	int e=(n-s)/2+s-1;
	int j=n-1;
	for(int i=s-1;i<e+1;i++)
	{
		swap(a[i],a[j]);
		j--;
	}
	for(int i=0;i<n;i++)
	{
		cout<<a[i]<<" ";
	}
	
	
	return 0;
}

矩阵交换列 描述 给定一个a*a的矩阵(数学上,一个r×c的矩阵是一个由r行c列元素排列成的矩形阵列), 将第n列和第m列交换,输出交换后的结果。 输入 第1行一个整数a,代表矩阵规模 后面a行,每行a个整数,代表矩阵的内容 之后两个整数m、n,以一个空格分开。(1 <= m,n <= 5) 输出 输出交换之后的矩阵,矩阵的每一行元素占一行,元素之间以一个空格分开。

样例输入

5

1 2 2 1 2

5 6 7 8 3

9 3 0 5 3

7 2 1 4 6

3 0 8 2 4

1 5

样例输出

2 2 2 1 1

3 6 7 8 5

3 3 0 5 9

6 2 1 4 7

4 0 8 2 3

#include<iostream>
using namespace std;
int main()
{
	int a[110][110];
	for(int i=0;i<5;i++)
	{
		for(int j=0;j<5;j++)
		{
			cin>>a[i][j];
		}
	}
	int n,m;
	cin>>n>>m;
	n--;
	m--;
	//因为实际数字和下角标差1,所以要执行--操作 
	for(int i=0;i<5;i++)
	{
		swap(a[i][n],a[i][m]);
	}
	for(int i=0;i<5;i++)
	{
		for(int j=0;j<5;j++)
		{
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	
	
	return 0;
}

文章来源:https://blog.csdn.net/BanyeBirth/article/details/135373384
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。