BluetoothKiBluetoothKi08-22 02:30

实验四

原文链接:http://www.cnblogs.com/tty-1999/p/10771130.html

part1-4:

1 数组名作为函数参数时,形参、实参的语法形式书写注意事项,函数调用和参数传递过程:

数组本身不能作为参数传递给函数,且函数的返回值也不能是数组本身;数组可以说是与函数绝缘的;
数组名本身并不代表数组,数组名代表一个与数组元素同类型的指针常量,它指向的位置为数组第一个元素的起始地址;
当将数组名作为参数传递给函数时函数将这个指向数组第一个元素的起始地址的指针常量赋值给函数形参列表中的定义为与数组元素同类型的指针变量p;由此,p便可以指向数组中的第一个元素的首地址,函数便可以通过这个p来取用数组中的值;
但是由于该变量p无法像真正的数组名一样得到数组长度,所以使用数组名作为参数传值给函数的同时,还要将数组的长度一并传给函数。

使用时要用 int arr[ ].

2 对冒泡法排序算法的理解,尤其是边界条件的理解和归纳总结:

冒泡排序法是先排序好最大的那个数字在数组最后面,再排倒数第二大的数字。。。以此类推。

这个可以很方便地将一堆数组排好序 方便整理

边界条件 我觉得和高中的流程差不多,自己草稿纸上写写就行。

part5;

①:

 1 // 功能描述:输入一组整数,输出最大值 
 2 #include <stdio.h>
 3 int findMax(int a[], int n); // 函数声明
 4 const int N=5;
 5 
 6 int main() {
 7     int a[N];
 8     int max, i;
 9     printf("输入%d个整数: \n", N);
10         for(i=0;i<N;i++)
11          scanf("%d",&a[i]);// 利用循环输入N个整数给数组a 
12     // 补足程序1 
13     // 。。。 
14          // 调用子函数max求数组a的最大元素值,并赋值给max 
15     // 补足程序2 
16     // 。。。 
17       max= findMax(a,N);
18     // 输出最大值
19       printf("数组a中最大元素值为:%d", max); 
20            return 0;
21 }
22 
23 // 函数定义
24 // 功能描述:找出整型数组a中元素的最大值,并返回次此最大值
25 // 补足函数findMax()的实现部分3 
26 // 。。。 
27  int findMax(int x[], int n ){
28        int i,max;
29         max=0 ;
30        for(i=1;i<5;i++)
31        {
32            if(x[i]>x[max])
33          max=i;
34            else
35            max=max;
36 }
37 return x[max];
38        }

总结:这节我觉得我好像学的不太好 做起程序发现好多自己没注意的小细节 比如比较赋值时只能数组和数组之间比较和赋值 下次要注意的。 第一个真的搞了好久 还以为要用冒泡法。

②:反向排序

 1 #include <stdio.h>
 2 const int N=4;
 3 void output(char x[], int n);  // 函数声明 
 4 // 排序函数声明
 5 // 补足代码1 
 6 // 。。。 
 7 
 8 int main() {
 9     char string[N] = {'2','0','1','9'};
10     int i;
11     printf("排序前: \n");
12     for(i=0;i<4;i++) 
13     printf("%c", string[i]);
14     printf("\n");
15     // 调用排序函数对字符数组中的字符由大到小排序 
16     // 补足代码2 
17     // 。。。 
18     printf("\n排序后: \n"); 
19     output(string, N);
20     for(i=0; i<4; i++)
21     printf("%c",string[i]);
22     printf("\n");
23     
24     return 0;    
25 } 
26 
27 // 函数定义
28 // 函数功能描述:输出包含有n个元素的字符数组元素
29 // 形参:字符数组,以及字符数组元素个数
30 void output(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 } 
42 
43 // 函数定义
44 // 函数功能描述:对一组字符由大到小排序
45 // 形参:字符数组,以及字符数组元素个数
46 // 补足代码3 
47 // 。。。 

总结:第二次比第一个好多了 显然得心应手了 我把老师给的框架删了一点 运行出来还是对的。哈哈哈哈。

互评:①:https://www.cnblogs.com/mjc217/p/10771742.html

②:https://www.cnblogs.com/kzt1121/p/10770444.html

③:https://www.cnblogs.com/qwer9107/p/10771274.html

转载于:https://www.cnblogs.com/tty-1999/p/10771130.html

程序之家二维码

000
评论