一、選擇題。
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
?
三、寫(xiě)出程序的運(yùn)行結(jié)果。
1.
??12,34
2.
??2
4
3
9
12
12
11
11
??18
??9
3.
??Zhao,m,85,90
4.
20
四、編程題
1.編寫(xiě)程序:input和output函數(shù)輸入/輸出5個(gè)學(xué)生的數(shù)據(jù)記錄,其中每個(gè)學(xué)生包括學(xué)號(hào)(char num[6])、姓名(char name[8])、4門(mén)課程分?jǐn)?shù)(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.現(xiàn)有如下一個(gè)結(jié)構(gòu)體及變量,編程實(shí)現(xiàn)找到年齡最大的人,并輸出。
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.編寫(xiě)程序:有5個(gè)學(xué)生,每個(gè)學(xué)生有3門(mén)課的成績(jī),從鍵盤(pán)輸入以上數(shù)據(jù)(包括學(xué)生號(hào),姓名,3門(mén)課成績(jī)),計(jì)算出平均成績(jī)。
參考代碼:
#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個(gè)同學(xué)的平均成績(jī)?yōu)椋?/span>%f\n",i,average[i]);
}
}
?
4.建立一個(gè)鏈表,每一個(gè)節(jié)點(diǎn)包括的成員為學(xué)生學(xué)號(hào)、平均成績(jī)。用malloc開(kāi)辟新節(jié)點(diǎn)。要求鏈表包括8個(gè)節(jié)點(diǎn),從鍵盤(pán)輸入節(jié)點(diǎn)的數(shù)據(jù)。建立鏈表的函數(shù)名是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("請(qǐng)輸入第%d個(gè)學(xué)生的學(xué)號(hào)num及成績(jī)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("學(xué)號(hào):%s ?成績(jī):%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題的答案選項(xiàng)中,兩個(gè)數(shù)據(jù)之間應(yīng)該有逗號(hào)。
二、填空題。
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. 自項(xiàng)向下
2. 循環(huán)結(jié)構(gòu)
3. 實(shí)例
4.屬性
5.對(duì)象