实验四

1.

#include<stdio.h>
const int N=4;
int main()
{
    int a[N]={2,0,2,1};
    char b[N]={'2','o','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 和char数组都是连续存放的,一个int占4个字节,一个char占1个字节

 

#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:%c\n",&b[i][j],b[i][j]);
        
}

 

 

 ①int二维数组是连续存放的,占4个

②char二维数组是连续存放的,占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++) { if(j==1) bb[k++]=j; for(i=2;i<j;i++) if(j%i==0){ flag=0; break; } if(i==j) 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 i,t;
    for(i=0;i<n;i++){
        if(x[i]<=x[i+1]){
            continue;
        }
        else{
            t=x[i];
            x[i]=x[i+1];
            x[i+1]=t;
        }
    }
    return x[i];
}

 

 

 

 

 

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 a[10000];
    char b[10000];
    int i;
    for(i=0;i<10000;i++){
        a[i]=x%n;
        if(a[i]>9){
            switch(a[i]){
            case 10:b[i]='A';break;
            case 11:b[i]='B';break;
            case 12:b[i]='C';break;
            case 13:b[i]='D';break;
            case 14:b[i]='E';break;
            case 15:b[i]='F';break;
            }
        }
        else{
            b[i]=a[i]+'0';
        }
        x=x/n;
        if(x==0){
            break;
        }
    }
    
    for(i;i>=0;i--){
        printf("%c",b[i]);
    }
    printf("\n");

}

 

 

 

 

 

5.

#include<stdio.h>

int main()
{
    int a[100][100];
    int i,j,n;
    printf("Enter n:");
    while(scanf("%d",&n)!=EOF)
    {
        for(i=0;i<n;i++){
            for(j=i;j<n;j++){
                a[i][j]=i+1;
                a[j][i]=i+1;
            }
        }
        for(int z=0;z<n;z++){
            for(int x=0;x<n;x++){
                printf("%d ",a[z][x]);
                
            }
            printf("\n");
            
        }
            
        printf("Enter n:");    
    }
    return 0;
    
}

 

 

总结:

学习运用了一维 二维数组,它的存放,占用字节数等

任务四16进制转换要同时输出数字和字母,最后要保存到字符类型的数组中。

posted @ 2021-12-03 15:36  gfygfy  阅读(39)  评论(0编辑  收藏  举报