实验四

task1-1

#include <stdio.h>
const int N = 4;

int main()
{
    int a[N] = {2,0,2,1};
    char b[N] = {'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个

 

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

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

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

 

task2

#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 = 2;
            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;
}

 

task3

#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=0;
    for(i=0;i<n;++i)
    {
        if(x[i]>t)
            t=x[i];
        else
            t=t;
    }
    return t;
}

 

task 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,b,c[100];
    int i,j;
    
        for(i=0;i<100;i++)
        {
            a=x%n;
            if(x!=0)
                c[i]=a;
                
            else
                break;
                
            x=x/n;        
        }
            
        for(j=i-1;j>=0;j--)    
        {
            if(c[j]>=10)
            {
              switch(c[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",c[j]);    
        }
        printf("\n");
        
    
}

 

 

task5

#include <stdio.h>
#define N 100
int main()
{
    int n,i,j;
    int a[N][N];
    
    printf("Enter n:");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            if(i<=j)
                a[i][j]=i;
            else
                a[i][j]=j;    
            
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)        
            printf("%d ",a[i][j]);
            printf("\n");
    }
    
    return 0;        
    
}

 

 

 

posted @ 2021-12-05 14:47  周杨0532  阅读(32)  评论(2)    收藏  举报