实验四
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进制转换要同时输出数字和字母,最后要保存到字符类型的数组中。