实验四
task1
#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个内存字节单元。
#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]);
printf("\n");
}

① 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 = 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;
}


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

task4
#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 i=0,j,y,a[100]; do{ a[i]=x%n; switch(a[i]) { case 11:printf("%c",'A');break; case 12:printf("%c",'B');break; case 13:printf("%c",'C');break; case 14:printf("%c",'D');break; case 15:printf("%c",'E');break; case 16:printf("%c",'F');break; } x=x/n; i++; }while(x!=0); for(j=i-1;j>=0;j--) printf("%d",a[j]); printf("\n"); }

task5
#include<stdio.h>
int main()
{
int i,j,k,n;
printf("Enter n:");
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
k=i>j?j:i;
printf("%4d",k);
}
printf("\n");
}
}
return 0;
}

浙公网安备 33010602011771号