实验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 }

 

 

posted @ 2022-05-06 17:22  yuki丶丶  阅读(40)  评论(2)    收藏  举报