原题链接:二级C语言-最小绝对值
解题思路:
不调用math函数(如果没有懂得原理只会调用函数的后果你懂的)
本题意在考察我们数组数据的 录入,保存,查找,交换。
对于本题: 1.定义数组 a[20] //用于保存录入的数据
//申请20个空间是为了防止内存溢出(万一多输入了一个)
2.定义数组 b[20] //用于备份处理过后的数据(负数转化为正数)
//并不是所有人都知道math.h里面的函数
注意事项:
1.定义数组时一定要多申请空间。
参考代码:
#include<stdio.h>
int main()
{
int a[20]={0},b[20]={0};
int i;//循环变量
int j=0;//记录最小值的位置
int min;//记录最小值
//录入并将负数转化为正数(处理过后的b数组是a数组取绝对值过后的)
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
b[i]=a[i]; //备份a数组数据到b数组
if(a[i]<0) //检测是否是负数
{
b[i]=(-1)*a[i]; //如果是负数则将负数转化为正数再存入b数组
}
}
//查找最小值
min=b[0];
for(i=1;i<10;i++)
{ //用b数组是因为需要比较绝对值的大小
if(b[i]<min)//如果找到数组中元素小于min,则将此元素赋值给min,使min始终记录最小值
{
min=a[i];
j=i; //记录此时最小值得位置
}
}
//交换最小值与最末尾数据的位置
a[j]=a[9];
a[9]=min;
//输出处理完成的最终数据
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
return 0;
}0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include<stdio.h> int main () { int a[10]={0}; int Maximal=0,Least=0; //保存最大数和最小数的下标数 int max1=a[0],i=0,sum; //sum是互换两个数时的容器 for(i=0;i!=10;++i) { scanf("%d",&a[i]); } for(i=1;i!=10;++i) { if(a[i]>max1) { Maximal=i; //遍历数组得到最大的下标数 } } for(i=0;i!=10;++i) { if(a[i]<max1) { Least=i; //遍历数组得到最小的下标数 } } sum=a[Maximal]; a[Maximal]=a[Least]; //互换两个数 a[Least]=sum; for(i=0;i!=10;++i) { printf("%d ",a[i]); } return 0; } 各位老哥看看为啥是错的?