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