实验四

实验结论

part1~part4

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

·函数调用参数传递一般有三种方式,分别是有值传递、指针传递、引用传递。

当a是字符型数组时,在输出字符型数组元素a[i]时,把格式符由%d换成%c。

当a是double型数组时,在输出数组元素a[i]时,把格式符由%d换成%.2f。

·冒泡法就是比较相邻两个数的大小后进行的排序。因为数组元素起始元素是1,所以对于边缘条件,抓住扫描第i次需要比较(n-1-i)次。

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<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/lvzixuan/p/10770350.html

https://www.cnblogs.com/ligengchen/p/10771412.html

https://www.cnblogs.com/silentisland/p/10771348.html