高级语言程序设计综合练习一 学号: 姓名:
{ int a[ ]={1,2,3,4,5,6,7,8,9,0,},*p; p=a;
printf(\}
A) 0 B) 1 C) 10 D) 9
8、 若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是:( )
A) i = *p; B) *p = *&j; C) i = &j; D) i = **p; 9、 以下定义语句中,错误的是:( )
A) int a[]={1,2}; B) char *a[3]; C) char s[10]=\ D) int n=5,a[n];
10、 以下不能正确进行字符串赋初值的语句是:( ) A) char str[5]=\; B) char str[]=\
C) char *str=\11、 有以下程序 main()
{ int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
int i,s=0;
for(i=0;i<4;i++) s+=aa[i][1]; printf(\}
程序运行后的输出结果是:( )
A) 11 B) 19 C) 13 D) 20 12、 有以下程序 #include
{ char *p=\
printf(\}
程序运行后的输出结果是:( ) A) 12 B) 15 C) 6 D) 5
13、 变量的指针,其含义是指该变量的______. a)值 b)地址 c)名 d)一个标志
14、 若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是_______. a)a,point,*&a b)&*a,&a,*point c)*&point,*point,&a d)&a,&*point ,point 15、 若有说明;int *p,m=5,n;以下正确的程序段的是____. a)p=&n; b)p=&n; scanf(\ scanf(\ c)scanf(\ d)p=&n;
*p=n; *p=m; 16、 以下正确的程序段是______.
a)char str[20]; b)char *p; scanf(\ scanf(\
25
高级语言程序设计综合练习一 学号: 姓名:
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