填空。 main()
{ char s[80], d[80]; int i,j; gets(s);
for(i=j=0;s[i]!='\\0';i++)
if( ) { d[j]=s[i]; j++; } d[j]='\\0'; puts(D);}
13. 编程实现:输入字符串:abc123aedf456agh,将其中字符a删除。
第九章 结构体
复习要点:
1. 结构体的定义和成员的引用。
2. 通过结构体构成链表,单向链表的建立,结构点的输出、删除与插入。 1.在说明一个结构体变量时系统分配给它的存储空间是( ) A)该结构体中第一个成员所需的存储空间 B)该结构体中最后一个成员所需的存储空间
C)该结构体中占用最大存储空间的成员所需的存储空间 D)该结构体中所有成员所需存储空间的总和。
2.以下对结构体变量stu1中成员age的非法引用是( ) #include
36
struct student {
int age; int num;
}stu1,*p; p=&stu1;
A)stu1.age B)student . age C)p->age D) age 3.有如下定义: Struct date {
int year,month,day; };
Struct worklist {
Char name[20]; Char sex;
Struct date birthday; }person;
对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是( ) 。
A year=1978 B birthday.year=1978 C person.birthday.year=1958 D person.year=1958 4.写出下列程序的输出结果: #include
37
struct info {int k; char *s; }t;
void f(struct info f) {t.k=1997; t.s=\}
void main() { }
5.若有以下的说明和语句,则表达式p->a的值是 struct we {int a; int *b; }*p;
int x0[]={11,12},x1[]={31,32}; struct we x[2]={100,x0,300,x1};
t.k=2000; t.s=\f(t);
printf(“%d,%s\\n”,t .k, t.s);
38
p=x;
6. 读懂以下语句的含义(有以下结构体说明和变量定义,实现链表的元素 删除和插入)。 struct node { int data; struct node *next; }
想要删除的节点指针q后面的节点 If(q->next) q->next=(q->next)->next; 在节点指针q后面添加节点r r.next=q->next; q->next=&r;
7.读懂以下程序(用于在结构体数组中查找分数最高和最低的同学姓名和成绩。) #include
int max,min,i,j; struct {
char name[8];
int score;}stud[5]={\李平\王兵\钟虎\孙逊\徐军\
39
}
max=min=1; for(i=1;i<5;i++)
if(stud[i].score >s tud[max].score)
max=i;
else if(stud[i].score min=i; printf(\最高分:%s %d\printf(\最低分:%s %d \ 8. 读懂以下程序:(输入4本书的名称,单价,作者,出版社,按书名进行排版和输出。) #include void main() {struct book bookarray[4]={{\ char bookname[40];/*书名*/ float price; /*单价*/ char author[10];/*作者*/ char press[40];/*出版社*/ 40