C语言成长学习题(十一)

四十六、假设一堆数组中存放不相同的10个整数,从键盘输入一个整数,输出与该值相同的数组元素的下标。

 1 #include <stdio.h>
 2 
 3 void main(void)
 4 {
 5     int i, x, k = -1, a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
 6 
 7     printf("Input x: ");
 8     scanf("%d", &x);
 9     for (i = 0; i < 10; i++)
10         printf("%4d", a[i]);
11     printf("
");
12     for (i = 0; i < 10; i++)
13         if (x == a[i])
14             k = i;
15     if (k != -1)
16         printf("下标值 = %d
", k);
17     else
18         printf("没找到%d
", x);
19 }

 结果:

(1)Input x: 6

  1   2   3   4   5   6   7   8   9   10

  下标值 = 5

(2)Input x: 12

  1   2   3   4   5   6   7   8   9   10

  没找到12

四十七、从键盘输入10个互不相同的整数并存放在一维数组中,找出值最大的整数,并从数组中删除该值。

 1 #include <stdio.h>
 2 
 3 void main(void)
 4 {
 5     int i, k, a[10];
 6 
 7     printf("Input data: ");
 8     for (i = 0; i < 10; i++)
 9     {
10         scanf("%d", &a[i]);
11         printf("%4d", a[i]);
12     }
13     printf("
");
14 
15     k = 0;
16     for (i = 1; i < 10; i++)
17         if (a[k] < a[i]) k = i;
18     for (i = k; i < 9; i++)
19         a[i] = a[i+1];
20     for (i = 0; i < 9; i++)
21         printf("%4d", a[i]);
22     printf("
");
23 }

结果:

Input data: 22 33 99 11 12 13 78 54 87 65

22  33  99  11  12  13  78  54  87  65

22  33  11  12  13  78  54  87  65

四十八、在一维数组中找出值最小的元素,并将其值与第一个元素的值对调。

 1 #include <stdio.h>
 2 
 3 void main(void)
 4 {
 5     int j, k, temp, a[10];
 6 
 7     for (j = 0; j < 10; j++)
 8     {
 9         scanf("%d", a[j]);
10         printf("%4d", a[j];
11     }
12     printf("
");
13     
14     k = 0;
15     for (j = 1; j < 10; j++)
16         if (a[k] > a[j]) 
17             k = j;
18     temp = a[0];
19     a[0] = a[k];
20     a[k] = temp;
21     for (j = 0; j < 10; j++)
22         printf("%4d", a[j]);
23     printf("
");
24 }

结果:

10 9 8 2 5 1 3 7 4 6

10  9   8   2   5   1   3   7   4   6

1   9   8   2   5   10  3   7   4   6

四十九、将10个数由小到大的顺序进行排序。

 1 #include <stdio.h>
 2 
 3 void main(void)
 4 {
 5     int i, j, k, temp, a[10] = {10, 9, 8, 2, 5, 1, 7, 3, 4, 6};
 6 
 7     for (i = 0; i < 10; i++)
 8         printf("%4d", a[i]);
 9     printf("
");
10     for (i = 0; i < 9; i++)
11     {
12         k = i;
13         for (j = k + 1; j < 10; j++)
14             if (a[k] < a[j])
15                 k = j;
16         temp = a[i];
17         a[i] = a[k];
18         a[k] = temp;
19     }
20     for (i = 0; i < 10; i++)
21         printf("%4d", a[i]);
22     printf("
");
23 }

结果:

10  9   8   2   5   1   7   3   4   6

1   2   3   4   5   6   7   8   9   10

五十、输入若干个互不相同的非整数(假设小于100,用负数结束输入),要求从大到小排序。

 1 #include <stdio.h>
 2 
 3 void main(void)
 4 {
 5     int i, x, a[100] = {0};
 6 
 7     scanf("%d", &x);
 8     while (x >= 0 && x < 100)
 9     {
10         a[x] = 1;
11         scanf("%d", &x);
12     }
13     for (i = 99; i >= 0; i--)
14         if (a[i] == 1)
15             printf("%4d", i);
16     printf("
");
17 }

结果:

23 45 12 15 -1

45  23  15  12

原文地址:https://www.cnblogs.com/zero-jh/p/5026051.html