知ing

大学C/C++语言程序设计基础(第2版)

阳小华,马淑萍 著 / 电子工业出版社

冥沙 上传

查看本书

习题9答案

一、选择题。

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.编写程序:inputoutput函数输入/输出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");

}

习题10答案

一、选择题。

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"

 

 

习题11答案

一、选择题。

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.对象


查看更多