运行下列程序,输出结果是(). struct student { int num; struct student *next; }; int main() { struct student a[3]={1,&a[1],2,&a[2],3,&a[0]},*p; p=&a[1]; printf("%d%d\n ",p->num,p->next->num); return 0; }
A、13
B、23
C、31
D、12
第1题
第2题
A、sp1->num head NULL
B、sp2->num sp1 NULL
C、sp2->num sp2 sp1
D、sp1->num head sp1
第3题
第4题
阅读以下说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某班级有N名学生,他们可根据自己的情况选修名称和数量不尽相同的课程。设N等于6,学生信息、所选课程及成绩用链表结构存储,如图2-5所示。
程序中相应的类型定义如下:
#define N 6
struct node{
char cname[5]; /*课程名*/
int grade; /*成绩*/
struct node *next; /*指针,指示某学生选修的下一门课程及成绩*/
};
struct student{
char xh[5]; /*学号*/
char name[20]; /*姓名*/
struct node*link; /*指针,指示出选修的课程及成绩链表*/
}stud_info[N];
图2-5
smd_mb[]为一个全局数组。
函数func(char kc[],int*num)的功能是统计选修了课程名为kc的学生的人数,并返回该课程的平均成绩(若无人选修该课程,则平均成绩为0),参数num带回选修课程比的学生人数。
【C函数】
double func(char kc[],int*num)
{
int i,count=0,sum=0; /*count用于记录选修课程名为kc的学生的人数*/
double avg=0.0;
struct node *p;
for(i=0;i<N;i++){
p=(1); /*取第i个学生所修课程链表的头指针*/
while (p) {
if((2)){
sum=(3);
count++;
break;;
}/*if*/
p=p->next;
}/*while*/
}
(4);
if((5))
avg=(double)sum/count; /*计算平均成绩*/
return avg;
}/*func*/
【我提交的答案】:
【参考答案分析】:
(1)stud_info[i].link,或其等价形式(2)!strcmp(p->cname,kc),或其等价形式(3)sum+p->grade,或其等价形式(4)*num=count,或其等价形式(5)count!=0,或count>0,或其等价形式 解析:本题考查链表的查找运算。
函数time(char kc[],int*num)的功能是统计选修了课程名为kc的学生的人数,并返回该课程的平均成绩(若无人选修该课程,则平均成绩为0),参数num返回选修课程 kc的学生人数。
函数中用count计算选修课程kc的人数、用sum记录学生该课程的成绩总和<除以学生人数即可得到平均成绩)。
stud_info[]为一个全局数组,stud_info[0]是第0个学生的信息,stud_info[1]是第1个学生的信息,依次类推。
对于每个学生,用一个单链表存储其选修的课程及成绩,链表的头指针为smd info[i] link,显然,应遍历为每个学生建立的单链表。空(1)处应填入“stud info[i].link”。
对于链表中的一个结点,应查看其课程名是否等于给定的课程名kc,若相等,则将其成绩累加至sum。因此空(2)处应填入“!strcmp(p->cname,kc)”,空(3)处应填入“sum+p->grade"。
由于需要参数*num返回选修课程比的人数,所以空(4)处应填入“*num=count”。
平均成绩等于成绩总和除以选课人数,因此,选课人数应不等于0,所以空(5)处填入“count>0”或“count!=0”。
第5题
阅读以下说明和C 函数,将应填入(n) 处的字句写在答题纸的对应栏内。
[说明]
某班级有N 名学生,他们可根据自己的情况选修名称和数量不尽相同的课程。设N,如图5-1 所示。
程序中相应的类型定义如下:
define N 6
struct node{
char cname[5]; /*课程名*/
int grade; /*成绩*/
struct node *next; /*指针,指示某学生选修的下一门课程及成绩*/
};
struct student{
char xh[5]; /*学号*/
char name[20]; /*姓名*/
struct node *link; /*指针,指示出选修的课程及成绩链表*/
}stud_info[N];
stud_info[]为一个全局数组。
函数func (char kc[],int *num)的功能是统计选修了课程名为kc 的学生的人数,
并返回该课程的平均成绩(若无人选修该课程,则平均成绩为0),参数num 带回选修课程kc 的学生人数。
[C函数]
double func (char kc[],int *num)
{
int i,count = 0,sum = 0; /*count用于记录选修课程名为kc 的学生的人数*/
double avg = 0.0;
struct node *p;
for(i = 0; i < N; i++){
p = (1) ; /*取第i 个学生所修课程链表的头指针*/
while (p) {
if ( (2) ) {
sum = (3) ;
count++;
break;;
}/*if*/
p = p->next;
}/*while*/
}
(4) ;
if ( (5) )
avg = (double)sum / count; /* 计算平均成绩 */
return avg;
}/*func*/
第6题
3.已建立学生“英语”课程的成绩链表(成绩存于score域中,学号存于num域中), 下列函数用于输出待补考学生的学号和成绩,及补考学生人数。 void require(struct student *head) { struct student *p; ① if( head!=NULL) { ② while(p!=NULL) { if( ③ ) { printf(”%7d %6.1f\n”,p->num,p->score); n++; } p=p->next; } printf(”%ld\n”, n); } }
第7题
A.p++->n
B.p->n++
C.(*p).n++
D.++p->n
第8题
A.p++->n
B.p->n++
C.(*p).n++
D.++p->n
第9题
建立一个链表,链表节点用于存储如下结构体: struct Student { long num; //学号 char name[20]; //姓名 char sex; //性别 float score; //成绩 }; 要求:使用函数和指针进行合理的编程, 1、建立链表 struct SLink { struct Student s; struct SLink *next; } *np; ,并设计如下函数: 1)createLink()生成一个空链表; 2)insertData(struct Student s)按学生学号由小到大的顺序,将s插入到链表合适的位置; 提示:使用np=(struct SLink *) malloc(sizeof(struct SLink)开辟内存以建立新节点。 3)deleteData(long num)删除学号为num的节点。 提示:使用free(np)释放被删除节点的内存; 4)printLink()顺序打印输出链表各节点的内容。 2、上传调试成功的源代码及说明,供评阅者进行运行测试,并评价得分。
第10题
A.P++->n
B.p->n++
C.(*p).n++
D.++p->n
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!