C 实战练习题目67

题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

程序分析:谭浩强的书中答案有问题。

实例:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3  
 4 void fun(int *s,int n)
 5 {
 6     int i;
 7     int max=s[0];
 8     int a=0;
 9     for(i=0;i<n;i++)
10     {
11         if(s[i]>max)
12         {
13             max=s[i];
14             a=i;
15         }
16     }
17     s[a]=s[0];
18     s[0]=max;
19     int j;
20     int min=s[n-1];
21     int b=n-1;
22     for(j=0;j<n;j++)
23     {
24         if(s[j]<min)
25         {
26             min=s[j];
27             b=j;
28         }
29     }
30     s[b]=s[n-1];
31     s[n-1]=min;
32 }
33  
34 void printf_s(int *s,int n)
35 {
36     int i;
37     for(i=0;i<n;i++)
38         printf("%d ",s[i]);
39     printf("
");
40 }
41  
42 int main()
43 {
44     int s[20];
45     int i,n;
46     printf("设置数组长度(<20):");
47     scanf("%d",&n);
48     printf("输入 %d 个元素:
",n);
49     for(i=0;i<n;i++)
50         scanf("%d",&s[i]);
51     fun(s,n);
52     printf_s(s,n);
53     return 0;
54 }

输出结果为:

设置数组长度(<20):5 
输入 5 个元素:
12 123 4 65 21
123 12 21 65 4

感谢你的阅读,请用心感悟!希望可以帮到爱学习的你!!分享也是一种快乐!!!请接力。。。

点击查看原文,谢谢!

原文地址:https://www.cnblogs.com/kangyifan/p/13283536.html