实验四 数组

 实验任务1.1

#include<stdio.h>
    const int N=4;
int main()
{

    int a[4]={2,0,2,1};
    char b[4]={'2','0','1','1'};
    int i;
    
    printf("sizeof(int)=%d\n",sizeof(int));
    printf("sizeof(char)=%d\n",sizeof(char));
    printf("\n");
    
    for(i=0;i<N;++i)
    {
        printf("%x:%d\n",&a[i],a[i]);
    }
    
    printf("\n");
    for(i=0;i<N;++i)
    {
        printf("%x:%c\n",&b[i],b[i]);
    }
    return 0;
}

 

int型数组a,在内存中不是连续存放的,占用4个

char型数组b,在内存中是连续存放的,占用1个

 

实验任务1.2

#include<stdio.h>

int main()
{
    int a[2][3]={{1,2,3},{4,5,6}};
    char b[2][3]={{'1','2','3'},{'4','5','6'}};
    int i,j;
    
    for(i=0;i<2;++i)
    {
        for(j=0;j<3;++j)
        {
            printf("%x:%d\n",&a[i][j],a[i][j]);
        }
    }
    printf("\n");
    
    for(i=0;i<2;++i)
    {
        for(j=0;j<3;++j)
        {
            printf("%x:%d\n",&b[i][j],b[i][j]);
        }
    }
    return 0;
}

 

int型二维数组a,在内存中不是按行连续存放的,每个元素占用4个内存字节单元

char型二维数组b,在内存中是按行连续存放的,每个元素占用1个内存字节单元

 

实验任务2

#include<stdio.h>
#define N 1000
int fun(int n,int m,int bb[N])
{
    int i,j,k=0,flag;
    
    for(j=n;j<=m;j++)
    {
        flag=1;
        for(i=2;i<j;i++)
        {
            if(j%i==0)
            {
                flag=0;
                break;
            }
        }
        if(flag==1)
        {
            bb[k++]=j;
        }
    }
    return k;
}
int main()
{
    int n=0,m=0,i,k,bb[N];
    
    scanf("%d",&n);
    scanf("%d",&m);
    
    for(i=0;i<m-n;i++)
    {
        bb[i]=0;
    }
    k=fun(n,m,bb);
    
    for(i=0;i<k;i++)
    {
        printf("%4d",bb[i]);
    }
    return 0;
}

 

 

 实验任务3

#include<stdio.h>
const int N=5;
int find_max(int x[],int n);
void input(int x[],int n);
void output(int x[],int n);

int main()
{
    int a[N];
    int max;
    
    input(a,N);
    output(a,N);
    max=find_max(a,N);
    
    printf("max=%d\n",max);
    return 0;
    
}

void input(int x[],int n)
{
    int i;
    
    for(i=0;i<n;++i)
        scanf("%d",&x[i]);
    
}
void output(int x[],int n)
{
    int i;
    
    for(i=0;i<n;++i)
        printf("%d ",x[i]);
    printf("\n");
}
int find_max(int x[],int n)
{
    int j,k;
    for(j=0;j<n;j++)
    {
        if(x[j]<x[j+1])
        {
            x[0]=x[j+1];
        }
    }
    return x[0];
}

 

 实验任务4

#include<stdio.h>
void dec2n(int x,int n);
int main()
{
    int x;
    
    printf("输入一个十进制整数:");
    scanf("%d",&x);
    
    dec2n(x,2);
    dec2n(x,8);
    dec2n(x,16);
    
    return 0; 
}

void dec2n(int x,int n)
{
    int left[100];
    int i,j;
    int m,k;
    for(i=0;i<100;i++)
    {
        m=x%n;
        
        if(x!=0)
        {
            left[i]=m;
        }
        else
            break;
        x=x/n;    
    }
    for(j=i-1;j>=0;j--)
    {
        if(left[j]>=10)
        {
            switch(left[j])
            {
                case 10:printf("A");break;
                case 11:printf("B");break;
                case 12:printf("C");break;
                case 13:printf("D");break;
                case 14:printf("E");break;
                case 15:printf("F");break;
            }    
        }
        else
        printf("%d",left[j]);
    }
    printf("\n");

    
}

 

 

 

实验任务5

#include<stdio.h>
const int N=20;
int main()
{
    int n;
    int num[N][N];
    int i,j,k,m;
    printf("Enter n:");
    while(scanf("%d",&n)!=EOF)
    {
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                k=i>j?j:i;
                num[i][j]=k+1;
            }
        }
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                printf("%d ",num[i][j]);
            }
            printf("\n");
        }
        printf("\n\nEnter n:");
    }
}

 

posted @ 2021-12-01 21:14  波叶海菜花  阅读(26)  评论(0)    收藏  举报