云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > c语言教材全部答案

c语言教材全部答案

  • 62 次阅读
  • 3 次下载
  • 2025/12/11 1:04:19

{ int num; char name[20]; int score; struct stu_node * next; };

int n; //n表示链表结点个数 struct stu_node * create() { struct stu_node *head, *p1, *p2, *p; head = NULL; //建立空表 n = 0;

printf(\请输入学号、姓名、成绩(学号为0时停止输入):\\n\ do { p = (struct stu_node *)malloc(SIZE); scanf(\&p->num, p->name, &p->score); //建立新结点,

并初始化

if(p->num == 0) break; //学号为0时,

终止循环

else{ p2 = head; if(head == NULL) { head = p; head->next = NULL; } //原表为空

时插入为头结点

else{ while((p->num > p2->num)&&(p2->next != NULL)) { p1 = p2; p2 = p2->next; } //p1,p2各后移一个结点 if(p->num <= p2->num){ //在p1与p2之间插入新结

if(head == p2) head = p; else p1->next = p; p->next = p2; }

else {p2->next = p; p->next = NULL; } //新结点插入为尾结点 } }

n++; //表长加1 }while(1); free(p); return head; //返回链表头

指针

}

4. 在第3题的基础上,编写一个函数,查找特定学生的信息,并输出查找结果。

函数如下:

void search_stu(struct stu_node *head, int num) //查找学号为num的记录信息 { struct stu_node *p; p = head; if(head == NULL) { printf(\空表,无记录!\\n\ return; } do { if(num == p->num){ printf(\学号 姓名 成绩\\n\

printf(\ %s %d\\n\ break;

} else p = p->next; }while(p != NULL); if(p == NULL) printf(\该表中无此记录!\\n\

}

5. 有一个单向链表old(结点信息为姓名、基本工资),编写一个函数将old复制到一个新链表new上。

函数如下:

struct empl_node { char name[20]; float jbgz; struct empl_node * next; };

int new_n=0; //new表的表长

void copy_emp(struct empl_node *old, struct empl_node *new) { struct empl_node *last, *p, *s; p = old; new = last = NULL; //last是new表的表尾指针 if(old == NULL) { printf(\空表,无记录!\\n\ return; } else{

while(p != NULL){

}

s = (struct empl_node *)malloc(SIZE); strcpy(s->name, p->name); s->jbgz = p->jbgz; s->next = NULL;

if(new == NULL) new = s; else last->next = s; last = s; new_n++; p = p->next;

}

6. 有两个单向链表list1和list2(结点信息均为姓名、基本工资),编写一个函数将链表list2拼接到链表list1的后面,函数返回拼接后的新链表。

函数如下:

struct empl_node { char name[20]; float jbgz; struct empl_node * next; };

struct empl_node link_emp(struct empl_node *list1, struct empl_node *list2) { struct empl_node *p, *s; p = list1; s = list2; while(p->next != NULL) p = p->next; while(s != NULL){ list2 = s->next; p->next = s; p = s; p->next = NULL; s = list2; }

return list1; }

习题10

1. 什么是共用体数据类型?试比较共用体与结构体。

答:共用体数据类型是C语言的一种用户自定义构造类型,它可以有多个不同数据类型的成员,但每次只使用它的一个成员,这种类型定义的变量占用的空间取其成员中最长的一个,这种数据对象在程序执行的不同时间能存储不同类型的值。共用体与结构体类型的比较:①共用体类型定义的形式跟结构体类型的定义形式相同,只是其类型关键字不同,前者是union,后者是struct;②共用体类型和结构体相似,也可以有多个不同数据类型的成员,但共用体每次只使用它的一个成员,而结构体无此限制;③共用体类型定义的变量占用的空间取其成员中最长的一个,而结构体类型定义的变量占用的空间是其所有成员长度之和。

2. 什么是枚举数据类型?请举例说明。

答:枚举数据类型是C语言的一种用户自定义基本类型,为提高程序描述问题的直

观性,在枚举类型的定义中列举出所有可能的取值,被说明为该枚举类型的变量取值不能超过定义的范围。例如:enum day{sun, mon, tue, wed, thu, fri, sat};

3. 什么是类型定义?请举例说明。

答:类型定义是对现有数据类型的标识符的重新定义,即定义一个现有类型标识符

的“别名”,这种方法可改善程序的可读性。例如:typedef int ARRAY[10]; ARRAY a, b;

4. 分析下列程序的运行结果。 (1)

#include main() { union { char ch[2]; int d; } s; s.d = 0x4321; printf(\ }

程序运行结果:21,43 (2)

#include fun(int x) {

int i;

for (i=15; i>=0; i--) printf(\}

main() {

搜索更多关于: c语言教材全部答案 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

{ int num; char name[20]; int score; struct stu_node * next; }; int n; //n表示链表结点个数 struct stu_node * create() { struct stu_node *head, *p1, *p2, *p; head = NULL; //建立空表 n = 0; printf(\请输入学号、姓名、成绩(学号为0时停止输入):\\n\ do { p = (struct stu_node *)malloc(SIZE); scanf(

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com