首页
登录 | 注册

实验4(2019.4.23)

【实验结论】

一、对Part1-Part4的总结。

1、数组名作为函数参数时,形参、实参的语法形式书写注意事项。

这一点在书本上P154—P158有详细说明,但是叙述过于冗杂,所以借用“实验4.pdf”中的内容总结:

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

2、对冒泡法的归纳总结。

冒泡法,用于排序,其基本算法就是把一组数据中的相邻两数进行比较,将大数放后,小数放前,(当然也可以反过来),至于其原理,我就把demo4.cpp中函数调用的部分拿出来分析一下。

限于代码框的大小,直接放图。

实验4(2019.4.23)

对每条语句逐一注释了一下,理解得清楚点。(如果注错了希望大家批评指正)

注意边界条件(两个for循环语句的条件),因为数组中第一个元素为a[0]而非a[1]。

把老师在"实验4.pdf"中的注拿出来提醒一下:

建议在纸上按照冒泡排序思路,对一组数据写下排序中间过程,这样对冒泡排序的理解会更容易些。

二、Part5:编程练习。

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);
    printf("数组a中最大元素值为: %d\n\n", max);     
    return 0;
} 

int findMax(int a[],int n){
    int i,j,max;
    max=a[0];
    for(i=0;i<N;i++){
        if(a[i]>max){
            max=a[i];
        } 
    }
    return max;
}

运行结果:

实验4(2019.4.23)

思路:此题不需要使用冒泡法,因为不需要排序,只需要通过循环语句找出这堆数的最大值就ok了。

所以,寻找最大数的核心代码,即findMax函数的主代码就很容易写出来了:

for(i=0;i<N;i++){
        if(a[i]>max){
            max=a[i];
        } 
    }

然后,事情就变得简单了起来。

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 } 

运行结果如下:

实验4(2019.4.23)

思路:用冒泡法。无非就是把demo4.cpp中的大于号改成小于号,因为这里要求从大到小排序而不是从小到大排序。

 【实验总结与体会】

通过这次实验,加深了我对数组的基本知识和冒泡法的理解,但对含数组的函数定义与调用理解还不透彻,今后得反复练习实验掌握。


相关文章

  • 实验四实验报告
    实验结论 Part 1 数组将类型相同的一组数据在内存中连续存放,由实验可看出数组中元素的内存地址是连续的,不同类型数据计算机为其分配的内存空间是不同的. Part 2 定义一维数组a,须指明它包含的元素个数和元素类型,通过数组名和下标的形 ...
  • 第四次上机实验
    实验结论: part 1-4:当数组名作为形式参数时,数组名后面要加[ ]:当数组名作为实际参数时,直接写数组名,后面不要加[ ]:              关于函数的调用及参数传递过程:在程序运行到函数调用这一步骤时,实参会将值赋值给调 ...
  • 实验四(数组)
    实验的总结: int型和float型都用4个字节,char型用一个字节,double型用8个字节.但是在输出5.00和5.000000的时候都没有区别的. 还有就是要注意数组元素的索引号是从零开始的,所以在用for语句的时候<注意它的 ...
  • 实验4
    Part1: #include <stdio.h> const int N=5; int main() { int a[N] = {1, 2, 3, 4, 5}; int i; for(i=0; i<N; i++) pri ...
  • 实验四
    Part1 #include <stdio.h> int main() { double a[5] = {1.0,2.0,3.0,4.0,5.0}; int i; for(i=0; i<5; i++) printf(&qu ...

2019 cecdns.com webmaster#cecdns.com
12 q. 0.076 s.
京ICP备10005923号