实验四
Part 1:
1 #include <stdio.h> 2 const int N=5; 3 int main() { 4 int a[N] = {1, 2, 3, 4, 5}; 5 int i; 6 for(i=0; i<N; i++) 7 printf("%d: %d\n", &a[i], a[i]); 8 return 0; 9 }

(1)
1 #include <stdio.h> 2 const int N=5; 3 int main() { 4 char a[5] = {'h','e','l','l','o'}; 5 int i; 6 for(i=0; i<N; i++) 7 printf("%d: %c\n", &a[i], a[i]); 8 return 0; 9 }

(2)
1 #include <stdio.h> 2 const int N=5; 3 int main() { 4 double a[5] = {1.0, 2.0, 3.0, 4.0, 5.0}; 5 int i; 6 for(i=0; i<N; i++) 7 printf("%d: %.2f\n", &a[i], a[i]); 8 return 0; 9 }

Part 2:
1 #include <stdio.h> 2 int main() { 3 int a[5]; 4 a[0] = 1; 5 a[1] = 9; 6 a[2] = 8; 7 a[3] = 6; 8 a[4] = 0; 9 printf("a[0] = %d\n", a[0]); 10 printf("a[1] = %d\n", a[1]); 11 printf("a[2] = %d\n", a[2]); 12 printf("a[3] = %d\n", a[3]); 13 printf("a[4] = %d\n", a[4]); 14 return 0; 15 }

(1)
1 #include <stdio.h> 2 int main() { 3 int a[5] = {1, 9, 8, 6, 0}; 4 int i; 5 for(i=0; i<5; i++) 6 printf("a[%d] = %d\n", i, a[i]); 7 return 0; 8 }

(2)
1 #include <stdio.h> 2 int main() { 3 int a[] = {1, 9, 8, 6, 0}; 4 int i,n; 5 n = sizeof(a) / sizeof(a[0]); 6 for(i=0; i<n; i++) 7 printf("a[%d] = %d\n", i, a[i]); 8 return 0; 9 }

(3)
1 #include <stdio.h> 2 int main() { 3 int a[5] = {1, 9}; 4 int i; 5 for(i=0; i<5; i++) 6 printf("a[%d] = %d\n", i, a[i]); 7 return 0; 8 }

Part 3:
1 #include <stdio.h> 2 const int N=5; 3 int main() { 4 int score[N] = {99, 82, 88, 97, 85}; 5 int i; 6 for(i=0; i<N; i++) 7 printf("%d ",score[i]); 8 return 0; 9 }

(1)
1 #include <stdio.h> 2 const int N=5; 3 void print(int x); 4 int main() { 5 int score[N] = {99, 82, 88, 97, 85}; 6 int i; 7 for(i=0; i<N; i++) 8 print(score[i]); 9 printf("\n"); 10 return 0; 11 } 12 void print(int x) { 13 printf("%d ", x); 14 }

(2)
1 #include <stdio.h> 2 const int N=5; 3 void init(int a[],int n, int value); 4 int main() { 5 int b[N],i; 6 init(b,N,-1); 7 for(i=0;i<N;i++) 8 printf("%3d",b[i]); 9 return 0; 10 } 11 void init(int a[], int n, int value) { 12 int i; 13 for(i=0;i<n;i++) 14 a[i] = value; 15 }

Part 4:
1 #include <stdio.h> 2 const int N=5; 3 void bubbleSort( int [], int); 4 int main() { 5 int i,a[N]; 6 printf("请输入%d个整型数据: \n", N); 7 for(i=0; i<N; i++) 8 scanf("%d",&a[i]); 9 printf("排序前的数据: \n"); 10 for(i=0; i<N; i++) 11 printf("%d ",a[i]); 12 printf("\n"); 13 bubbleSort(a,N); 14 printf("排序后的数据: \n"); 15 for(i=0; i<N; i++) 16 printf("%d ",a[i]); 17 printf("\n"); 18 return 0; 19 } 20 void bubbleSort( int x[], int n) { 21 int i,j,t; 22 for (i=0; i<n-1; i++) { 23 for(j=0; j<n-1-i; j++) { 24 if( x[j] > x[j+1] ) { 25 t = x[j]; 26 x[j] = x[j+1]; 27 x[j+1] = t; 28 } 29 } 30 } 31 }

