实验4 数组
task1_1
1 #include<stdio.h> 2 #define N 4 3 4 int main() 5 { 6 int a[N]={2,0,2,2}; 7 char b[N]={'2','0','2','2'}; 8 int i; 9 10 printf("sizeof(int)=%d\n",sizeof(int)); 11 printf("sizeof(char)=%d\n",sizeof(char)); 12 printf("\n"); 13 14 for(i=0;i<N;++i) 15 { 16 printf("%p:%d\n",&a[i],a[i]); 17 } 18 19 printf("\n"); 20 21 for(i=0;i<N;++i) 22 { 23 printf("%p:%c\n",&b[i],b[i]); 24 } 25 26 printf("\n"); 27 28 printf("a=%p\n",a); 29 printf("b=%p\n",b); 30 31 return 0; 32 }

1.连续存放,每个元素占4个内存字节单位
2.连续存放,每个元素占1个内存字节单位
3.一样,一样
task1_2
1 #include<stdio.h> 2 #define N 2 3 #define M 3 4 5 int main() 6 { 7 int a[N][M]={{1,2,3},{4,5,6}}; 8 char b[N][M]={{'1','2','3'},{'4','5','6'}}; 9 int i,j; 10 11 for(i=0;i<N;++i) 12 for(j=0;j<M;++j) 13 printf("%p:%d\n",&a[i][j],a[i][j]); 14 15 printf("\n"); 16 17 for(i=0;i<N;++i) 18 for(j=0;j<M;++j) 19 printf("%p:%c\n",&b[i][j],b[i][j]); 20 21 return 0; 22 }

1.按行连续存放,4
2.按行连续存放,1
task2
1 #include<stdio.h> 2 3 int days_of_year(int year,int month,int day); 4 5 int main() 6 { 7 int year,month,day;int days; 8 9 while(scanf("%d%d%d",&year,&month,&day)!=EOF) 10 { 11 days=days_of_year(year,month,day); 12 printf("%4d-%02d-%02d是这一年的第%d天.\n\n",year,month,day,days); 13 } 14 15 return 0; 16 } 17 18 int days_of_year(int year,int month,int day) 19 { 20 int i,days=0; 21 int mon[12]={0,31,28,31,30,31,30,31,31,30,31,30}; 22 for(i=1;i<month;i++) 23 { 24 if((year%4==0)&&(year%100!=0)||year%400==0) 25 { 26 mon[2]++; 27 } 28 days+=mon[i]; 29 } 30 days+=day; 31 return days; 32 }

task3
1 #include<stdio.h> 2 #define N 5 3 4 void input(int x[],int n); 5 void output(int x[],int n); 6 double average(int x[],int n); 7 void sort(int x[],int n); 8 9 int main() 10 { 11 int scores[N]; 12 double ave; 13 14 printf("录入%d个分数:\n",N); 15 input(scores,N); 16 17 printf("\n输出课程分数:\n"); 18 output(scores,N); 19 20 printf("\n课程分数处理:计算均分、排序...\n"); 21 ave=average(scores,N); 22 sort(scores,N); 23 24 printf("\n输出课程均分:%.2f\n",ave); 25 printf("\n输出课程分数(高—>低):\n"); 26 output(scores,N); 27 28 return 0; 29 } 30 31 void input(int x[],int n) 32 { 33 int i; 34 for(i=0;i<n;++i) 35 scanf("%d",&x[i]); 36 } 37 38 void output(int x[],int n) 39 { 40 int i; 41 for(i=0;i<n;++i) 42 printf("%d ",x[i]); 43 44 printf("\n"); 45 } 46 47 double average(int x[],int n) 48 { 49 int sum=0,i;double s; 50 for(i=0;i<n;++i) 51 { 52 sum+=x[i]; 53 } 54 s=1.0*sum/n; 55 return s; 56 } 57 58 void sort(int x[],int n) 59 { 60 int i,j,k; 61 for(i=0;i<n;++i) 62 { 63 for(j=0;j<i;j++) 64 { 65 if(x[i]>x[j]) 66 { 67 k=x[i]; 68 x[i]=x[j]; 69 x[j]=k; 70 } 71 } 72 } 73 }

task4
1 #include<stdio.h> 2 3 void dec2n(int x,int n); 4 5 int main() 6 { 7 int x; 8 9 printf("输入一个十进制整数:"); 10 scanf("%d",&x); 11 12 dec2n(x,2); 13 printf("\n"); 14 dec2n(x,8); 15 printf("\n"); 16 dec2n(x,16); 17 printf("\n"); 18 19 return 0; 20 } 21 22 void dec2n(int x,int n) 23 { 24 int a,b;char m[16]={"0123456789ABCDEF"}; 25 a=x/n; 26 b=x%n; 27 if(a==0) 28 { 29 printf("%c",m[b]); 30 } 31 else 32 { 33 dec2n(a,n); 34 printf("%c",m[b]); 35 } 36 }


task5
1 #include<stdio.h> 2 3 void ulmatrix(int n); 4 5 int main() 6 { 7 int n;int a[n][n]; 8 printf("Enter n: "); 9 while(scanf("%d",&n)!=EOF) 10 { 11 ulmatrix(n); 12 printf("\nEnter n: "); 13 } 14 15 return 0; 16 } 17 18 void ulmatrix(int n) 19 { 20 int i,j,a[n][n]; 21 for(i=0;i<n;i++) 22 { 23 for(j=0;j<n;j++) 24 { 25 if(i<=j) 26 { 27 a[i][j]=i+1; 28 } 29 else 30 { 31 a[i][j]=j+1; 32 } 33 printf("%d ",a[i][j]); 34 } 35 printf("\n"); 36 } 37 }

task6
1 #include<stdio.h> 2 #define N 80 3 4 int main() 5 { 6 char views1[N]="hey,c,i hate u."; 7 char views2[N]="hey,c,i love u."; 8 char view[N];int i=0; 9 10 printf("original views:\n"); 11 printf("views1: %s\n",views1); 12 printf("views2: %s\n",views2); 13 14 for(i=0;i<N;i++) 15 { 16 view[i]=views1[i]; 17 views1[i]=views2[i]; 18 views2[i]=view[i]; 19 } 20 21 printf("\nswapping...\n\n"); 22 printf("views1: %s\n",views1); 23 printf("views2: %s\n",views2); 24 25 return 0; 26 }

task7
1 #include<stdio.h> 2 #include<string.h> 3 4 #define N 5 5 #define M 20 6 7 void bubble_sort(char str[][M],int n); 8 9 int main() 10 { 11 char name[][M]={"Bob","Bill","Joseph","Taylor","George"}; 12 int i; 13 14 printf("输入初始名单:\n"); 15 for(i=0;i<N;i++) 16 printf("%s\n",name[i]); 17 18 printf("\n排列中...\n"); 19 bubble_sort(name,N); 20 21 printf("\n按字典序输出名单:\n"); 22 for(i=0;i<N;i++) 23 printf("%s\n",name[i]); 24 25 return 0; 26 } 27 28 void bubble_sort(char str[][M],int n) 29 { 30 int i,j;char mid[M]; 31 for(i=0;i<N;i++) 32 { 33 for(j=0;j<i;j++) 34 { 35 if(strcmp(str[j],str[j+1])>0) 36 { 37 strcpy(mid,str[j]); 38 strcpy(str[j],str[j+1]); 39 strcpy(str[j+1],mid); 40 } 41 } 42 } 43 }

浙公网安备 33010602011771号