实验结论 part1~part4 ·数组本身不能作为参数传递给函数,且函数的返回值也不能是数组本身;数组可以说是与函数绝缘的;数组名本身并不代表数组,数组名代表一个与数组元素同类型的指针常量,它指向的位置为数组第一个元素的起始地址;当将数组名作为参数传递给函数时函数将这个指向数组第一个元素的起始地址的指针常量赋值给函数形参列表中的定义为与数组元素同类型的指针变量p;由此,p便可以指向数组中的第一个元素的首地址,函数便可以通过这个p来取用数组中的值;但是由于该变量p无法像真正的数组名一样得到数组长度,所以使用数组名作为参数传值给函数的同时,还要将数组的长度一并传给函数。 ·函数调用参数传递一般有三种方式,分别是有值传递、指针传递、引用传递。 当a是字符型数组时,在输出字符型数组元素a[i]时,把格式符由%d换成%c。 当a是double型数组时,在输出数组元素a[i]时,把格式符由%d换成%.2f。 ·冒泡法就是比较相邻两个数的大小后进行的排序。因为数组元素起始元素是1,所以对于边缘条件,抓住扫描第i次需要比较(n-1-i)次。
练习1 #include <stdio.h> int findMax(int a[], int n); // 函数声明 const int N=5; int main() { int a[N]; int max, i; printf("输入%d个整数: \n", N); // 利用循环输入N个整数给数组a for(i=0;i<N;i++) scanf("%d",&a[i]);// 补足程序1 // 。。。 max=findMax(a,N);// 调用子函数max求数组a的最大元素值,并赋值给max // 补足程序2 // 。。。 // 输出最大值 printf("数组a中最大元素值为: %d\n\n", max); return 0; } // 函数定义 // 功能描述:找出整型数组a中元素的最大值,并返回次此最大值 // 补足函数findMax()的实现部分3 // 。。。 int findMax(int a[],int n){ int i,max; max=a[0]; for(i=0;i<n;i++){ if(a[i]>max) max=a[i]; } return max; }
练习2 #include <stdio.h> const int N=4; void output(char x[], int n); // 函数声明 void bubblesort(char x[],int n);// 排序函数声明 // 补足代码1 // 。。。 int main() { char string[N] = {‘2‘,‘0‘,‘1‘,‘9‘}; int i; printf("排序前: \n"); output(string, N); // 调用排序函数对字符数组中的字符由大到小排序 // 补足代码2 // 。。。 bubblesort(string,N); printf("\n排序后: \n"); output(string, N); printf("\n"); return 0; } // 函数定义 // 函数功能描述:输出包含有n个元素的字符数组元素 // 形参:字符数组,以及字符数组元素个数 void output(char x[], int n) { int i; for(i=0; i<N; i++) printf("%c", x[i]); } // 函数定义 // 函数功能描述:对一组字符由大到小排序 // 形参:字符数组,以及字符数组元素个数 // 补足代码3 // 。。。 void bubblesort(char x[],int n){ int i,j; char t; for(i=0;i<n-1;i++){ for(j=0;j<n-1-i;j++){ if(x[j]<x[j+1]){ t=x[j]; x[j]=x[j+1]; x[j+1]=t; } } } }
实验总结
有些代码记不住,自己动手有点慢
原文:https://www.cnblogs.com/2717992341cjf/p/10771628.html