只用php做网站,外贸平台哪个好,佛山seo联系方式,安徽建设工程信息网人员文章目录C语言中函数的应用1、自定义函数实现二维数组的转置2、自定义函数之整数处理3、自定义函数之数字后移4、自定义函数之字符串拷贝C语言中函数的应用
1、自定义函数实现二维数组的转置 题目描述
写一个函数#xff0c;使给定的一个二维数组#xff08;#xff13;使给定的一个二维数组×转置即行列互换。
输入格式
一个3x3的矩阵
输出格式
无
样例输入
1 2 3
4 5 6
7 8 9样例输出
1 4 7
2 5 8
3 6 9 解题思路 我们只需要让二维数组的上半部分与下半部分进行交换便可以完成转置操作对角线部分保持不变。2与4交换3与7交换6与8交换。可以看出规律是num[i][j]与num[j][i]交换位置。
1 2 3 1 4 7
4 5 6 2 5 8
7 8 9 3 6 9 AC代码C语言
#includestdio.h
#includemath.h
#includestring.h
void trans(int num[4][4]){for(int i0;i3;i){for(int ji;j3;j){//注意这里ji表示只交换上半部分if(i!j){//对角线部分保持不动int tmpnum[i][j];num[i][j]num[j][i];num[j][i]tmp;}}}
}int main(){//freopen(data.in.txt,r,stdin);int num[4][4];for(int i0;i3;i){for(int j0;j3;j){scanf(%d,num[i][j]);}}trans(num);for(int i0;i3;i){for(int j0;j3;j){printf(%d ,num[i][j]);}printf(\n);}return 0;
}2、自定义函数之整数处理 题目描述
输入10个整数将其中最小的数与第一个数对换把最大的数与最后一个数对换。写三个函数 ①输入10个数②进行处理③输出10个数。
输入格式
10个整数
输出格式
整理后的十个数每个数后跟一个空格注意最后一个数后也有空格
样例输入
2 1 3 4 5 6 7 8 10 9
样例输出
1 2 3 4 5 6 7 8 9 10
解题思路 该题有一个巨大的陷阱看起来我们只需要找到数组中最小和最大的数然后把它们分别和第一个和最后一个数交换位置。然而这样会出现一种情况
例如数组num[10,1,2,8,3]
1、我们找到了最小和最大的数它们的下标分别是1和0;
2、将最小的数与第一个数交换即num[1]与num[0]交换 数组变成num[1,10,2,8,3];
3、将最大的数与最后一个数交换即将num[0]与num[4]交换而此时的num[0]已经
变成了1而不是原来的10;数组会变成num[3,10,2,8,1];
改进方法
1、我们先找到最小的数让其与第一个数交换得到num[1,10,2,8,3];
2、再从新的num里找到最大的数num[1],让其与最后一个数交换得到正确答案num[1,3,2,8,10];
AC代码C语言
#includestdio.h
#includemath.h
#includestring.h
void exchange(long num[12]){int max0;//最大数的下标int min0;//最小数的下标for(int i0;i10;i){if(num[i]num[max]) {maxi;}}long tmpnum[9];num[9]num[max];num[max]tmp;for(int i0;i10;i){if(num[i]num[min]) {mini;}}tmpnum[0];num[0]num[min];num[min]tmp;}
void input(long num[12]){for(int i0;i10;i){ scanf(%ld,num[i]);}
}
void output(long num[12]){for(int i0;i10;i){printf(%ld ,num[i]);} printf(\n);
}
int main(){//freopen(data.in.txt,r,stdin);long num[12];input(num);exchange(num);output(num); return 0;
}3、自定义函数之数字后移 题目描述
有n个整数使前面各数顺序向后移m个位置最后m个数变成前面m个数。写一函数实现以上功能在主函数中输入n个数和输出调整后的n个数。
输入格式
输入数据的个数n n个整数 移动的位置m
输出格式
移动后的n个数
样例输入
10
1 2 3 4 5 6 7 8 9 10
2样例输出
9 10 1 2 3 4 5 6 7 8AC代码C语言
#includestdio.h
#includestdlib.h
void moveNums(int num[105],int n,int m){int *tmp(int*)malloc(sizeof(int)*n);//相当于 int tmp[n];创建新的数组for(int i0;in;i){tmp[(im)%n]num[i];//将原来数组中的数字往后移动m位后放在新数组中}for(int i0;in;i){printf(%d ,tmp[i]);}
}int main(){//freopen(data.in.txt,r,stdin);int num[105];int n,m;scanf(%d,n);for(int i0;in;i){scanf(%d,num[i]);} scanf(%d,m);moveNums(num,n,m);return 0;
}4、自定义函数之字符串拷贝 题目描述
有一字符串包含n个字符。写一函数将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
输入格式
数字n 一行字符串 数字m
输出格式
从m开始的子串
样例输入
6
abcdef
3样例输出
cdefAC代码C语言
#includestdio.h
#includestdlib.h
void copyString(char *str,int n,int m){char *str1(char*)malloc(sizeof(char)*n);//相当于 char str1[n];int j0;for(int im-1;in;i){//将第m位后的字符复制到str1数组中str1[j]str[i];}puts(str1);
}int main(){//freopen(data.in.txt,r,stdin);char str[105];int n,m;scanf(%d%s%d,n,str,m);copyString(str,n,m);return 0;
}