第四次实验~~

part1~pat4的实验结论:

首先通过这次实验我了解了数组的用法,也发现运用数组的便捷之处,会使表达更加简洁明了,后面使在这过程中我觉得需要注意的点:

1)  当对所有数组元素初始化的时候,可以省略数组大小不写;

2)当数组只初始化了一部分元素的时候,剩余没有被初始化的元素会被系统自动设为0;

3)  数组的下标从0开始,而不是1;

4)特别注意在数组名作为参数时,实参与形参的区别:

            作为形参时(即在函数定义与函数声明中):数组名后面要加【】,e.g. int(int a[] ,int n)

            作为实参时(即在函数调用中):直接写数组名就行,e.g. int(b, N, -1)

5)当要对一组数排序时,运用冒泡法;

     对于冒泡法:是对n个数进行排序,第一次对n个数进行扫描,比较n-1次并交换,然后最大的数排在第n个数,第二次对n-1个数进行扫描,比较n-2次并交换,其中最大的数排在第n-1个数那里,以此类推,成为冒泡法。边界条件则是按需得到的,初始值也是按需定义的,如这次编程练习中则要把最大的数放在第一位,所以比较时要从右往左推,把最大的数放在前面,这个东西需要练习与思考吧。

 

part 5 编程练习:

 

(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<5;i++)
        scanf("%d",&a[i]);
    max=findMax(a,4)    ;

    printf("数组a中最大元素值为: %d\n\n", max); 
        
    return 0;
    
} 
int findMax(int a[],int n){
    int i,t;
    for(i=1;i<n+1;i++){
        if(a[i]<a[i-1]){
            t=a[i-1];
            a[i-1]=a[i];

            a[i]=t;
        }
    }
    return a[n];
}

 

(2)

#include <stdio.h>
const int N=4;
void output(char x[], int n);
void bubblesort(char x[],int n);
 

int main() {
    char string[N] = {'2','0','1','9'};
    int i;
    
    printf("排序前: \n");
    output(string, N);
    bubblesort(string,N);
    
     
    
    printf("\n排序后: \n"); 
    output(string, N);
    
    printf("\n");
    
    return 0;    
} 


void bubblesort(char x[], int n) {
    int i,j,t;
    for(i=0;i<n-1;i++){
        for(j=n-i;j>=0;j--){
            if(x[j+1]>x[j]){
            t=x[j];
            x[j]=x[j+1];
            x[j+1]=t; 
        }
    }
        
    }
    
} 

void output(char x[],int n){
    int i;
    for(i=0;i<n;i++){
        printf("%c",x[i]);
    }
    
}

 

https://www.cnblogs.com/sfyq/p/10771283.html

https://www.cnblogs.com/rainbowhorse/p/10771596.html

https://www.cnblogs.com/QYAS/p/10770909.html

posted @ 2019-04-25 20:13  yzxyzx  阅读(144)  评论(0编辑  收藏  举报