C语言第8章习题及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(4)删除指定编号的职工;
(5)删除60岁以上的男职工和55岁以上的女职工,被删除的结点保存到另一个链表中。
在主函数中设计简单的菜单去调用上述函数。
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
typedef struct __EMPLOYEE
}
8.5 有10个学生,每个学生的数据包括学号、姓名和三门课的成绩。用键盘输入10个学生的数据,要求打印出每个学生三门课的平均成绩,以及最高分的学生的数据(学号、姓名、三门课的成绩和平均分数)。
#include <stdio.h>
#include <string.h>
typedef struct
{
char name[20];
LPNODE head=NULL;
void AddNode(int data)
{
LPNODE t;
t=(LPNODE)malloc(sizeof(NODE));
t->data=data;
t->next=NULL;
if (head==NULL)
head=t;
else
{
t->next=head;
head=t;
}
}
int Count(LPNODE head)
{
int i=0;
while (head!=NULL)
{
i++;
head=head->next;
}
return i;
}
void main()
{
int n;
do{
scanf("%d",&n);
if (n==-1) break;
AddNode(n);
} while(n!=-1);
char sno[20];
int score_1;
int score_2;
int score_3;
double score_all;
} STUDENT;
#define N 10
STUDENT students[N]={0};
void main()
{
int i,max;
for (i=0;i<N;i++)
WORD temp;
lc=*s;
if (!IsSeparator(lc))
AddWord(s);
for (i=1;c=*(s+i);i++)
{
if (!IsSeparator(c) && IsSeparator(lc))
AddWord(s+i);
lc=c;
}
for (i=0;i<word_count-1;i++)
{
int i,found=0;
char ss[20];
for(i=0;*s && !IsSeparator(*s);s++,i++)
ss[i]=*s;
ss[i]=0;
for (i=0;i<word_count;i++)
if (strcmp(ss, words[i].s)==0)
{
found=1;
break;
}
}
8.3 编写一个函数,统计并打印所输入的正文中的各个英文单词出现的次数,并按次数的递减顺序输出。#include <stdio.h>
#include <string.h>
typedef struct
{
char s[20];
int count;
} WORD;
#define N 100
WORD words[N]={0};
scanf("%d",&books[i].Date_Month);
printf("Input Book's Status, 1-Loaned, 2-Keepin:");
scanf("%d",&books[i].loaned);
}
for (i=0;i<N;i++)
{
printf("Book: %s, Author: %s, Publishing:%d-%d, Status:%d\n", books[i].Name, books[i].Author, books[i].Date_Year, books[i].Date_Month, books[i].loaned);
scanf("%d",&students[i].score_1);
printf("Input #%d Student's Score_2:");
scanf("%d",&students[i].score_2);
printf("Input #%d Student's Score_3:");
scanf("%d",&students[i].score_3);
students[i].score_all=students[i].score_1+students[i].score_2+students[i].score_3;
}
max=0;
for(i=0;i<N;i++)
{
printf("%s %s %d %d %d %lf \n",students[i].name, students[i].sno, students[i].score_1, students[i].score_2, students[i].score_3, students[i].score_all/3);
}
8.7 请编程序建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束。
#include <stdio.h>
#include <malloc.h>
typedef struct __NODE
{
int data;
__NODE* next;
} NODE, *LPNODE;
if (n==-1) break;
AddNode(n);
} while(n!=-1);
printf("Count:%d", Count(head));
}
8.11 说明一个枚举类型enum month,它的枚举元素为:Jan、Feb、…、Dec。编写能显示上个月名称的函数last_month。例如,输入Jan时能显示Dec。再编写另一个函数printmon,用于打印枚举变量的值(枚举元素)。最后编写主函数调用上述函数生成一张12个月份及其前一个月份的对照表。#include <stdio.h>
int word_count=0;
int IsSeparator(char c)
{
if ( 'A'<=c && c<='Z' ||
'a'<=c && c<='z' ||
'0'<=c && c<='9' ||
'_'==c||
'-'==c)
return 0;
else
return 1;
}
void AddWord(char *s)
{
int data;
__NODE* next;
} NODE, *LPNODE;
LPNODE head=NULL;
void AddNode(int data)
{
LPNODE t;
t=(LPNODE)malloc(sizeof(NODE));
t->data=data;
t->next=NULL;
if (head==NULL)
{
int sno;
int age;
int sex;
__EMPLOYEE* next;
} EMPLOYEE, *LPEMPLOYEE;
LPEMPLOYEE head=NULL, retired=NULL;
void AddNode(int sno, int age, int sex)
{
LPEMPLOYEE t,p;
enum month{ Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec};
char *ms[12]={ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
int Date_Year;
int Date_Month;
int loaned;
} BOOK;
#define N 10
void main()
{
BOOK books[N];
int i;
for (i=0;i<N;i++)
{
printf("Input Book's Name:");
gets(books[i].Name);
void Last_Month(month m)
{
int i;
if (m==0)
i=11;
else
i=m-1;
printf("%s pre: %s \n",ms[m], ms[i]);
}
void printmon(month m)
{
printf("%s val: %d\n", ms[m], m);
}
{
t=i;
for(j=i+1;j<word_count;j++)
if (words[t].count<words[j].count)
t=j;
if (i!=t)
{
temp=words[t];
words[t]=words[i];
words[i]=temp;
}
}
for (i=0;i<word_count;i++)
t=(LPEMPLOYEE)malloc(sizeof(EMPLOYEE));
if (students[max].score_all<students[i].score_all)
max=i;
}
printf("top = %s %s %d %d %d %lf \n",students[max].name, students[max].sno, students[max].score_1, students[max].score_2, students[max].score_3, students[max].score_all/3);
printf("Input Book's Author:");
gets(books[i].Author);
printf("Input Book's Year of Publishing:");
scanf("%d",&books[i].Date_Year);
printf("Input Book's Month of Publishing:");
{
printf("Input #%d Student's Name:");
scanf("%s",students[i].name);
printf("Input #%d Student's SNO:");
scanf("%s",students[i].sno);
printf("Input #%d Student's Score_1:");
void main()
{
month i;
for (i=Jan;i<=Dec;i=(enum month)(i+1))
{
Last_Month(i);
printmon(i);
}
}
8.13 设有一包含职工编号、年龄和性别的单向链表,分别使用函数完成以下功能:
(1)建立链表;
(2)分别统计男女职工的人数;
(3)在链表尾部插入新职工;
{
printf("%s : %d \n", words[i].s, words[i].count);
}
}
void main()
{
char *s="Every C program has a primary main function that must be named main";
func(s);
第八章
8.1 用一个数组存放图书信息,每本书是一个结构,包括下列几项信息:书名、作者、出版年月、借出否,试写出描述这些信息的说明,并编写一个程序,读入若干本书的信息,然后打印出以上信息。#include <stdio.h>
typedef struct
{
char Name[20];
char Author[20];
}Fra Baidu bibliotek
if (found==0)
{
words[word_count].count=1;
strcpy(words[word_count].s, ss);
word_count++;
}
else
{
words[i].count++;
}
}
void func(char *s)
{
int i,j,t;
char c,lc;
head=t;
else
{
t->next=head;
head=t;
}
}
int Count(LPNODE head)
{
int i=0;
while (head!=NULL)
{
i++;
head=head->next;
}
return i;
}
void main()
{
int n;
do{
scanf("%d",&n);
printf("Count:%d", Count(head));
}
8.9 已知一个链表,链表中的结构为:
struct object
{char ch;
struct object *next;
}
编写函数统计链表中的结点个数。
#include <stdio.h>
#include <malloc.h>
typedef struct __NODE
相关文档
最新文档