实验四
Part 1
运行结果如下:每个int 型数据分配4个字节,观察5个元素的地址可知,在内存中连续存放
第一次修改结果如下:每个char类型数据分配1个字节,可得出连续存放
第二次修改如下:每个double 类型数据分配8个字节,连续存放
Part 2
(1)
(2)经过了修改,更加简洁了
(3)省略了数组大小,由sizeof(a)/ sizeof(a[0])计算数组元素个数
其中sizeof(a[0])也可写成sizeof(int)
(4)部分元素初始化
观察到a[2],a[3],a[4]都为0,没有被初始化的元素系统会自动设为0,一些实际问题可应用,如投票问题
part 3
(1)数组元素作为函数实参
①
;
②
(2)数组名作为函数实参
注 在函数声明和声明中,init后面括号里的是形式参数,数组名后加[ ];
在函数调用中,是实际参数,直接写数组名
part 4 冒泡法对一组数据由小到大排序
Part 5
练习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); for(i=0;i<N;i++) scanf("%d",&a[i]); max=findMax(a,N); // 调用子函数max求数组a的最大元素值,并赋值给max // 补足程序2 // 输出最大值 printf("数组a中最大元素值为: %d\n\n", max); return 0; } 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; } // 函数定义 // 功能描述:找出整型数组a中元素的最大值,并返回次此最大值 // 补足函数findMax()的实现部分3
9
(2)
#include <stdio.h> const int N=4; void output(char x[], int n); void px(char x[],int n); int main() { char string[4] = {'2','0','1','9'}; int i; printf("排序前: \n"); output(string, N); // 调用排序函数对字符数组中的字符由大到小排序 px(string,N);// 补足代码2 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]); } // 函数定义 // 函数功能描述:对一组字符由大到小排序 // 形参:字符数组,以及字符数组元素个数 void px(char x[],int n) { int i,j; char temp; for(i=0;i<n;i++) {for(j=0;j<n-i-1;j++) { if(x[j]<x[j+1]) { temp=x[j]; x[j]=x[j+1]; x[j+1]=temp; } } } }