m0_53537702
大力水手@
2021-05-24 18:42
采纳率: 100%
浏览 59

c语言:指针排序问题

输入10个数,按绝对值从大到小排序输出。 输入形式:输入10个float实数 输出形式:以小数点后两位有效数字输出从大到小排列 跪求解答

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • technologist_37
    CSDN专家-link 2021-05-24 18:54
    已采纳
    #include <math.h>
    #include <stdio.h>
    void paixu(float *p,int n)
    {
    	int i,j;
    	for (i = 0; i<n-1; i++) 
    	{ //控制n-1趟冒泡
    		for (j = 0; j<n - 1 - i; j++)
    		{
    			if (fabs(p[j])<fabs(p[j + 1])) 
    			{ //比较相邻的两个元素
    				float tmp; //临时变量
    				tmp = p[j]; //交换
    				p[j] = p[j + 1];
    				p[j + 1] = tmp;
    			}
    		}
    	}
    }
    
    int main()
    {
    	float f[10];
    	int i;
    	for(i=0;i<10;i++)
    		scanf("%f",&f[i]);
    	paixu(f,10);
    	for(i=0;i<10;i++)
    		printf("%.2f ",f[i]);
    
    	return 0;
    }
    点赞 评论
  • technologist_24
    CSDN专家-黄老师 2021-05-24 18:52
    #include <stdio.h>
    #include <math.h>
    #define N 10
    int main(int argc, char *argv[])
    {
        int a[N];
        int i,j,t;
        for(i=0;i<N;i++)
            scanf("%d",&a[i]);
        for(i=0;i<N-1;i++)
            for(j=i+1;j<N;j++)
            {
                if(abs(a[i])<abs(a[j]))
                {
                    t=a[i];a[i]=a[j];a[j]=t;
                }
     
            }
        for(i=0;i<N;i++)
            printf("%d ",a[i]);
        puts("");
         
        return 0;
    }

    参考一下,希望对你有帮助,如有帮助,望采纳

    点赞 评论
  • QA_Assistant
    有问必答小助手 2021-05-26 17:39

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    点赞 评论

相关推荐