原题链接:[编程入门]自定义函数之整数处理
解题思路:
输入10个数;
先找到最小数与第一个数交换;
再找到最大数与最后一个交换;
输出交换后的十个数,每个后面带空格;
注意事项:
不可以同时找到最大数和最小数然后一起交换
有同学问为什么不可以,先找到最小最大,在一次性交换,原因如下
如输入数据: 10 1 2 3有
min=1,对应下标为 1 ;max=10对应下标为0
先与第一个数交换后为:1 10 2 3 ,但是注意此时正确max下标变成了1
继续按照之前记录的max下标0进行交换,即变成1与3交换,与实际10与3交换不相符,所以出错
参考代码:
#include <stdio.h>
void deal( int a[] );
int main()
{
int x[10];
for ( int i = 0; i < 10; i++ )
scanf( "%d", &x[i] );
deal( x );
return(0);
}
void deal( int a[] )
{
int max = 0, x, team, l, min = a[0];
for ( int i = 0; i < 10; i++ ) //找最小数,交换
{
if ( a[i] < min )
{
min = a[i]; l = i;
}
}
team = a[0];
a[0] = min;
a[l] = team;
for ( int k = 0; k < 10; k++ ) //找最大数,交换
{
if ( a[k] > max )
{
max = a[k]; x = k;
}
}
team = a[9];
a[9] = max;
a[x] = team;
for ( int j = 0; j < 10; j++ ) //输出
printf( "%d ", a[j] );
}别忘点赞哦-.-
0.0分
104 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include<stdio.h> void input(long a[], int n) { for(int i=0;i<n;i++) scanf("%ld",&a[i]); } void exchange(long a[],int n) { for(int i=0;i<n;i++) { if(a[0]>a[i]) { long temp; temp=a[i]; a[i]=a[0]; a[0]=temp; } } for(int i=n-2;i>=0;i--) { if(a[9]<a[i]) { long temp; temp=a[i]; a[i]=a[9]; a[9]=temp; } } } void output(long a[],int n) { for(int i=0;i<n;i++) printf("%ld ",a[i]); } int main() { long a[10]; input(a,10); exchange(a,10); output(a,10); return 0; }为什么我的不可以唔printf("萌新");#include<stdio.h> void get(int *n) { int i; for(i=0;i<10;i++) scanf("%d",&n[i]); } void fun(int *n) { int i = 0,max_s,min_s; int max,min,temp,temp1; max=min=n[0]; max_s = min_s =0; for(;i<10;i++) { if(max<n[i]) { max=n[i]; max_s = i; } if(min>n[i]) { min=n[i]; min_s = i; } } temp = n[0]; n[0] = n[min_s]; n[min_s]= temp; temp1 = n[9]; n[9] = n[max_s]; n[max_s] = temp1; } void fget(int *s) { int i; for(i=0;i<10;i++) printf("%d ",s[i]); } int main(void) { int num[10]; get(num); fun(num); fget(num); }这个答案是错误的,当a【0】是最小值时, if ( a[i] < min ) { min = a[i]; l = i; } 这个if不会执行,l没有赋值,程序会崩溃