实验四

Part 1.

#include<stdio.h>
const  int N=5;
int main(){
    int a[N]={1,2,3,4,5};
    int i;
    for(i=0;i<5;i++)
    printf("%d:%d\n",&a[i],a[i]);
    return 0;
} 

#include<stdio.h>
const  int N=5;
int main(){
    char a[N]={'g','h','j','k','l'};
    int i;
    for(i=0;i<5;i++)
    printf("%d:%c\n",&a[i],a[i]);
    return 0;
} 

#include<stdio.h>
const  int N=5;
int main(){
    double a[N]={1.0,2.0,3.0,4.0,5.0};
    int i;
    for(i=0;i<5;i++)
    printf("%d:%lf\n",&a[i],a[i]);
    return 0;
} 

#include<stdio.h>
int main(){
    const int N=5;
    int a[N]={1,9,8,6,0};    //记得加分号 
    int i;
    for(i=0;i<5;i++)
    printf("a[%d]=%d\n",i,a[i]);
    return 0; 
}

Part 2.数组初始化

#include<stdio.h>
int main(){
    int a[]={1,9,8,6,0};  //只有对所有元素初始化的时候,才能不写数组大小    
    int i,n,m;
    n=sizeof(a);   //变量a所占的一共的字节数 ,20
    m=sizeof(int); //整型变量所占字节数,4 
    printf("%d,%d\n",n,m);
    for(i=0;i<5;i++)
    printf("a[%d]=%d\n",i,a[i]);
    return 0; 
}

#include<stdio.h>
int main(){
    int a[5]={1,9};    //初始化部分元素得写数组大小,其他系统自动赋值为0 
    int i;     
    for(i=0;i<5;i++)
    printf("a[%d]=%d\n",i,a[i]);
    return 0; 
}

Part 3.

数组做函数参数

#include<stdio.h>
const int N=5;
void printf(int x);    //函数声明加分号
int main(){
    int score[N]={89, 77, 85, 94, 69};
    int i;
    for(i=0;i<5;i++)
    printf(score[i]);
    printf("\n");
    return 0;
} 
    void printf(int x){
    printf("%d ",x);   //这多了个空格而已    
    }

数组名做函数参数

#include<stdio.h>
const int N=5;
void init(int a[],int n,int value);
int main(){
    int b[N],i;
    init(b,N,-1);  //函数调用,实际参数,直接写数组名不加[] 
    for(i=0;i<N;i++)
    printf("%3d",b[i]);
    return 0;
} 
void init(int a[],int n,int value){
    int i;
    for(i=0;i<n;i++)
    a[i]=value;
}

函数名做参数,函数定义与说明中是形式参数,需要加[ ],而函数调用中是实际参数,不用加[ ]。

Part 4.冒泡法排大小

#include<stdio.h>
const int N=5;
void bubblesort(int [],int n);
int main(){
    int i,a[N];
    printf("请输入%d个数据:\n",N);
    for(i=0;i<N;i++)
    scanf("%d",&a[i]);
    printf("排序前的数据:\n");
    for(i=0;i<N;i++)
    printf("%d ",a[i]);
    printf("\n");
    bubblesort(a,N);
    printf("排序后的数据:\n");
    for(i=0;i<N;i++)
    printf("%d ",a[i]);
    printf("\n");
    printf("\n");
    return 0;
} 
void bubblesort(int x[],int n){
    int i,j,t;
    for(i=0;i<n-1;i++){
        for(j=0;j<n-1-i;j++){
            if(x[j]>x[j+1]){
                t=x[j];
                x[j]=x[j+1];
                x[j+1]=t;
            }
        }
    }
}

Part 5.补足程序

int main(){
    int b[N];
    int max,i;
    printf("输入%d个数据:\n",N);
    for(i=0;i<N;i++)
    scanf("%d",&b[i]);
    max=findmax(b,N);   //要写max=呀 
    printf("数组中最大值为:%d\n",max);
    return 0;
} 
int findmax(int a[],int n){
    int i,max;
    max=a[0];
    for(i=1;i<n;i++){
        if(a[i]>max)
        max=a[i];
        max=max;
    }
    return max;

#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);
    printf("\n");
    bubblesort(string,N);
    printf("排序后:\n");
    output(string,N);
    return 0;
} 
void output(char x[],int n){
    int i;
    for(i=0;i<N;i++)
    printf("%c",x[i]);
}
void bubblesort(char x[],int n){
    int i,j;
    char t;
    for(i=0;i<n-1;i++){
        for(j=0;j<n-1-i;j++){
            if(x[j]<x[j+1]){
                t=x[j];
            x[j]=x[j+1];
            x[j+1]=t;
            }
        }
        
    }
}

这里的1234加上了'  '就是代表这是ASC码值,而不是数字。

实验体会:

自己有一些基础知识还是不牢固

自己做总是会错,得对比同学的才能发现自己觉得错误

 

posted @ 2019-04-25 22:20  咯嘣儿  阅读(94)  评论(0编辑  收藏  举报