解题思路:4次循环进行分析
注意事项:
参考代码:
#include<stdio.h> #include<math.h> int main(){ int a,b,c,d,e,h,i; int s[10]; int p[10]; for(a=0;a<10;a++){ scanf("%d",&s[a]); p[a]=abs(s[a]); } d=p[0]; for(b=0;b<10;b++){ if(p[b]<d){ d=p[b]; } } for(e=0;e<10;e++){ if(abs(s[e])==abs(d)){ i=s[e]; s[e]=s[9]; s[9]=i; } } for(h=0;h<10;h++){ printf("%d ",s[h]); } }
0.0分
5 人评分
#include<stdio.h> int main() { int a[10],i,min,t,temp; for(i=0;i<10;i++) { scanf("%d",&a[i]); if(a[i]<0) a[i]=-a[i]; } min=a[0],t=0; for(i=0;i<9;i++) { if(min>a[i+1]) {min=a[i+1];t=i+1; } } temp=a[t]; a[t]=a[9]; a[9]=temp; for(i=0;i<10;i++) { printf("%d ",a[i]); } return 0; } 各位大佬帮我看看哪里错了~
这个错了 如果绝对值最小的数是负数 比如-1,输出的时候就是1了而不是-1
孤鸿悬影 2021-11-08 20:57:56 |
的确,为了省事就直接换了现在改了一下#include<stdio.h> #include<stdlib.h> int main(){ int a,b,c,d,e,h,i; int s[10]; int p[10]; for(a=0;a<10;a++){ scanf("%d",&s[a]); p[a]=abs(s[a]); } d=p[0]; for(b=0;b<10;b++){ if(p[b]<d){ d=p[b]; } } for(e=0;e<10;e++){ if(abs(s[e])==abs(d)){ i=s[e]; s[e]=s[9]; s[9]=i; } } for(h=0;h<10;h++){ printf("%d ",s[h]); } }
孤鸿悬影 2021-11-08 20:59:46 |
。。。不知道为啥平了。就是把那个s[e]=s[9]; s[9]=d;改成 i=s[e]; s[e]=s[9]; s[9]=i;
孤鸿悬影 2021-12-28 18:03:14 |
#include<stdio.h> #include<math.h> int main() { int a[10],i,min,t,temp; for(i=0;i<10;i++) { scanf("%d",&a[i]); } min=abs(a[0]),t=0; for(i=0;i<9;i++) { if(min>abs(a[i+1])) { min=a[i+1];t=i+1; } } temp=a[t]; a[t]=a[9]; a[9]=temp; for(i=0;i<10;i++) { printf("%d ",a[i]); } return 0; } 题目的要求不是传入的值为正的,题目要求的是他的绝对值,如果这样输出那原本输入的是负数,输出变为正数了,加个math.h头文件,再用绝对值就可以了