范腾

博客园 首页 联系 订阅 管理

实验结论

Part 1

数组将类型相同的一组数据在内存中连续存放,由实验可看出数组中元素的内存地址是连续的,不同类型数据计算机为其分配的内存空间是不同的。

Part 2

定义一维数组a,须指明它包含的元素个数和元素类型,通过数组名和下标的形式引入数组元素,数组下标从0开始,当对所有元素进行初始化时可以省略数组大小,当只初始化一部分元素时剩余没有被初始化的元素值,系统自动设为0。

Part 3

函数名作为参数时,实参和形参的书写形式
函数声明和函数定义中,函数名init后面括号里出现的是形式参数,数组名后面要加[ ]。即:void init(int a[], int n, int value);
函数调用中,函数名init后面括号里出现的是实际参数,直接写数组名。即:init(b, N, -1);

Part 4

冒泡法对一组数据由小到大排序:把一组数据中相邻的两个数进行比较,较大的数放到后面。这样,经过一轮以后,最大的数就放到了最后。把剩余的数,再进行两两比较,经过第2轮后,第2大的数就放到了倒数第二的位置。接下来,做类似操作。若是由大到小排序类似,反过来就可以了。

用冒泡法对n个数小→大排序,
共需扫描(n-1)遍,第i遍扫描时需要比较(n-i)次

但在程序中略有不同:for(j=0; j<n-1-i; j++)  这是由于数组下标从0开始造成的

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 
11     max=findMax(a,N);
12   
13 
14 
15 printf("数组a中最大元素值为: %d\n\n", max);
16 return 0;
17 }
18 int findMax(int a[],int n){
19     int i,j,t,max;
20     for(i=0;i<n-1;i++){
21         if(a[i]>a[i+1]){
22             t=a[i+1];
23             a[i+1]=a[i];
24             max=a[i+1];
25         }
26     }
27     return max;
28 }

练习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 printf("排序前: \n");
 9 output(string, N);
10 sort(string,N);
11 printf("\n排序后: \n");
12 output(string, N);
13 printf("\n");
14 return 0;
15 }
16 
17 void output(char x[], int n) {
18 int i;
19 for(i=0; i<N; i++)
20 printf("%c", x[i]);
21 }
22 
23 void sort(char x[],int n){
24     char i,j,t;
25     for(i=0;i<n-1;i++){
26         for(j=0;j<n-1-i;j++){
27             if(x[j]<x[j+1]){
28                 t=x[j];
29                 x[j]=x[j+1];
30                 x[j+1]=t;
31             }
32         }
33     }
34     
35 }

实验总结与体会

对函数定义调用有了一定的理解,稍有掌握,但综合应用欠缺,具体编程问题很多,要勤加联系一一克服。

posted on 2019-04-25 21:19  范腾  阅读(109)  评论(0编辑  收藏  举报