二维数组结束,就到函数了。函数,就相当于scratch中的自制积木,需要自己定义其作用,让代码更简洁、一目了然。但是,与scratch不同的是,c++中,系统就给出了一些函数,如:sizoef、strlen等。这些都叫系统函数,系统已经定义了它的作用。这次,让我们先来看看系统函数吧!
主要的一些系统函数:
(a和b为变量名,c为字符串名)
名称 用法 用处
strlen strlen(c) 找到字符串c的长度
system system("cls") 清屏
swap swap(a,b) 交换两个数的值
sizoef sizoef(c) 找到c的所占空间大小
max max(a,b) 找到a和b中的较大数
min min(a,b) 找到a和b中的较小数
...... ...... ......
(注:有些系统函数要加其他头文件)
#include <iostream>
using namespace std;
int main()
{int n;cin>>n;int a[100][100];for(int i = 0;i<n;i++){for(int j = 0;j<n;j++){cin>>a[i][j];}}cout<<endl;for(int i = 0;i<n;i++){int ma = -999999;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 = -999999;for(int j = 0;j<n;j++){ma = max(ma,a[j][i]);}cout<<ma<<" ";}return 0;
}
#include <iostream>
using namespace std;
int main()
{int n;cin>>n;int a[100][100];for(int i = 0;i<n;i++){for(int j = 0;j<n;j++){cin>>a[i][j];}}cout<<endl;for(int i = 0;i<n;i++){int ma = -999999;int mi = 999999;int mai;int mii;for(int j = 0;j<n;j++){if(ma<a[i][j]){ma = a[j][i];mai = j;}if(mi>a[i][j]){mi = a[j][i];mii = j;}}swap(a[mai][i],a[mii][i]);}for(int i = 0;i<n;i++){for(int j = 0;j<n;j++){cout<<a[i][j]<<" ";}cout<<endl;}return 0;
}
#include <iostream>
using namespace std;
int main()
{int n;cin>>n;int a[1000] = {0};int b[1000] = {0};for(int i = 0;i<n;i++){cin>>a[i];int t = a[i];while(t!=0){b[i] = b[i]+t%10;t = t/10;}}for(int i = 0;i<n;i++){cout<<b[i]<<" ";}cout<<endl;for(int i = 0;i<n-1;i++){for(int j = 0;j<n-1-i;j++){if(b[j]<b[j+1]){swap(a[j],a[j+1]);swap(b[j],b[j+1]);}else if(a[i]<a[i+1]){swap(a[j],a[j+1]);swap(b[j],b[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 n;cin>>n;int k;int a[1000] = {0};for(int i = 0;i<n;i++){cin>>a[i];}cin>>k;k = k-1;int j = n-1;int i = k;while(i<=j){swap(a[i],a[j]);j--;i++;}cout<<endl;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 n;cin>>n;int a[100][100] = {0};for(int i = 0;i<n;i++){for(int j = 0;j<n;j++){cin>>a[i][j];}}int i1;int i2;cin>>i1>>i2;i1 = i1-1;i2 = i2-1;for(int i = 0;i<n;i++){swap(a[i][i1],a[i][i2]);}cout<<endl;for(int i = 0;i<n;i++){for(int j = 0;j<n;j++){cout<<a[i][j]<<" ";}cout<<endl;}return 0;
}
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{int a[110][110];int n,m;m = 5;n = 5;for(int i = 0;i<n;i++){for(int j = 0;j<m;j++){cin>>a[i][j];}}for(int i = 0;i<n;i++){for(int j = 0;j<m;j++){bool f =true;for(int k = 0;k<n;k++){if(a[i][j]>a[k][j]){f = false;break;}}for(int h = 0;h<m;h++){if(f==false){break;}if(a[i][j]<a[i][h]){f = false;break;}}if(f==true){cout<<i+1<<" "<<j+1<<" "<<a[i][j];return 0;}}}cout<<"no found";return 0;
}