实验五

Task 1_1.c:

 1 #include <stdio.h>
 2 #define N 5
 3 void input(int x[], int n);
 4 void output(int x[], int n);
 5 void find_min_max(int x[], int n, int *pmin, int *pmax);
 6 int main()
 7 {
 8   int a[N];
 9   int min, max;
10   printf("录入%d个数据:\n", N);
11   input(a, N);
12   printf("数据是: \n");
13   output(a, N);
14   printf("数据处理...\n");
15   find_min_max(a, N, &min, &max);
16   printf("输出结果:\n");
17   printf("min = %d, max = %d\n", min, max);
18   return 0;
19 }
20 void input(int x[], int n) {
21   int i;
22   for(i = 0; i < n; ++i)
23     scanf("%d", &x[i]);
24 }
25 void output(int x[], int n) {
26   int i;
27   for(i = 0; i < n; ++i)
28     printf("%d ", x[i]);
29   printf("\n");
30 }
31 void find_min_max(int x[], int n, int *pmin, int *pmax) {
32   int i;
33   *pmin = *pmax = x[0];
34   for(i = 0; i < n; ++i)
35     if(x[i] < *pmin)
36         *pmin = x[i];
37     else if(x[i] > *pmax)
38         *pmax = x[i];
39 }

 

image

 

问题一:函数find_min_max的作用:输出x和n中的最大和最小值

问题二:pmax指向主函数中定义的max的地址;pmin指向主函数中定义的min的地址

Task 1_2.c:

 1 #include <stdio.h>
 2 #define N 5
 3 void input(int x[], int n);
 4 void output(int x[], int n);
 5 int *find_max(int x[], int n);
 6 int main() {
 7   int a[N];
 8   int *pmax;
 9   printf("录入%d个数据:\n", N); 
10   input(a, N);
11   printf("数据是: \n");
12   output(a, N);
13   printf("数据处理...\n");
14   pmax = find_max(a, N);
15   printf("输出结果:\n");
16   printf("max = %d\n", *pmax);
17   return 0;
18 }
19 void input(int x[], int n) {
20   int i;
21   for(i = 0; i < n; ++i)
22     scanf("%d", &x[i]);
23 }
24 void output(int x[], int n) {
25   int i;
26   for(i = 0; i < n; ++i)
27     printf("%d ", x[i]);
28   printf("\n");
29 }
30 int *find_max(int x[], int n) {
31   int max_index = 0;
32   int i;
33   for(i = 0; i < n; ++i)
34     if(x[i] > x[max_index])
35         max_index = i;
36   return &x[max_index];
37 }

image

问题一: find_max的作用是找到数组中最大的元素;返回的是最大元素的地址

问题二:可以

Task 2_1.c:

 1 #include <stdio.h>
 2 #include <string.h>
 3 #define N 80
 4 int main()
 5 {
 6   char s1[N] = "Learning makes me happy";
 7   char s2[N] = "Learning makes me sleepy";
 8   char tmp[N];
 9   printf("sizeof(s1) vs. strlen(s1): \n");
10   printf("sizeof(s1) = %d\n", sizeof(s1));
11   printf("strlen(s1) = %d\n", strlen(s1));
12   printf("\nbefore swap: \n");
13   printf("s1: %s\n", s1);
14   printf("s2: %s\n", s2);
15   printf("\nswapping...\n");
16   strcpy(tmp, s1);
17   strcpy(s1, s2);
18   strcpy(s2, tmp);
19   printf("\nafter swap: \n");
20   printf("s1: %s\n", s1);
21   printf("s2: %s\n", s2);
22   return 0;
23 }

image

问题一:数组s1的大小是80;sizeof(s1)计算的是s1所占字节数;strlen统计的是s1中有效字节长度

问题二:不能,

Task 2_2.c:

Task 3:

Task 4:

Task 5:

Task 6:

Task 7:

Task 8:

posted @ 2025-12-05 17:26  超级累的长颈鹿  阅读(0)  评论(0)    收藏  举报