一、选择题。
1.B 2.A 3.D 4.D 5.D 6.D 7.A 8.D 9.B 10.A 11.D
二、填空题。
1.
①p->name或(*p).name
②“%d”,&p->score或“%d”,&(*p).score
③p->name或(*p).name
④p->score或(*p).score
2.
①p 或p!=NULL p->next 或p->next!=NULL
②c++
③p->next
三、写出程序的运行结果。
1.
12,34
2.
2
4
3
9
12
12
11
11
18
9
3.
Zhao,m,85,90
4.
20
四、编程题
1.编写程序:input和output函数输入/输出5个学生的数据记录,其中每个学生包括学号(char num[6])、姓名(char name[8])、4门课程分数(score)信息。
参考代码:
#include "stdio.h"
#include "stdlib.h"
#define N 5
typedef struct
{
char num[6];
char name[8];
float score[4];
}STU;
void input(STU *s,int n)
{
int i,j;
printf("Please input %d students' num,name,score[4]:\n",n);
for(i=0;i<n;i++)
{
scanf("%s%s",s[i].num,s[i].name);
for(j=0;j<4;j++)
scanf("%f",&s[i].score[j]);
}
}
void output(STU *s,int n)
{
int i,j;
printf("Students' information:\n");
for(i=0;i<n;i++)
{
printf("%s %s ",s[i].num,s[i].name);
for(j=0;j<4;j++)
printf("%2.0f ",s[i].score[j]);
printf("\n");
}
}
void main( )
{
STU s[N];
input(s,N);
output(s,N);
}
2.现有如下一个结构体及变量,编程实现找到年龄最大的人,并输出。
static struct man
{ char name[20];
int age;
} person[4]={"li",18,"wang",19,"zhang",20,"sun",22};
参考代码:
#include "stdio.h"
#include "stdlib.h"
static struct man
{ char name[20];
int age;
} person[4]={"li",18,"wang",19,"zhang",20,"sun",22};
void main( )
{
int i,max_age,index;
max_age=person[0].age;
index=0;
for(i=1;i<4;i++)
if(person[i].age>max_age)
{
max_age=person[i].age;
index=i;
}
printf("The Oldest man is: %s,age:%d\n",person[index].name,person[index].age);
}
3.编写程序:有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,3门课成绩),计算出平均成绩。
参考代码:
#include "stdio.h"
#include "stdlib.h"
#define N 5
typedef struct
{
char num[6];
char name[8];
float score[3];
}STU;
void input(STU *s,int n)
{
int i,j;
printf("Please input %d students' num,name,score[3]:\n",n);
for(i=0;i<n;i++)
{
scanf("%s%s",s[i].num,s[i].name);
for(j=0;j<3;j++)
scanf("%f",&s[i].score[j]);
}
}
void main()
{
STU s[N];
int i,j;float average[N];
input(s,N);
for(i=0;i<N;i++)
{
average[i]=0;
for(j=0;j<3;j++)
average[i]+=s[i].score[j];
average[i]/=3;
printf("第%d个同学的平均成绩为:%f\n",i,average[i]);
}
}
4.建立一个链表,每一个节点包括的成员为学生学号、平均成绩。用malloc开辟新节点。要求链表包括8个节点,从键盘输入节点的数据。建立链表的函数名是create。
参考代码:
#include "stdio.h"
#include "stdlib.h"
#define N 8
typedef struct student
{
char num[5];
float score;
struct student *next;
}STU;
STU *create(int n)
{
int i;
STU *head,*p,*q;
head=p=(STU *)malloc(sizeof(STU));
for(i=0;i<n;i++)
{
printf("请输入第%d个学生的学号num及成绩score:\n",i+1);
q=(STU *)malloc(sizeof(STU));
scanf("%s%f",q->num,&q->score);
p->next=q;
p=q;
}
p->next=NULL;
return head;
}
void main()
{
STU *head,*p;
head=create(N);
p=head->next;
printf("Start->");
while(p)
{
printf("学号:%s 成绩:%2.0f->",p->num,p->score);
p=p->next ;
}
printf("End\n");
}
一、选择题。
1.D 2.C 3.B 4.C 5.B 6.B 7.A 8.C 9.A 10.C
11.B 12.C 13.A 14.A 15.D
注:其中选择题第4题和第8题雷同。
选择题第13题的答案选项中,两个数据之间应该有逗号。
二、填空题。
1.
①NULL
2.
①"r"
②fp
3. ①fp=fopen(fn,"w")
②ch!= '#'
③ ch = getchar( );
4.
①fin
②k,fout
③ fopen("D:\\file2.txt", "wb")
5.
①FILE *fp
②"rb"
一、选择题。
1.A 2.C 3.D 4.B 5.D 6.A 7.B 8.B 9.B 10.B
二、填空题。
1. 自项向下
2. 循环结构
3. 实例
4.属性
5.对象