题目
给定程序的功能是读入五位用户的姓名和电活号码,按姓名的字典师弃转到列后,输出用户的姓名和电活号码。函救cgeroiata读入五位用户的姓名和电话号码。gesora数把数据按姓名的字典顺方排列, ouohate给出最士
的结果。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include #define N 5 typedef struct { char name[20]; char num[10]; }USER; /found/ getdata(1) { int i; printf(“Enter name & phone number:\n”); for(i=0;i {printf(“i:= %d\n”,i+1); /found/ printf(" name=“); 2(sp[i].name); /found/ printf(” num="); 3(sp[i].num);} } getsort (USER *sp) { int i,j,k; USER temp; for(i=0;i { k=i; for(j=i+1;j if (strcmp(sp[k].name,sp[j].name)>0) k=j; temp=sp[k];sp[k]=sp[i];sp[i]=temp; } } outdata(USER *sp) { int i; printf(“after sorted:\n”); for (i=0;i printf(“%s, %s\n”,sp[i].name,sp[i].num); } main() { USER sp[N],temp; getdata(sp); getsort(sp); outdata(sp); } ”
题解
首先我们来看一下程序要求和提供的代码。这个程序要求我们读入五位用户的姓名和电话号码,按姓名的字典序进行排序,并输出排序后的结果。
在提供的代码中,我们可以看到一个结构体类型 USER,它包含用户的姓名和电话号码。代码中定义了一个包含 5 个 USER 类型结构体的数组 sp,以及三个函数 getdata()、getsort() 和 outdata()。getdata() 函数用于读入用户的数据,getsort() 函数用于对用户数据进行排序,outdata() 函数用于输出排序后的结果。
现在我们来看一下代码中需要填充的下划线处,即 ___1___、___2___ 和 ___3___。
在 ___1___ 处,我们需要填写函数参数。根据程序要求,我们需要读入 5 个用户的数据,因此可以将该参数设置为 USER *sp,表示一个包含 5 个 USER 类型结构体的数组指针。
在 ___2___ 处,我们需要填写读入用户姓名的语句。根据程序要求,我们需要读入用户的姓名,因此可以使用 scanf() 函数来读取字符串类型的姓名。由于 sp 是一个数组指针,因此我们需要使用 sp[i].name 来访问当前读入用户的姓名。
在 ___3___ 处,我们需要填写读入用户电话号码的语句。和读入姓名类似,我们可以使用 scanf() 函数来读取字符串类型的电话号码,并使用 sp[i].num 来访问当前读入用户的电话号码。
这样填好下划线之后,我们就得到了一个完整的程序,可以读入、排序和输出用户的姓名和电话号码。