实验4 数组

四、实验结论:

1、task1_1.c

 

 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         printf("%p: %d\n",&a[i],a[i]);
16     
17     printf("\n");
18     
19     for(i=0;i<N;i++)
20         printf("%p: %c\n",&b[i],b[i]);
21         
22     printf("\n");
23     
24     printf("a = %p\n",a);
25     printf("b = %p\n",b);
26     
27     return 0;
28 }
29 //Q1:Yes. 4//
30 //Q2:No. 1//
31 //Q3:Yes. Yes.//

 

 

 

Q1: 是。 4.

Q2:不是。 1.

Q3: 是。 是。

 

2.task1_2.c

 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 }
23 //Q1:Yes. 4//
24 //Q2:Yes. 1//

Q1:是。 4.

Q2:是。 1.

 

3.task2.c

 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;
 8     int days;
 9     
10     while(scanf("%d%d%d",&year,&month,&day)!=EOF)
11     {
12         days=days_of_year(year, month, day);
13         printf("%4d-%02d-%02d是这一年的第%d天.\n\n",year,month,day,days);
14     }
15     
16     return 0;
17 }
18 
19 int days_of_year(int year,int month,int day)
20 {
21     
22     int i;
23     int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
24     
25     for(i=1;i<month;i++)
26     {
27         day+=a[i];
28     }
29     if((year%4==0&&year%100!=0)||(year%400==0))
30         day+=1;
31     
32     return day;
33 }

 

4.task3.c

 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     
35     for(i=0;i<n;i++)
36         scanf("%d",&x[i]);
37 }
38 
39 void output(int x[],int n)
40 {
41     int i;
42     
43     for(i=0;i<n;i++)
44         printf("%d ",x[i]);
45     
46     printf("\n");
47 }
48 
49 double average(int x[],int n)
50 {
51     double sum;
52     int i=0;
53     
54     while(i<N)
55         sum+=x[i++];
56     
57     return sum/n;
58 }
59 
60 void sort(int x[],int n)
61 {
62     int i,j,temp;
63     
64     for(i=0;i<=n-2;i++)
65         for(j=n-1;j>i;j--)
66             if(x[j]>x[j-1])
67                 {
68                     temp=x[j];
69                     x[j]=x[j-1];
70                     x[j-1]=temp;
71                 }
72 }

 

5.task4.c

 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     dec2n(x,8);
14     dec2n(x,16);
15     
16     return 0; 
17 }
18 
19 void dec2n(int x,int n)
20 {
21     int b[50],i,temp,j;
22     char a[18]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
23     
24     for(i=0;x!=0;i++)
25     {
26         b[i]=x%n;
27         x/=n;
28     }
29     
30     for(i-=1;i>=0;i--)
31     {
32         temp=b[i];
33         printf("%c",a[temp]);
34     }
35     
36     printf("\n");
37 }

 

6.task5.c

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int n,i,j,temp;
 6     
 7     printf("Enter n: ");
 8     while(scanf("%d",&n)!=EOF)
 9     {
10         for(i=1;i<=n;i++)
11         {
12             for(j=1;j<=i;j++)
13                 printf("%d ",j);
14         
15             temp=j-1;
16         
17             for(;j<=n;j++)
18                 printf("%d ",temp);
19         
20             printf("\n");
21         }
22         printf("\nEnter n: ");
23     }
24     return 0;
25 }

 

7.task6.c

 1 #include <stdio.h>
 2 #include <string.h>
 3 #define N 80
 4 
 5 int main()
 6 {
 7     char views1[N]="hey, c, i hate u.";
 8     char views2[N]="hey, c, i love u.";
 9     char temp[N];
10     
11     printf("original views:\n");
12     puts(views1);
13     puts(views2);
14     
15     printf("\nswappint...\n\n");
16     
17     strcpy(temp,views1);
18     strcpy(views1,views2);
19     strcpy(views2,temp);
20     
21     puts(views1);
22     puts(views2);    
23 }

 

8.task7.c

 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;
31     char temp[M];
32     
33     for(i=0;i<=n-2;i++)
34         for(j=0;j<=n-2-i;j++)
35             if(strcmp(str[j],str[j+1])>0)
36                 {
37                     strcpy(temp,str[j]);
38                     strcpy(str[j],str[j+1]);
39                     strcpy(str[j+1],temp);
40                 }
41 }

 

五、实验总结:

1、对于字符串,应该常记这几个函数 strcpy()、strlen()、strcat()、strcmp();

2、char[ ]数组在构建时,应谨记最后一位为 '/0',需要预留一位予以储存。

 

posted @ 2022-05-09 19:07  Nixmout  阅读(7)  评论(1编辑  收藏  举报