高级语言程序设计综合练习一 学号: 姓名:
c)char str[20]; d)char str[20],*p=str;
scanf(\ scanf(\17、 下面程序的运行结果是____. #include
char *s1=\ char *s2=\ s1+=2;s2+=2;
printf(\ }
a)正数 b)负数 c)零 d)不确定的值
18、 若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为_____ a)*(a[i]+j) b)(a+i) c)*(a+j) d)a[i]+j 19、 若有以下定义,则p+5表示___. int a[10],*p=a;
a)元素a[5]的地址 b)元素a[5]的值 c)元素a[6]的地址 d)元素a[6]的值 20、 以下程序的输出结果是________. #include
void fun(int *p); int main() {
int x = 3; fun(&x);
printf(“x = %d\\n”, x); }
void fun(int *p) {
*p = 5; }
A) 3 B) 5 C) 8 D) 2 21、 下面判断正确的是
A)char *a=\等价于 char *a;*a=\
B)char str[5]={\等价于char str[]={\C)char *s=\等价于 char *s;s=\
D)char c[4]=\[4]=\等价于char c[4]=d[4]=\
22、 下列程序的运行结果是
void fun(int *a, int *b) { int *k;
k=a; a=b; b=k;
26
高级语言程序设计综合练习一 学号: 姓名:
}
main()
{ int a=3, b=6, *x=&a, *y=&b; fun(x,y);
printf(\%d\a, b); }
A)6 3 B)3 6 C)编译出错 D)0 0
二、判断题
1. ( F )指针变量里存放的是地址值,因此指针变量只能是int型的。 2. ( T )有一个一维数组a[10],那么a与&a[0]等价。
3. ( F )有如下程序段:int i, j = 2, k, *p = &i;k = *p + j;这里出现的两个“*”号,
含义是一样的。
4. ( F )在C语言中,每一个变量在内存里占用的单元数都是相同的。 5. ( T )通过指针变量,就能间接地得到它所指向的变量的值。
6. ( F )有说明:int *p;且p指向地址为1500的内存单元,那么经过操作“p++;”后,p
将指向1501的内存单元。
7. ( T )一个变量的指针就是该变量的地址。 8. ( F )在C语言中允许将一个整数赋给指针变量。
9. ( F )数组名实际上是此数组的首地址,所以数组名相当于一个指针变量。 10. ( F )char *p[10];定义了一个指向字符数组的指针变量。
答案:
DBABB BCBDA BDBDD ABDAB CB FTFFT FTFFF
C语言程序设计练习题
结构体与联合体
一、单选题
1. 下列关于结构体的说法错误的是:( D )
A:结构体是由用户自定义的一种数据类型
B:结构体中可设定若干个不同数据类型的成员
C:结构体中成员的数据类型可以是另一个已定义的结构 D:在定义结构体时,可以对成员进行初始化
2. 以下结构体类型说明及结构体变量a,b的定义中,正确的是:( B )
A:struct ss B:struct ss { char flag; { char flag;
27
高级语言程序设计综合练习一 学号: 姓名:
float x; float x; } ; };
ss a,b; struct ss a,b; C:struct D:struct
{ char flag; { char flag;
float x; float x; }ss; }ss;
ss a,b; struct ss a,b;
3. 设有以下说明语句:
struct stu { int a; float b;
}stutype;
则下面的叙述不正确的是:( C ) A:struct是结构体类型的关键字
B:struct stu是用户定义的结构体类型名 C:stutype是用户定义的结构体类型名 D:a和b都是结构体成员名
4. 在VC++6.0中使用C语言时,若有如下定义:
struct data { long i; char ch; double f;
}b;
则结构变量b占用内存的字节数是:( D )
A:4 B:8 C:12 D: 13 5. 下面程序的运行结果是:( ) main( )
{ struct cmplx { int x; int y; }c[2]={1,3,2,7};
printf(\}
A:0 B:1 C:3 D:6
6. 若有以下说明和语句,则对pup中sex域的正确引用方式是:( ) struct pupil
{ char name[20]; int sex; }pup,*p; p=&pup;
A:p.pup.sex B:p->pup.sex C:(*p).pup.sex D:(*p).sex
28
高级语言程序设计综合练习一 学号: 姓名:
7. C语言规定结构体变量系统分配给它的存储空间是( )
A)该结构体中最后一个成员所需的存储空间 B)该结构体中所有成员所需存储空间的总和。 C)该结构体中第一个成员所需的存储空间
D)该结构体中占用最大存储空间的成员所需的存储空间
8. 当说明一个共用体变量时,系统分配给它的内存是:( )
A:各成员所需内存量的总和
B:共用体中第一个成员所需内存量
C:成员中占内存量最大者所需的内存量 D:共用体中最后一个成员所需内存量
9. 以下对C语言中共用体类型数据的叙述正确的是:( )
A:可以对共用体变量名直接赋值
B:一个共用体变量中可以同时存放所有成员 C:一个共用体变量中不能同时存放其所有成员 D:共用体类型定义中不能出现结构体类型的成员
10. 若有以下定义和语句: union data { int i; char c; float f; }a;
则以下语句正确的是:( )
A:a=5 B:printf(\ C:a={2,'a',1.2};
11. 根据以下定义,能输出字母M的语句是( ) struct person { char name[9];int age;}; struct person class[10]={ “John”,17, “Paul”,19, “Mary”,18, “Adam”,16,}; A.printf(“%c\\n”,class[3].name); B.printf(“%c\\n”,class[3].name[1]); C.printf(“%c\\n”,class[2].name[1]); D.printf(“%c\\n”,class[2].name[0]);
12.有如下定义:
struct date { int y ;
int m ; int d ;}; struct person
{ char name[20];
D:n=a 29
高级语言程序设计综合练习一 学号: 姓名:
char sex;
struct date birthday; }a;
对结构体变量a的出生年份进行赋值时,下面正确的赋值语句是( )。 A y =1958 B birthday.y=1958
C a.birthday.y =1958 D a.y =1958
13.有以下程序段
typedef struct node { int data;
struct node *next; }NODE; NODE *p;
以下叙述正确的是( )
A)NODE *p;语句出错 B)p 是指向struct node 结构体变量的指针的指针
C)p 是struct node 结构体变量 D)p 是指向struct node 结构体变量的指针
14.以下关于typedef 的叙述错误的是( )
A) typedef只是将已存在的类型用一个新的名字来代表 B) 用typedef可以增加新类型
C)用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名 D)用typedef为类型说明一个新名,通常可以增加程序的可读性
15.下面程序的运行结果是( )
union un
{ int a; int b; int c;}; main()
{ union un u;
u.a=1; u.b=2; u.c=3;
printf(“a=%d,b=%d,c=%d\\n”,u.a,u.b,u.c); }
A)a=3,b=3,c=3 B)a=1,b=2,c=3 C)a=1,b=1,c=1 D)a=2,b=2,c=2
(第9章 结构体与联合体)参考答案
一、单选题
答案: 1D 2 B 3 C 4 D 5 D 6 D 7B 8C 9 C 10 B 11 D 12 C 13D 14B 15A
二、程序填空
30
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言练习题(谭浩强第四版)..附有答案 (1)(6)在线全文阅读。
相关推荐: