当前位置:文档之家› 习题解答(第七章)

习题解答(第七章)

struct date birthday;
};
7.5有n个学生,每个学生的数据包括学号(num),姓名(name[20]),性别(sex),年龄(age),三门课成绩(score[3])。
(1)要求在main函数中输入这几个学生的数据,然后调用一个函数count,在该函数中计算出每个学生的总分和平均分,然后打印出所有各项数据(包括原有的和新求出的)。
}
7.7建立一个链表,每个节点包含的成员为:职工号、工资。
(1)用malloc函数开辟新节点。要求链表包含5个节点,从键盘输入节点中的有效数据。然后把这些节点的数据打印出来。要求用函数creat来建立链表,用list函数来输出数据。这5个职工的号码为0601,0603,0605,0607,0609。
printf("工龄: ");
a[i].ls=atoi(gets(numstr));
printf("工资: ");
a[i].wage=atof(gets(numstr));
printf("地址: ");
gets(a[i].addr);
}
printf("职工号职工名性别年龄工龄工资地址\n");
for(i=0; i<N; i++)
{
printf("请输入第%d个学生的记录:\n", i);
gets(numstr); student[i].num=atol(numstr);
gets(student[i].name);
student[i].sex=getchar(); getchar();
gets(numstr); student[i].age=atoi(numstr);
for(j=0; j<M; j++)
{
gets(numstr); student[i].score[j]=atof(numstr);
}
}
printf("学号姓名性别年龄");
for(i=0; i<M; i++)
printf("科目%-3d", i);
printf("总分平均分\n");
for(i=0; i<N; i++)
gets(numstr); p->age=atoi(numstr);
for(i=0; i<M; i++)
{
gets(numstr); p->score[i]=atof(numstr);
}
}
printf("学号姓名性别年龄");
for(i=0; i<M; i++)
printf("科目%-3d", i);
count(student[i]);
}
(2)
#include <stdio.h>
#include <stdlib.h>
#define N 4 /*学生数*/
#define M 3 /*课程数*/
struct stud
{
unsignedlong num;
char name[20];
char sex;
int age;
(2)性别和出生日期用位段表示。
[解答]
struct date
{
unsigned int day:5;
unsigned int month:4;
unsigned int year:15;
};
struct person
{
unsigned long num;
char name[20];
unsigned int sex:1;
printf("总分平均分\n");
for(p=student; p<student+N; p++)
{
count(p);
printf("%-8ld%-12s%-5c%-5d", p->num, p->name, p->sex, p->age);
for(i=0; i<M; i++)
printf("%-7.1f", p->score[i]);
{
unsigned long num;
char name[20];
float score;
};
void main()
{
struct stud s[N], *p, *q;
char numstr[20];
for(p=q=s; p<s+N; p++)
{
printf("请输入第%d个学生的记录:\n", p-s);
gets(numstr); p->num=atol(numstr);
gets(p->name);
gets(numstr); p->score=atof(numstr);
if(q->score<p->score) q=p;
}
printf("成绩最高者的姓名和成绩为: %s %.1f.\n", q->name, q->score);
float sum;
float aver;
};
void count(struct stud s)
{
int i;
for(i=0, s.sum=0; i<M; i++)
s.sum+=s.score[i];
s.aver=s.sum/M;
printf("%-8ld%-12s%-5c%-5d", s.num, , s.sex, s.age);
printf("%-7.1f%-7.2f\n", p->sum, p->aver);
}
}
7.6有4名学生,每个学生包括学号、姓名、成绩,要求用指针方法找出成绩最高者的姓名和成绩。
[解答]
#include <stdio.h>
#include <stdlib.h>
#define N 4 /*学生数*/
struct stud
char name[20];
char sex;
unsigned int age;
unsigned int ls;
float wage;
char addr[50];
};
(2)
struct employee
{
unsigned long num;
char name[20];
char sex;
unsigned int age;
C 语言程序设计习题解答(第七章)
7.1题目略.
[解答] (1) A (2) F (3) B (4) B (5) C
7.2题目略.
(1) 6
(2) 40
(3) DDBBCC
(4) 0 4 5 15
(5) 6
(6) 16
7.3职工数据包括:职工号、职工名、性别、年龄、工龄、工资、地址。
(1)为其定义一个结构体变量。
a.ls=atoi(gets(numstr));
printf("工资: ");
a.wage=atof(gets(numstr));
printf("地址: ");
gets(a.addr);
printf("职工号: %d\n职工名: %s\n性别: %c\n年龄: %d\n工龄: %d\n工资: %f\n地址: %s\n",
unsigned int ls;
float};
#include <stdio.h>
#include <stdlib.h>
void main()
{
struct employee a;
char numstr[10];
printf("请输入职工数据: \n");
printf("职工号: ");
printf("%-8d%-10s%-5c%-5d%-5d%-8.2f%s\n",
a[i].num, a[i].name, a[i].sex, a[i].age, a[i].ls, a[i].wage, a[i].addr);
}
7.4设计一个用于人事管理的结构体:
(1)每个人的数据包括:职工号、姓名、性别、出生日期;
[解答]
(1)
#include<stdio.h>
#include<stdlib.h>
#define N 4 /*学生数*/
#define M 3 /*课程数*/
struct stud
{
unsignedlong num;
char name[20];
char sex;
int age;
float score[M];
#include <stdlib.h>
#define N 5 /*职工数*/
struct employee
{
long num;
float wage;
struct employee *next;
};
struct employee *creat(int n) /*建立一个有n个结点的链表*/
{
int i;
(2)对上述定义的变量,从键盘输入所需的具体数据,然后用printf函数显示出来。
相关主题