问题 填空题

以下程序的运行结果是 【19】
#include<string.h>
typeaef struct student
char name[10];
long sno;
float score;
STU;
main()
STUa="zhangsan",2001,95,b="Shangxian",2002,90,c="Anhua",2003,95,d,*p=&d;
d=a;
if(strcmp(

  • a.name,
  • b.name)>0)d=b;
    if(strcmp(C.name,d. name)>0)d=C;
    printf("%1d%s\n",d.sno,p->name);

答案

参考答案:2002Shanxian

解析:本题中第一个if语句将结构体变量a.name和结构体变量b.name中较小的那个赋值给结构体变量d,第二个if语句将结构体变量c.name和结构体变量d.name较大的那个赋给结构体变量d。通过函数strcmp比较。strcmp()函数有两个参数,分别为被比较的两个字符串。如果第一个字符串大于第二个字符串返回值大于0,若第一个小于第二个返回值小于0,相等时返回值为0。字符串比较大小的标准是从第一个字符开始依次向右比较,遇到某一个字符大,该字符所在的字符串就是较大的字符串,如果遇到某一个字符小,该字符所在的字符串就是较小的字符串。本程序中第一个if语句strcmp(a. name,b.name)>0为真,故将b的值赋给d,第二个if语句strcmp(c.name,d.name)>0为假,故不执行后面的语句,最后d的值为b的值,因此d.sno和p->name的值为 2002Shangxian。

选择题
单项选择题