C++程序设计课件 设计制作:徐龙琴 1
1 当说明一个结构变量时,系统分配给它的内存一般是
a,各成员所需内存量的总和
b,结构中第一个成员所需内存量
c,成员中占内存量最大的成员所需的容量
d,结构中最后一个成员所需内存量
2 下面四个运算符中,优先级最低的是
a ( ) b, c -> d ++
3 在对 typedef的叙述中错误的是
a.用 typedef可以定义各种类型名,但不能用来定义变量
b.用 typedef可以增加新类型
c.用 typedef只是将已存在的类型用一个新的标识符来代表
d.使用 typedef有利于程序的通用和移植
一、选择题,
a
d
b
C++程序设计课件 设计制作:徐龙琴 2
4、选择下面程序的运行结果
#include <stdio.h>
struct cmplx
{ int x;
int y;
}cnum[2]={1,3,2,7};
int main( )
{ printf("%d\n",cnum[0].y*cnum[1].x);
return 0;
}
a,0 b,1 c,3 d,6
d
C++程序设计课件 设计制作:徐龙琴 3
5、已知:
struct sk
{ int a;
float b;
}data,*p;
若有 p=&data,则对 data中的成员 a的正确引用是
a,(*p).data.a b,(*p).a
c,p->data.a d,p.data.a
6、设有以下说明语句,
struct ex
{ int x; float y; char z;}example;
则下面的叙述中不正确的是
a.struct是结构类型的关键字
b.example是用户定义的结构类型名
c.x,y,z都是结构成员名 d.struct ex是用户定义的结构类型
b
b
C++程序设计课件 设计制作:徐龙琴 4
7、选择下面程序的运行结果是
#include <iostream.h>
struct stu
{ int num;
char name[10];
int age;};
void fun(stu *p)
{ cout<<(*p).name<<endl; }
void main()
{ stu students[3]={{9801,"Zhang",20},
{9802,"Long",21},
{9803,"Xue",19}};
fun(students+2);}
a.Zhang b.Xue c.Long d.18
b
C++程序设计课件 设计制作:徐龙琴 5
8,struct
{ int x,y;
} s[2]={ {1,2},{3,4} },*p=s;
则表达式 ++p->x的值为
表达式( ++p) ->x的值为
9 用 typedef定义整型一维数组:
typedef int ARRAY[10];
则对整型数组 a[10],b[10],c[10]可以定义为
2
3
ARRAY a,b,c;
C++程序设计课件 设计制作:徐龙琴 6
10、有以下定义和语句,则表达式 ++ptr->i 的值为
struct s
{ int i;
int *j;
};
int a[]={1,2,3,4,5,6};
s a[3]={5,&a[1],7,&a[2],9,'\0'},*ptr;
void main()
{ …
ptr=&a[0];

}
6
C++程序设计课件 设计制作:徐龙琴 7
二 读程题:
1,#include <stdio.h>
struct two
{ int x,*y ; }*p;
int a[8]={1,2,3,4,5,6,7,8};
two b[4]={100,&a[1],200,&a[3],10,&a[5],20,&a[7]};
void main()
{ p=b;
printf("%d\n",++(p->x));
}
程序的运行结果为:
101
C++程序设计课件 设计制作:徐龙琴 8
2,#include <stdio.h>
struct n_c
{int x;
char c;};
void func(struct n_c );
void main( )
{struct n_c a={10,'x'};
func(a);
printf("%d %c",a.x,a.c);}
void func(struct n_c b)
{ b.x=20;
b.c='y';}
程序的运行结果为:
10 x
C++程序设计课件 设计制作:徐龙琴 9
3 #include <iostream.h>
struct clock
{ int hour;
int minute;
int second;
} aClock;
void updata()
{ aClock.second++;
if(aClock.second==60)
{aClock.second=0;aClock.minute++;}
if(aClock.minute==60)
{ aClock.minute=0; aClock.hour++;}
if(aClock.hour==24) aClock.hour=0; }
void display()
{ cout<<aClock.hour<<":"<<aClock.minute
<<":"<<aClock.second<<endl;}
void main()
{ aClock.hour=aClock.minute=aClock.second=0;
for(int i=0;i<10000;i++)
{ updata();display();}
}
C++程序设计课件 设计制作:徐龙琴 10
三 编程题:
1、定义结构体类型 struct card,代表一张扑克牌的结构,结构
体中包含两个成员:牌的花色(定义字符串类型)和面值(
定义整型),再定义一个结构变量 deck,代表一张牌。
2、打印通讯录。该通讯录包括:班级、学号、姓名、住址、电
话,E-mail等。
3、输入 n个人的编号、姓名、身高,然后按身高从小到大的顺
序排列输出。
4、编写一函数 day,该函数使用 data结构作为参数,函数返回某
日是这年的第几天。
5、有 5个学生,每个学生的数据包括学号、姓名、数学、物理、
化学三门课的成绩,从键盘输入 5个学生的数据,要求打印
出三门课的平均成绩,以及最高分的学生的数据(包括学号、
姓名、三门课成绩、平均分)。
C++程序设计课件 设计制作:徐龙琴 11
6 将上题按照平均分由大到小排序并输出相应每位学生的学号、
姓名、三门课成绩和平均分。
7 试定义一个表示学生成绩的结构体,要求包含学号、姓名、
数学成绩、英语成绩,C++语言成绩。编写一个小型的班级
同学信息的管理系统。要求至少设有以下实用功能:录入学
生信息,求某门或各门课程的总分、平均分,按姓名或学号
寻找学生的记录并显示,按总分由高到低显 示学生信息等。
C++程序设计课件 设计制作:徐龙琴 12
例,已知 学生的学号、姓名、性别、年龄和数学成绩。 将 10个
学生的数学成绩按由高到低的顺序排列输出。
#include <iostream.h>
#include <string.h>
struct student //定义学生信息结构体类型
{char num[5];
char name[10];
char sex;
int age;
float mathscore;};
struct student st[10]={{"001","Wangping",'f',19,84},
{"002","Zhaomin",'m',20,64},
{"003","Wanghong",'f',18,54},{"004","Lilei",'m',19,92},
{"005","Liumin",'m',19,75},{"006","Meilin",'m',18,74},
{"007","Yetong",'f',18,96},{"008","Maomao",'m',19,92},
{"009","Zhangjie",'m',19,66},{"010","Wangmei",'f',21,39}};
C++程序设计课件 设计制作:徐龙琴 13
void sort(int n) //冒泡排序函数
{int i,j;
struct student temp;
for(i=0;i<n-1;i++)
for(j=0;j<n-i;j++)
if(st[j].mathscore<st[j+1].mathscore)
{temp=st[j]; st[j]=st[j+1]; st[j+1]=temp; } }
void print(int n) //输出函数
{int j;
cout<<" num"<<" name"<<" sex"<<" age"<<" mathscore"<<endl;
for(j=0;j<10;j++)
{cout<<setw(5)<<st[j].num<<setw(10)<<st[j].name<<setw(5)<<st[j].sex;
cout<<setw(5)<<st[j].age<<setw(6)<<st[j].mathscore<<endl;} }
void main()
{int n=10;
cout<<"The data of before sort,"<<endl;
print(n); //调用输出函数,输出排序前数据
sort(n); //调用排序函数
cout<<" The data of after sort,"<<endl;
print(n); //调用输出函数,输出排序后数据
}
C++程序设计课件 设计制作:徐龙琴 14
7、有以下定义和语句,则以下引用形式非法的是
struct s
{ int i1;
s *i2,*i0; };
static s a[3]={2,&a[1],NULL,4,&a[2],&a[0],6,NULL,&a[1]};
static s *ptr;
ptr=a;
a.ptr->i1++
b.*ptr->i2
c.++ptr->i0
d.*ptr->i1
C++程序设计课件 设计制作:徐龙琴 15
8、设有以下语句:
struct st
{ int n;
st *next;};
static st a[3]={5,&a[1],7,&a[2],9,NULL},*p;
p=&a[0];
则以下表达式值为 6的是
a.p++->n
b.++p->n
c.(*p).n++
d.p->n++
C++程序设计课件 设计制作:徐龙琴 16
7、设有以下定义和语句,
struct student
{ int num,age;
};
struct student stu[3]={{2001,20},{2001,21},{2001,19}};
struct studeng *p=stu;
则以下错误的引用是
a,(p++)->num
b,p++
c,(*p).num
d,p=&stu.age
d