第五章指针的使用

第5单元指针的使用单元测验

1、单选题:
‌已有定义int k=2, *ptr1,* ptr2;,且ptr1和ptr2均已指向变量k,不能正确执行的赋值语句是(      )。‎
选项:
A: k=*ptr1+*ptr2;
B: ptr2=k ;  
C: ptr1=ptr2;
D: k=* ptr1*(* ptr2);
答案: 【 ptr2=k ;  

2、单选题:
‎变量的指针是指该变量的(        )。‏
选项:
A: 值
B: 地址
C: 别名
D: 一个标志
答案: 【 地址

3、单选题:
‌如果有定义int a=5;,则下面对①、②两个语句的正确解释是(       )。‎
选项:
A: 语句①和②的含义相同,都表示给指针变量p赋值
B: 语句①和②的执行结果,都是把变量a的地址值赋给指针变量p
C: ①在说明p的同时进行初始化,使p指向a;②将变量a的值赋给指针变量p
D: ①在说明p的同时进行初始化,使p指向a;②将变量a的值赋给*p
答案: 【 ①在说明p的同时进行初始化,使p指向a;②将变量a的值赋给*p

4、单选题:
‌若有定义和语句,则输出结果是(       )。‍‌int **pp, *p, a=10, b=20;‍‌pp=&p;  p=&a;  p=&b;  ‍‌printf("%d,%dn",*p,**pp);‍
选项:
A: 10, 20
B: 10,10
C: 20,10
D: 20,20
答案: 【 20,20

5、单选题:
​若有以下的定义,则值为3的表式是(        )。​​int a[ ]={1,2,3,4,5,6,7,88,9,10}, *p=a;​
选项:
A: p+=2, *(p++)
B: p+=2,*++p
C: p+=3, *p++
D: p+=2,++*p
答案: 【 p+=2, *(p++)

6、单选题:
‏设有定义: char *a[2]={"ABC","123"}; 则以下说法正确的是(       ) 。‎
选项:
A: a数组成元素的值分别是"ABC"和"123"
B: a是指针变量,它指向含有两个数组元素的字符型一维数组
C: a数组的两个元素中各自存放了字符'A'和'1'的地址
D: a数组的两个元素分别存放两个字符串的首地址
答案: 【 a数组的两个元素分别存放两个字符串的首地址

7、单选题:
​下面各语句行中,能正确进行字符串赋值操作的语句是(      )。‍
选项:
A: char st[4][5]={"ABCDE"};
B: char s[5]={'A', 'B', 'C', 'D', 'E'};
C: char * s;s="ABCDE"; 
D: char *s;scanf("%s",s);
答案: 【 char * s;s="ABCDE"; 

8、单选题:
‏执行以下程序段后,y的值是(      )。 ‌‏  int a[]={2,4,6,8,10};‌‏  int y=1,x,* p;‌‏  p=&a[1];‌‏  for(x=0;x<3;x++)‌‏      y+=*(p+x);‌‏  printf("%dn",y);‌
选项:
A: 17
B: 18
C: 19
D: 20
答案: 【 19

9、单选题:
​有以下定义 ,则不能给数组a输入字符串的语句是(   )。‏​char a[10],*b=a;  ‏
选项:
A: gets(a);
B: gets(a[0]);
C: gets(&a[0]);
D: gets(b); 
答案: 【 gets(a[0]);

10、单选题:
‍以下说法正确的是(        )。‏
选项:
A: 数组在内存中占有连续空间,数组名是其首地址
B: 通过指针的引用运算可以修改指针所指对象的地址
C: 指针的指向不能改变
D: 在使用指针变量时,其可以指向任意内存空间
答案: 【 数组在内存中占有连续空间,数组名是其首地址

11、多选题:
‍若已定义char s[10];,则下面表达式中能表示s[1]的地址的是(       )。‍
选项:
A: s+1
B: s++
C: &s[0]+1
D: &s[1]
E: &s[3]-2
答案: 【 s+1;
&s[0]+1;
&s[1];
&s[3]-2

12、多选题:
​若有以下定义和语句,能正确引用w数组元素的是(       )。‎​int w[2][3], (*pw)[3];  ‎​pw=w;‎
选项:
A: *(w[0]+2)
B: *(pw+1)[2]
C: pw[0][0]
D: *(pw[1]+2)
E: *w[1][2]
答案: 【 *(w[0]+2);
pw[0][0] ;
*(pw[1]+2)

13、多选题:
‍以下程序段的功能是从键盘接收一个字符串,删除重复的字符。请选择填空(     )。‌‍  char string[100],c,*p,*q;‌‍  gets(string);‌‍  scanf("%c",&c);‌‍  for(p=q=string;*p;p++)‌‍      if(*p!=c) {(        )}‌‍  *q='';‌‍  printf("result;%sn",string);‌
选项:
A: *q++=*p;
B: q=p;
C: *q=*p;q++;
D: *p=*q;
E: *p=*q;p++;
答案: 【 *q++=*p;;
*q=*p;q++;

