实验四

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{}
用处:让不想改变的变量不被无意或有意的改变
 (上源网络)

posted @ 2019-04-25 22:41  Verano  阅读(126)  评论(0)    收藏  举报