填空题
人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。函数fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。
请在程序的下画线处填入正确的内容,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include <stdio.h>
#include <string.h>
#define N 8
typedef struct
{
char num[10];
int year,month,day;
} STU;
/**********found**********/
______fun(STU*std,char*num)
{
int i;
STU a={"",9999,99,99};
for(i=0;i<N;i++)
/**********fomad**********/
if(strcmp(______,num)==0)
/**********found**********/
return(______);
return a;
}
main()
{
STU std[N] = {{"111111",1984,2,15},{"222222",1983,9,21},{"333333",1984,9,1},{"444444",1983,7,15},{"555555",1984,9,28},{"666666",1983,11,15},{"777777",1983,6,22},{"888888",1984,8,19}};
STU p;
char n[10]="666666";
p=fun(std,n);
if(p.num[0]==0)
{
printf("/nNot found!/n");
}
else
{
printf("/nSucceed!/n");
printf("%s%d-%d-%d/n",p.num,p.year,p.month,p.day);
}
}
【正确答案】
1、STU std[i].num std[i]
【答案解析】[考点] 本题考查:if条件表达式;比较字符串函数strcmp;指针变量的使用;函数定义及函数返回值。
strcmp函数用来比较两个字符数组的大小,其格式为:strcmp(字符数组1,字符数组2)。若字符数组1>字符数组2,函数值大于0(正数);若字符数组1=字符数组2,函数值等于0;若字符数组1<字符数组2,函数值小于0(负数)。
[解析] 填空1:根据函数fun的返回值类型可知,函数类型标识符应该是结构体类型的,所以填入STU。
填空2:根据题目说明,找出指定编号人员,并将其数据返回。通过strcmp函数比较编号,若相同则函数值为0,所以填入std[i].num。
填空3:由题目可知,假如编号对应,则返回其编号对应数据,所以填入数据std[i]。