14、多选题:
‏若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是(       )。‏
选项:
A: &t[3][2]
B: t[3]
C: &t[1][2]
D: t[2] 
E: t[0][0]
答案: 【 &t[1][2];
t[2] 

15、判断题:
‌同其他基本数据类型一样,指针类型的数据也有常量,例如数组名就是指针类型常量。‏
选项:
A: 正确
B: 错误
答案: 【 正确

16、判断题:
‎在定义指针变量的同时,可以对其进行初始化,以保证指针变量中的指针有明确的指向。‌
选项:
A: 正确
B: 错误
答案: 【 正确

17、判断题:
‏以下程序段,对于指针的使用是正确的。‍‏short int a;‍‏float *p=&a;‍
选项:
A: 正确
B: 错误
答案: 【 错误

18、判断题:
‎运算符&、*、++、--的优先级相同,按自右向左的方向结合。‍
选项:
A: 正确
B: 错误
答案: 【 正确

19、判断题:
‎当两个指针指向不同数组时,两个指针可以比较大小,但没有实际意义。​
选项:
A: 正确
B: 错误
答案: 【 正确

20、判断题:
‍在C语言中,二维数组以行优先方式存放在一维线性内存空间中。‌
选项:
A: 正确
B: 错误
答案: 【 正确

21、判断题:
‌若有int a[5][5];则*(a+i)+j是a[i][j]的地址,*(a+i)等价于a[i]等价于&a[i][0]。‏
选项:
A: 正确
B: 错误
答案: 【 正确

22、判断题:
‌若有int (*p)[4];则表示变量p是一个指向有4个元素的一维整型数组的指针变量。‍
选项:
A: 正确
B: 错误
答案: 【 正确

23、判断题:
‌空指针并不指向任何对象,仅是一个概念,在程序中没有应用意义。‌
选项:
A: 正确
B: 错误
答案: 【 错误

24、判断题:
​在说明指针时,很多时候是由指针、数组、函数说明组合而成的。但它们并不能任意组合。​
选项:
A: 正确
B: 错误
答案: 【 正确

25、填空题:
‏有以下程序段,b的值是(      )。‍‏int  a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b; ‍‏b=p[5];  ‍
答案: 【 9

26、填空题:
‌对象在内存中所占存储空间的(        )称为指向该对象的指针。‌
答案: 【 起始地址

27、填空题:
​有以下程序段,输出结果是(       )。‍​char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"};  ‍​printf("%dn",strlen(p[4])); ‍
答案: 【 2

28、填空题:
‍有如下程序段,输出结果为(        )。​‍char s[]="goodbay!";​‍char *p=s;​‍while (*p) p++;​‍printf("%d",p-s);​
答案: 【 8

29、填空题:
‎设sizeof(short int)==2,显示结果为(      )。‍‎short int *p, *q;‍‎short int ar[10]={0};‍‎p = q = ar; ‍‎p++;‍‎printf("%d", (char*)p - (char*)q);‍
答案: 【 2

30、填空题:
下面程序段的输出结果为(       )。‌‎char s[20]="Hello!",*sp=s;‌‎s[2]='';‌‎puts(sp);‌
答案: 【 He

第1章基本数据类型与运算

第一单元基本数据类型与运算单元测验

1、单选题:
C语言属于(       )。
选项:
A: 机器语言
B: 低级语言
C: 中级语言
D: 高级语言
答案: 【 高级语言

2、单选题:
‍一个C语言程序是由(        )组成的。‍
选项:
A: 一个主程序和若干子程序
B: 函数
C: 若干过程
D: 若干子程序
答案: 【 函数

3、单选题:
​下面四个选项中,均是合法常量的是(         )。‏
选项:
A: 160, 0xffff, 011
B: 60, 0fa, 0xe
C: 01, 986,012, 0668
D: 0x48a, 2e5, 0x
答案: 【 160, 0xffff, 011

4、单选题:
‍下列可以作为变量名的是(          )。‌
选项:
A: CHina
B: byte-size
C: double
D: A+a
答案: 【 CHina

5、单选题:
​下列转义字符中,不正确的是(         )。‎
选项:
A: '\'
B: '"
C: '94'  
D: ''
答案: 【 '94'  

6、单选题:
‍若变量已正确定义并赋值,符合C语言语法的表达式是(        )。‍
选项:
A: a:=b+1;
B: a=b=c+2; 
C: int 18.5%3;
D: a=a+7=c+b;
答案: 【 a=b=c+2; 

7、单选题:
‏若已定义x和y为int,则表达式x=1,y=x+3/2 的值是(          )。‏
选项:
A: 1
B: 2
C: 2.0
D: 2.5
答案: 【 2

