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

admin2022-10-24  21

问题 有以下程序
 #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,它包含3种数据成员:整数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/Mid0FFFM
0

最新回复(0)