m0_66855196 2022-02-07 21:11 采纳率: 81%
浏览 47
已结题

关于子函数的问题,求解析

有以下程序:
#include <stdio.h>
struct S{intn;inta[20];}; void f(struct S *p)

inti,j,t;
for(i=0;in-1;i++) for(j=i+1;jn;j++) if(p->a[i]>p->alil)
{t=p->a[i]; p->a[i]=p->a[j]; p->a[j]=t; }

main()

int i;structSs={10,{23168754109}}; f(&s);
for(i=0;i<s.n;i++)printf("%d,",s.a[il);

程序运行后的输出结果是()。
A.2,3,1,6,8,7,5,4,10,9,

B.10,9,8,7,6,5,4,3,2,1,

C.1,2,3,4,5,6,7,8,9,10,

  • 写回答

3条回答 默认 最新

  • 远去的家园 2022-02-07 21:38
    关注

    好家伙,兄弟你这代码乱的,我连蒙带猜地整理了一遍

    #include <stdio.h>
    
    struct S{
        int n;
        int a[20];
        }; 
    
    void f(struct S *p)
    {
        int i, j, t;
        
        for(i = 0; i < p->n; i++)
            for(j = i+1; j < p->n; j++)
                if( p -> a[i] > p -> a[j]){
                    t = p -> a[i];
                    p -> a[i] = p -> a[j];
                    p -> a[j] = t; 
                    }
    }
    
    int main(void)
    {
        int i;
        struct S s = {10, {2, 3, 1, 6, 8, 7, 5, 4, 10, 9}}; 
        
        f(&s);
    
        for(i = 0; i < s.n; i++)
            printf("%d, ", s.a[i]);
        
        return 0;
    }
    

    最终的输出结果就是C。这是在通过函数给结构中的数组a排序,从小到大。

    从a[0]开始与a[1]比较,当a[0]>a[1]时就交换他们的值。内层循环会遍历a[i]之后的每一个值,和a[i]比较后将较小的值换到a[i]的位置上去。外层循环结束后,所有的值都会按照从小到大的顺序排列完毕。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月15日
  • 已采纳回答 2月7日
  • 创建了问题 2月7日

悬赏问题

  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本