C程序设计8章答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第八章
2.判断正误:结构体类型的声明可以在函数外面进行,也可以在函数内部进行,但在使用结构体类型之前,必须先进行声明。

(√)
4.下面的程序输出结果是:LiSi,19
#include <stdio.h>
struct stu
{
char name[10];
long int tel;
int age;
};
void fun(struct stu *p, int a)
{
printf(“%s,%d\n”,p->name,a);
}
main()
{
struct stu student[4]={{“ZhangSan”,61111111,17},{“LiSi”,62222222,16},{“WangWu”,633333 33,19},{“ZhaoLiu”,63333333,18}};
fun(student+1,student[2].age);
}
6.假设有如下结构体类型说明:
struct aa
{
int a;
int b;
};
根据下面的提示写出对应的代码。

(1)定义上述结构体类型变量x和整型变量y。

aa x;
int y;
(2)给变量x的两个成员a和b分别赋1和2。

x.a = 1;
x.b = 2;
(3)将变量x的两个成员之和赋给y。

y = x.a + x.y;
(4)输出y的值。

printf(“%d\n”, y);
8.编写程序,定义一个结构体类型,含学生的姓名、学号和数学成绩,给5名学生输入以上信息,并按数学成绩从高到低排序。

#include<stdio.h>
struct Student
{
char cName[10];
char cNumber[10];
float fMathscore;
};
main()
{
/* Student s[5] = {
{"Li Ming", "100001", 80.5},
{"Liu Qiang", "100002", 55.5},
{"Wang Hong", "100003", 100},
{"Fang Li", "100004", 70},
{"Gao Feng", "100005", 90.5} };
*/
//排序
int i, j;
bool bChange;
Student sTem;
Student s[5];
printf("依次输入5名学生的信息(姓名学号成绩):\n");
for(i=0; i<5; i++)
scanf("%s%s%f", &s[i].cName, &s[i].cNumber, &s[i].fMathscore);
for(i=0; i<4; i++)
{
bChange = false;
for(j=1; j<5-i; j++)
{
if(s[j-1].fMathscore < s[j].fMathscore)
{
sTem = s[j];
s[j] = s[j-1];
s[j-1] = sTem;
bChange = true;
}
}
if(!bChange)
break;
}
//输出结果
for(i=0; i<5; i++)
printf("%s %s %0.1f\n", s[i].cName, s[i].cNumber, s[i].fMathscore);
}
10.判断正误:在单向链表中可以由任意一个结点向表尾方向找到其后各结点,同样也可以由任意一个结点向表头方向找到其前各结点。

(×)
12.判断正误:若有定义和初始化“int a, *p=&a;”,则free(p)的功能是释放p所指向的存储单元。

(√)
14.已建立如图8.17所示的链表结构,指针p、q分别指向图中所示的结点,将q 所指的结点插入到链表末尾的语句组是
p->next->next = q; q->next = NULL;
16.编写程序,建立一个带头结点的具有6个结点的单向链表,并给链表数据域输入值,最后将值为偶数的结点输出。

#include<stdio.h>
#include<malloc.h>
#define NULL 0
#define Newnode() (pNode)malloc(sizeof(Node)) //新建一个结点
typedef int node_type; //结点值域的类型
typedef struct Node
{
node_type data;
Node *next;
}*pNode;
pNode Creatheadlink(int n)
{//创建有n个结点的带表头结点的链表
pNode head, p, q;
head = Newnode();
head->next = NULL;//将表头指针置空
q = head;
for(int i=0; i<n; i++)
{
p = Newnode();
p->data = i*3+7;//给新结点值域赋值
p->next = NULL;
q->next = p;//插在表尾处
q = p;
}
return (head);
}
main()
{
pNode p, q;
p = Creatheadlink(6);
q = p;
do
{
q = q->next->next;//指向偶数结点
printf("%d\n", q->data);
}while(q->next);
}。

相关文档
最新文档