有以下程序  #include <stdio.h>  typedef struct{int num;char name[10];int score;}PER;  void fun(PER x[])  { int t;   if(x[0].score>

admin2022-04-01  27

问题 有以下程序
 #include <stdio.h>
 typedef struct{int num;char name[10];int score;}PER;
 void fun(PER x[])
 {  int t;
    if(x[0].score>x[1].score)
    {t=x[0].score;x[0].score=x[1].score;x[1].score=t;}
 }
 main()
 {  PER s[2]={{1001,"zhang",621},{1002,"wang",585}};
    int i;
    fun(s);
    for(i=0;i <2;i++)
     printf("%d,%s,%d,",s.num,s.name,s.score);
 }
 程序的运行结果是(          )。

选项 A、1001,zhang,585,1002,wang,621,
B、1001,zhang,621,1002,wang,585,
C、1002,wang,585,1001,zhang,621,
D、1002,wang,621,1001,zhang,585,

答案A

解析 程序首先使用typedef定义一种新的类型名PER,它包含三种数据成员:整数num,字符数组name,整数score。main()函数使用PER定义结构体数组s,s包含两个PER类型的元素;然后调用函数fun()将数组s传入。fun()函数的功能是比较形参数组x的两个元素的score值大小,若第1个元素的score值大于第2个元素的score值,就使用临时变量t将两个元素的score值交换,由于621大于585且x等价于实参s的指针,所以实参s的两个元素的score也会进行交换,执行完fun()函数之后,for循环将两个元素输出,本题答案为A。
转载请注明原文地址:https://jikaoti.com/ti/z8d0FFFM
0

最新回复(0)