四十六、假设一堆数组中存放不相同的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