原题链接:[编程入门]自定义函数之整数处理
解题思路:
输入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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
我不明白为什么只对一半: int main() { int a[10]; int t,i,j,k,l; for(i=0;i<10;i++) {scanf("%d",&a[i]);} for(k=0;k<10;k++) { for(l=k+1;l<10;l++) { if(a[k]>a[l]) { t=a[l]; a[l]=a[k]; a[k]=t; } } } for(j=0;j<10;j++) {printf("%d ",a[j]);} return 0; }虽然有点小问题,但是不妨大碍 这样做就可以 一次找到最大最小值 #include <stdio.h> int ru(int a[10]) {int i; for(i=0;i<10;i++) scanf("%d",&a[i]); return 0; } int chuli(int a[10]) {int x,i; for(i=0;i<=9;i++) {if(a[9]<a[i]) x=a[i],a[i]=a[9],a[9]=x; if(a[0]>a[i]) x=a[i],a[i]=a[0],a[0]=x;} return 0; } int shuchu(int a[10]) { int i; for(i=0;i<10;i++) printf("%d ",a[i]); return 0;} int main() {int a[10]; ru(a); chuli(a); shuchu(a); return 0; }@seventeen void change_min(int c[]) { int t,n,min,term; min=c[0]; for(t=1;t<10;t++) { if(c[t]<min) { min=c[t]; n=t; } } term=c[0]; c[0]=c[n]; c[n]=term; }有人解答一下w运行错误:运行时错误,非法的内存访问,数组越界,指针漂移,调用禁用的系统函数。 Segmentation fault:段错误,检查是否有数组越界,指针异常,访问到不应该访问的内存区域 #include <stdio.h> void change_max(int b[]); void change_min(int c[]); int main() { int a[10],i; for(i=0;i<10;i++) scanf("%d",&a[i]); change_max(a); change_min(a); for(i=0;i<10;i++) printf("%d ",a[i]); return 0; } void change_max(int b[]) { int s,m,max,temp; max=b[0]; for(s=1;s<10;s++) { if(b[s]>max) { max=b[s]; m=s; } } temp=b[9]; b[9]=b[m]; b[m]=temp; }#include<stdio.h> int num(int *a); int main() { int a[10]; int i,temp; for(i=0;i<10;i++){ scanf("%d",&a[i]); } num(a); for(i=0;i<9;i++){ printf("%d ",a[i]); } printf("%d ",a[9]); return 0; } int num(int *a){ int i,temp,min,max; min=0; max=9; for(i=0;i<10;i++){ if(a[i]<a[min]){; min = i; } if(a[i]>a[max]){ max = i; } } temp = a[min]; a[min] = a[0]; a[0] = temp; temp = a[max]; a[max] = a[9]; a[9] = temp;}#include <bits/stdc++.h> using namespace std; int main(){ int a[100]={0}; int min_i=0,min=0,max_i=0,max=0,t=0; for(int i=0;i<10;i++){ scanf("%d",&a[i]); } min=a[0]; for(int i=0;i<10;i++){ if(min>a[i])min_i=i,min=a[i]; } t=a[0];//小数 a[0]=min; a[min_i]=t; for(int i=0;i<10;i++){ if(max<a[i])max_i=i,max=a[i]; } t=a[9]; a[9]=max; a[max_i]=t; for(int i=0;i<10;i++){ cout<<a[i]<<" "; } return 0; }