Part 5:
(1)
1 #include <stdio.h> 2 int findMax(int a[], int n); 3 const int N=5; 4 int main() { 5 int a[N]; 6 int max, i; 7 printf("输入%d个整数: \n", N); 8 for (i=0;i<N;i++) 9 scanf("%d",&a[i]); 10 max=findMax(a,N); 11 printf("数组a中最大元素值为: %d\n\n", max); 12 return 0; 13 } 14 int findMax(int a[],int n) 15 { 16 int i,j,max; 17 max=a[0]; 18 for(i=0;i<N;i++) 19 { 20 if(a[i]>max) 21 max=a[i]; 22 23 } 24 return max; 25 }

(2)
1 #include <stdio.h> 2 const int N=4; 3 void output(char x[], int n); 4 void sort(char x[],int n); 5 int main() { 6 char string[N] = {'2','0','1','9'}; 7 int i; 8 9 printf("排序前: \n"); 10 output(string, N); 11 12 printf("\n"); 13 sort(string,N); 14 15 printf("\n排序后: \n"); 16 output(string, N); 17 18 printf("\n"); 19 20 return 0; 21 } 22 23 void output(char x[], int n) { 24 int i; 25 26 for(i=0; i<N; i++) 27 printf("%c", x[i]); 28 } 29 30 void sort(char x[], int n){ 31 int i,j,t; 32 for (i=0; i<n-1; i++) { 33 for(j=0; j<n-1-i; j++) { 34 if( x[j] < x[j+1] ) { 35 t = x[j]; 36 x[j] = x[j+1]; 37 x[j+1] = t; 38 } 39 } 40 } 41 }

实验总结与体会:
如果要让数组名作为形参,必须写成(int array[])的形式,或者(int * array)
会写着写着就忘掉{},以及加分号不加分号,还有必须时刻去看程序语言才能写下去…还是菜吧
1.数组名作为函数参数时,形参、实参的语法形式书写注意事项:
函数声明和函数定义中,函数名init后面括号里出现的是形式参数,数组名后面要加[ ]。
即:void init(int a[], int n, int value);
函数调用中,函数名init后面括号里出现的是实际参数,直接写数组名。
即:init(b, N, -1);
2.函数调用和参数传递过程

3.对冒泡法排序算法的理解,尤其是边界条件的理解和归纳总结:
冒泡法的算法思想:
把一组数据中相邻的两个数进行比较,较大的数放到后面。
这样,经过一轮以后,最大的数就放到了最后。
把剩余的数,再进行两两比较,经过第2轮后,第2大的数就放到了倒数第二的位置。
边界条件的理解和归纳总结:
用冒泡法对n个数小→大排序,共需扫描(n-1)遍,第i遍扫描时需要比较(n-i)次。
4.c语言支持在对数组初始化时,只初始化一部分元素。这种情形下,剩余没有被初始化的元素值,系统自动设为0。
5.sizeof是c语言中的运算符,用于计算数据占用的字节数。表达式sizeof(a) / sizeof(a[0])用于计算数组元素的个数。其中:
sizeof(a)计算数组a占用的总的字节数
sizeof(a[0])计算数组元素a[0]占用的字节数
由于数组中元素类型相同,每一个元素占用的字节数都是相同的。所以,这样就可以计算出一共有多少个元素。
同理,使用sizeof(a)/sizeof(int)也可以。因为这里每一个数组元素是int型,sieof(int)计算出一个int型数据占用的字节数。
6.const:以这个为例const int i=100;
这表示i的值不能被改变,也就是常变量,如果你在程序中再给i赋值,比如i=200;
这就会报错。也可用在函数上,格式:int sort(int ,int) const{}
用处:让不想改变的变量不被无意或有意的改变
这就会报错。也可用在函数上,格式:int sort(int ,int) const{}
用处:让不想改变的变量不被无意或有意的改变
(上源网络)
0
浙公网安备 33010602011771号