8、单选题:
‌能正确表示逻辑关系“a≥=10或a≤0”的C语言表达式是(             )。​
选项:
A: a>=10 or a<=0 
B: a>=0|a<=10
C: a>=10 && a<=0
D: a>=10 || a<=0
答案: 【 a>=10 || a<=0

9、单选题:
‎在下列一组运算符中,优先级最高的运算符是(          )。​
选项:
A: <=
B: =
C: %
D: &&
答案: 【 %

10、单选题:
‏设有定义int a,b,c; 执行表达式a=b=1,a++,b+1,c=a+b--后,a,b和c的值分别是(          )。‏
选项:
A: 2, 1, 2
B: 2, 0, 3
C: 2, 2, 3
D: 2, 1, 3
答案: 【 2, 0, 3

11、多选题:
​以下叙述不正确的是(         )。‎
选项:
A: 空语句也是语句
B: 一个C语言源程序可以没有main()函数
C: C语言程序的基本组成单位是函数
D: 在C语言程序中,注释有助于提高程序的可读性
E: C语言的源程序可以直接执行。
答案: 【 一个C语言源程序可以没有main()函数;
C语言的源程序可以直接执行。

12、多选题:
​下面对C语言特点的描述,正确的是(            )。‎
选项:
A: C语言兼有高级语言和低级语言的双重特点
B: C语言既可以用来编写应用程序,又可以来编写系统软件
C: C语言的可移植性较差
D: C语言是一种结构化程序设计语言
E: C 语言语句必须以分号结束
答案: 【 C语言兼有高级语言和低级语言的双重特点;
C语言既可以用来编写应用程序,又可以来编写系统软件;
C语言是一种结构化程序设计语言;
C 语言语句必须以分号结束

13、多选题:
​已知:‏​int a=5;float b=5.5; ‏​在下列表达式中,没有语法错误的是(         )。‏
选项:
A: a%3+b
B: b*b&&++a
C: (a>b)+(int(b)%2)
D: a&&b
E: a==b
答案: 【 a%3+b;
b*b&&++a;
a&&b;
a==b

14、多选题:
​以下选项中,能看作一条语句的是(           )。​
选项:
A: {;}
B: a=0,b=0,c=0;
C: if(a>0);
D: if(b==0) m=1;n=2;
E: a>=’a’&&a<=’z’?a+=32:a>=’A’&&a<=’Z’?a-=32:a;
答案: 【 {;} ;
a=0,b=0,c=0; ;
if(a>0); ;
a>=’a’&&a<=’z’?a+=32:a>=’A’&&a<=’Z’?a-=32:a;

15、判断题:
‍程序设计语言是用于编写计算机程序的一组记号和一组规则,包含语法、语义和语用三个方面。‍
选项:
A: 正确
B: 错误
答案: 【 正确

16、判断题:
‎C语言规定,在一个源程序中,main( )函数可以在任意位置。​
选项:
A: 正确
B: 错误
答案: 【 正确

17、判断题:
‌在C语言中,不管常量还是变量,都必须有各自的数据类型。‏
选项:
A: 正确
B: 错误
答案: 【 正确

18、判断题:
​系统存储时字符串时,只要存储字符串中所有字符便可。​
选项:
A: 正确
B: 错误
答案: 【 错误

19、判断题:
‍C语言的标识符不区分大小写,只是习惯上符号常量用大写字母表示,变量名用小写字母表示。‌
选项:
A: 正确
B: 错误
答案: 【 错误

20、判断题:
‌逻辑位运算是将参与运算的数据中每个二进制位上的0或1看成逻辑值,逐位进行逻辑运算,运算结果为整数。‍
选项:
A: 正确
B: 错误
答案: 【 正确

21、判断题:
‍在书写C语言程序时,一行内可以写几个语句,一个语句也可以分开写在多行上。‍
选项:
A: 正确
B: 错误
答案: 【 正确

22、判断题:
‏在C语言中变量可以不定义,直接使用。‏
选项:
A: 正确
B: 错误
答案: 【 错误

23、判断题:
‍以下程序段可以正确执行。 ‌‍a=100;int a,b; b=a+20; ‌
选项:
A: 正确
B: 错误
答案: 【 错误

24、判断题:
​以下程序段没有语法错误,但不能完成数据的正确输入。‎​int a,b,c;‎​scanf(“%d,%d,%d”,a,b,c);‎
选项:
A: 正确
B: 错误
答案: 【 正确

25、填空题:
‎赋值运算符两边的数据类型若不一致,系统会自动进行(          )。‎
答案: 【 类型转换

26、填空题:
‌关系运算可以用来判定某种关系是否成立。如果成立,则结果为逻辑“真”,用整数(    )表示。‍
答案: 【 1

27、填空题:
‏5%2的结果是1,5/2的结果是(    )。‏
答案: 【 2

28、填空题:
‎设int x,y,z,k; 则执行x=(y=4,z=16,k=3

剩余75%内容付费后可查看

发表评论

电子邮件地址不会被公开。 必填项已用*标注