C语言—指针习题
更新时间:2023-11-08 21:16:01 阅读量: 教育文库 文档下载
第8章 指针
二、习题
(一)、是非题
1.运算符“*”有时是单目运算符,有时又可能是双目运算符。
A.对 B.错
2.取地址运算符“&”与指针运算符“*”的优先级相同,结合方向为自右向左。
A.对 B.错
3. 指针变量的类型不是该变量本身的类型,而是它所指向的变量的类型。
A.对 B.错
4.指针变量不可以作为函数的参数。
A.对 B.错
5.&b指的是变量b的地址所存放的值。
A.对 B.错
6. 语句int *p;定义了一个指针变量p,其值是整型的。
A.对 B.错
7.语句“int *p ;”中*p的含义为取值。 //定义指针变量
A.对 B.错
8.一个变量的地址就称为该变量的“指针”。
A.对 B.错
9. 语句int i,*p=&i;是正确的C定义。
A.对 B.错
10. 变量的指针,其含义是指该变量的一个标志。
A.对 B.错
11.void 类型的指针不指向某种类型的数据,所以没有意义。
A.对 B.错
12. 表达式*p++的运算顺序为先自增后取值。
A.对 B.错
13.C语言中,执行表达式(*p)++后p的指向改变了。
A.对 B.错 14.两个指针相加没有意义。
A.对 B.错
15.若有定义:int *p1,*p2,m=3,n;,则p1=&m;p2=p1;是正确的赋值语句。
A.对 B.错
16.已知int a[4],*p;,则语句p=&a;是正确的。 // p=a;
A.对 B.错 17.char *name[5]定义了一个一维指针数组,它有5个元素,每个元素都是指向字符数据的
指针型数据。
A.对 B.错
18.*(&a[i]+j)与a[i][j]的含义相同。
A.对 B.错
19.若有定义:int (*p)[4];,则标示符p是一个指针,它指向一个含有四个整型元素的一维数组。
A.对 B.错 20.设有以下定义:char *c[2]={\,表示c数组的两个元素中分别存放了字符串\和\的首地址。
A.对 B.错 (二)、选择题
1.变量的指针,其含义是指该变量的______。
A.值 B.地址 C.名 D.一个标志 2.下面能正确进行字符串赋值操作的是______。
A.char s[5]={\ B.char s[5]={'A','B','C','D','E'}; C.char *s; s=\ D.char *s; scnaf(\3.以下语句或语句组中,能正确进行字符串赋值的是______。。
A.char *sp;*sp=\ B.char s[10];s=\C.char s[10];*s=\ D.char *sp=\
4.设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是______。
A.char str[]=\C.c=getchar();D.*c=\5.下列语句中,正确的是______。
A.char *s;s=\B.char s[7];s=\C.char *s;s={\
6.已有定义int k=2; int *p1,*p2; 且p1和p2均已指向变量k,下面不能正确执行的赋值
语句是______。 A.k=*p1+*p2; B.p2=k; C.p1=p2; D.k=*p1*(*p2); 7.若有定义:double a[10],*s=a;,以下能够代表数组元素a[3]的是______。
A.(*s)[3] B.*(s+3) C.*s[3]D.*s+3 8.若有定义int a[5],*p=a;,则对a数组元素的正确引用是______。
A.*&a[5] B.a+2 C.*(p+5) D.*(a+2)
9.若有定义语句: double a,*p=&a;以下叙述中错误的是______。
A.定义语句中*是一个间接访问运算符 B.定义语句中*号只是一个说明符
C.定义语句中p只能存放double类型变量的地址
D.定义语句中,*p=&a 把变量a的地址作为初始赋给指针变量p
10.若有程序段:char str[]=\则下列叙述正确的是______。
A.*p与str[0]相等
B.str数组长度和p所指向的字符串长度相等 C.str和p完全相同
D.数组str中的内容和指针变量p中的内容相等
11.若有语句int *point,a=4;和point=&a; 下面均代表地址的一组选项是______。
A.a,point,*&a B.&*a,&a,*point
C.&point,*point,&a D.&a,&*point,point 12.以下选项中,对指针变量p的正确操作是______。
A.int a[5],*p; p=&a; B.int a[5],*p; p=a;
C.int a[5]; int *p=a=1000; D.int a[5]; int *p1,*p2=a; *p1=*p2;
13.设有定义语句:int m[]={2,4,6,8},*k=m;,以下选项中表达式的值为6的是______。
A.*(k+2) B.k+2 C.*k+2 D.*k+=2 14.若有定义:int *p,m=5,n; ,以下正确的程序段是______。
A.p=&n;scanf(\C.scanf(\15.以下程序的运行结果是______。
#include\main()
{int m=1,n=2,*p=&m,*q=&n,*r; r=p;p=q;q=r;
printf(\
A.1,2,1,2 B.1,2,2,1 C.2,1,2,1 D.2,1,1,2 16.若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是
A.p=a B.q[i]=a[i] C.p=a[i] D.p=&a[2][1]
17.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是______。
#include\main()
{ int *p,q,a,b; p=&a; printf(\? } A.*p表示的是指针变量p的地址
B.*p表示的是变量a的值,而不是变量a的地址 C.*p表示的是指针变量p的值
D.*p只能用来说明p是一个指针变量
18.程序段char *s=\的运行结果是______。
A.cde B.字符'c'
C.字符'c'的地址 D.无确定的输出结果 19.下面程序段的运行结果是______。
char str[]=\表示p的地址从开始处移动3
A.67 B.0 C.字符'C'的地址 D.字符'C' 20.下面程序段的运行结果是______。
char a[]=\
while(*p!='u') {printf(\
A.LANGUAGE B.language C.LANG D.langUAGE 21.若有定义char s[10]; ,则在下面表达式中不表示s[1]的地址的是______。
A.s+1 B.s++ C.&s[0]+1 D.&s[1] 22.以下程序的运行结果是______。
#include
{char str[][20]={\printf(\printf(\
A.9,One*WorldB.9,One*Dream! C.10,One*Dream! D.10,One*World 23.下列函数的功能是______。
fun(char *a,char *b)
{ while((*b=*a)!='\\0') {a++,b++;} } A.使a所指字符串赋给b所指空间 B.使指针b指向a所指字符串
C.将a所指字符串和b所指字符串进行比较 D.检查a和b所指字符串中是否有'\\0' 24.以下程序的运行结果是______。
#include
{char *s={\
do{printf(\A.abc B.789 C.7890 D.979899 25.以下程序的运行结果是______。
#include
{printf(\main()
{int a[10]={1,2,3,4,5,6,7,8,9,10}; fun(&a[3]);}
A.5 B.6 C.8 D.9 26.若有定义语句: char *s=\,以下选项中能够输出“OK”的语句是______。
A.if(strcmp(s1,s2)=0) puts(s1); B.if(strcmp(s1,s2)!=0) puts(s2);
C.if(strcmp(s1,s2)=1) puts(s1);D.if(strcmp(s1,s2)!=0) puts(s1); 27.以下程序的运行结果是______。
#include
void fun(char *c,int d) {*c=*c+1;d=d+1;
printf(\main()
{char b='a',a='A'; fun(&b,a);
printf(\
A.b,B,b,AB.b,B,B,A C.a,B,B,a D.a,B,a,B 28.有以下定义和语句:
structworkers
{int num;char name[20];char c;
struct{ int day;int month;int year;}s; }; struct workers w,*pw; pw=&w;
能给w中year成员赋1980的语句是______。
A.*pw.year=1980; B.w.year=1980C.pw—>year=1980; D.w.s.year=1980; 29.下面程序把数组元素中的最大值放入a[0]中,则在if 语句中的条件表达式应该是______。
main()
{ int a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i;
for(i=o;i<10;i++,p++) if(________) *a=*p; printf(\ A.p>a B.*p>a[0] C.*p>*a[0] D.*p[0]>*a[0] 30.以下程序的运行结果是______。
#include
{int a[]={10,20,30,40},*p=a,i; for(i=0;i<=3;i++) {a[i]=*p;p++;} printf(\
A.30 B.40 C.10 D.10 31.以下程序的输出结果是______。
#include
{char *s=\int k=0,a=0;
while(s[k+1]!='\\0') {k++;
if(k%2==0) {a=a+(s[k]-'0'+1);continue;} a=a+(s[k]-'0');}
printf(\
A.k=6 a=11 B.k=3 a=14 C.k=4 a=12D.k=5 a=15 32. 以下程序的输出结果是______。
#include
{char a[5][10]={\int i,j;char t; for(i=0;i<4;i++) for(j=i+1;j<5;j++)
if(a[i][0]>a[j][0]){t=a[i][0];a[i][0]=a[j][0];a[j][0]=t;} puts(a[1]);}
A.fwo B.fix C.two D.owo 33.下面程序对两个整型变量的值进行交换。以下正确的说法是______。
main()
{ int a=10,b=20;printf(\swap(&a,&b); printf(\swap(int p,int q)
{ int t; t=p; p=q; q=t; } A.该程序完全正确
B.该程序有错,只要将语句swap(&a,&b); 中的参数改为a,b即可
C.该程序有错,只要将swap()函数中形参p和q以及t均定义为指针即可 D.以上说法都不正确
34.下面程序的功能是按字典顺序比较两个字符串a,b的大小,如果a大于b则返回正值,
等于则返回0,小于则返回负值。下划线处应该填______。 #include \
s(char *s ,char *t)
{ for( ; *s==*t; t++,s++) if(*s=='\\0') return 0; return(*s-*t); }
main()
{ char a[20],b[10],*p,*q; int i; p=a; q=b; scanf(\
i=s( __________ ); printf(\
A.p,q B.q,p C.a,p D.b,q 35.下面程序的运行结果是______。
#include
{ int i,j; char *a; a=s;
for(i=0,j=0;a[i]!= '\\0';i++)
if(a[i]>= '0'&&a[i]<= '9'){s[j]=a[i];j++;} s[j]= '\\0'; }
main()
{ char *item=\A.abc B.34 C.a23 D.a34bc 36.以下程序的执行后输出结果是______。
#include
{ char str[]=\ while(*ps) ps++;
for(ps--;ps-str>=0;ps--) puts(ps); }
A.yz B.z C.z D.x xyz yz yz xy
xyz xyz
37.以下程序的执行后输出结果是______。
#include
{ int a[3][3],*p,i; p=&a[0][0];
for(i=0;i<9;i++) p[i]=i;
for(i=0;i<3;i++) printf(\
A.012 B.123 C.234 D.345 38.以下程序执行后的输出结果是______。
#include
{ int a[]={1,2,3,4},y,*p=&a[1]; y=(*--p)++; printf(\
A.1 B.2 C.3 D.4
39.以下程序执行后的输出结果是______。
#include
void main()
{ char s1[10],*s2=\strcpy(s1,s2);
printf(\
A.ab\\0cdef B.abcdef C.ab D.以上答案都不对
40.若有函数:voidfun(double a[],int *n) {??},以下叙述中正确的是______。
A.调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送 B.形参a和n都是指针变量
C.形参a是一个数组名,n是指针变量
D.调用fun函数时将把double型实参数组元素一一对应地传送给形参a数组
正在阅读:
C语言—指针习题11-08
2019高三地理二轮练习课时作业--专题7第2讲中国地理06-28
军队任职教育教学互动策略04-04
区街道2021年农业发展工作总结和2022年工作打算08-03
水利工程施工机械台时费定额08-09
(教学反思参考3)画03-24
《新的学期,新的开始》国旗下的讲话范文03-23
区政协上半年工作总结和下半年工作打算04-29
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 指针
- 习题
- 语言
- 约翰福音小组查经系列25
- 公共营养师模拟理论试题及答案
- 合同价款的调整
- 第六届全国数控技能大赛数控机床装调维修广东选拔赛理论考核试题
- 小学科学期末质量分析报告
- 2017年土地管理与法规:土地管理的原则考试题
- 关于“大学生对中国传统文化态度”的调查报告
- 干部作风建设年活动开展情况汇报
- 进一步加强公务接待管理工作实施办法
- 利用评分卡技术实现信用卡市场活动精细化管理
- (一)名词解释(111)
- 外贸人员必备素质之我见 - 论文
- 创业课考试题库(含答案)
- wireshark抓包分析实验报告
- 运用多媒体技术 培养学生创新能力
- 人民银行金融管理政策自评估情况的报告
- 自考本科环境与资源保护法-案例及答案
- 反违章管理制度
- ENVI5.3处理高分二号 - 图文
- 2017智慧树中国看世界之加拿大篇