为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 1对于同类型的指针变量

1对于同类型的指针变量

2018-10-14 11页 doc 28KB 41阅读

用户头像

is_751406

暂无简介

举报
1对于同类型的指针变量1对于同类型的指针变量 1.对于同类型的指针变量,不可能进行的运算是( )。 A.- B.= C.+ D.== 2.下列不正确的定义是( )。 A.int *p=&i,i; B.int *p, i; C.int i, *p=&i; D.int t, *p; 3.下列正确的定义是( )。 A.int x=3,*p=1; B.int x=3,*p; C.int x=3,*p=x; D.int *p=&x=3; 4. 下列语句定义p为指向float类型变量d的指针,其中哪一个是正确的( )。 A、float d,*...
1对于同类型的指针变量
1对于同类型的指针变量 1.对于同类型的指针变量,不可能进行的运算是( )。 A.- B.= C.+ D.== 2.下列不正确的定义是( )。 A.int *p=&i,i; B.int *p, i; C.int i, *p=&i; D.int t, *p; 3.下列正确的定义是( )。 A.int x=3,*p=1; B.int x=3,*p; C.int x=3,*p=x; D.int *p=&x=3; 4. 下列语句定义p为指向float类型变量d的指针,其中哪一个是正确的( )。 A、float d,*p=d; B、float d,*p=&d; C、float *p=&d,d; D、float d,p=d; 5. 对语句“int a[10],*p=a;”,下列表述中哪一个是正确的( )。 A、*p被赋初值为a数组的首地址 B、*p被赋初值为数组元素a[0]的地址 C、p被赋初值为数组元素a[1]的地址 D、p被赋初值为数组元素a[0]的地址 6.设有定义 int a=1,b,*p=&a; 则下列语句中使b不为a的语句是( )。 A.b=*&a; B.b=*p; C.b=a; D.b =*a; 7. p1指向某个整型变量,要使指针p2也指向同一变量,哪一个语句是正确的( )。 A、p2=p1; B、p2=**p1; C、p2=&p1; D、p2=*p1; 8. 假如指针p已经指向变量x,则&*p相当于( )。 A、x B、*p C、&x D、**p 9. 假如指针p已经指向某个整型变量x,则(*p)++相当于( )。 A、p++ B、x++ C、*(p++) D、&x++ 10.设指针x指向的整型变量值为25,则printf(“%d\n”,++*x);的输出是( )。 A.23 B.24 C.25 D.26 11.若有说明:int i, j=7,*p=&i; 则与 i=j;等价的语句是( )。 A.i=*p; B.*p=*&j; C.i=&j; D.i=**p; 12. 若有说明:char ch, *p; 则p不能正确获得值的语句是( )。 A.*p=getchar( ); B.p=&ch; scanf(“%c”, p); C.p=(char *)malloc(1); *p=getchar( ); D.p=&ch; *p=getchar( ); 13.若有说明语句int a[ ]={1,2,3,4,5}, *p=a, i; 且0<=i<5, 则对数组元素错误的引用是( )。 A.*(a+i) B.a[p-a] C.p+1 D.*(&a[i]) 14.若有说明语句 int a[5], *p=a; 对数组元素的正确引用是( )。 46 A.*&a[5] B.*p+2 C.*(a+2) D.*a++ 15.若有说明语句 int a[5], *p=a; 对数组元素的正确引用是( )。 A.a[p] B.p[a] C.*(p+2) D.p+2 16.若有以下定义,且0<=i<5, 则对数组元素地址的正确表示是( )。 int a[ ]={1,2,3,4,5},*p=a, i; A.&(a+i) B.a++ C.&p D.&p[i] 17.下面各语句中,能正确进行赋字符串操作的语句是( )。 A.char s[5] =”ABCDE”; B.char s[5] ={‘A’,‘B’, ‘C’,‘D’, ‘E’}; C.char *s; s=”ABCDE”; D.char *s; scanf(“%s”,&s); 18.若有以下定义,则 *(p+5) 的值为( )。 char s[ ]=”Hello”, *p=s; A.’0’ B.’\0’ C.’0’的地址 D.不确定的值 19.若有以下的定义,则值为3的表达式是( )。 int a[10] ={1,2,3,4,5,6,7,8,9,10}, *p=a; A.p+=2,*(p++) B.p+=2,*++p C.p+=3,*p++ D.p+=2,++*p; 20.执行语句 char a[10] ={“abcd”},*p=a 后,*(p+4)的值是( )。 A.”abcd” B.’d’ C.’\0’ D.不能确定 21. 数组定义为“int a[4][5];”,引用“a+3”表示( )。 A、a数组第3列的首地址 B、a数组第0行第3列元素的值 C、a数组第3行的首地址 D、a数组第0列第3行元素的值 22. 数组定义为“int a[4][5];”,引用“a[1]+3”表示( )。 A、a数组第1行第3列元素的地址 B、a数组第1行第3列元素的值 C、a数组第4行的首地址 D、a数组第4列的首地址 23. 数组定义为“int a[4][5];”,引用“*(*a+1)+2”表示( )。 A、a[1][0]+2 B、a数组第1行第2列元素的地址 C、a[0][1]+2 D、a数组第1行第2列元素的值 24. 数组定义为“int a[4][5];”,下列哪一个引用是错误的( )。 A、*a B、*(*(a+2)+3) C、&a[2][3] D、++a 25.若有定义 int a[3][4]; 则对数组元素a[i][j] (0<=i<3,0<=j<4) 正确的引用是( )。 A.*(a+4*i+j) B.*(*(a+i)+j) C.*(a+i)[j] D.a[i] +j 26.若有定义 int a[3][4],*p; 则对数组元素a[i][j](0<=i<3,0<=j<4)正确的引用是( )。 A.p=a B.p=a, *(*(p+i)+j) C.p=a[0], *(p+i*4+j) D.*(*(a+i)+j) 27.若有定义int a[3][4], (*p)[3];则对数组元素a[i][j] (0<=i<3,0<=j<4) 正确的引用是( )。 A.p=a[i] B.p=&a[i][j] C.p=a, *(p+i*4+j) D.p=a, *(*(p+i)+j) 47 28.若有定义int a[3][4], *p, *q[3]; 且0<=i<3,则错误的赋值语句是( )。 A.p=a B.q[i]=a[i] C.p=a[i] D.q[i]=&a[2][0] 29.设有定义语句 int (*ptr)[10]; 其中的ptr是( )。 A.10个指向整型变量的函数指针 B.指向10个整型变量的函数指针 C.一个指向具有10个元素的一维数组的指针 D.具有10个指针元素的一维数组 30.若有以下定义,则数值为4的表达式是( )。 int w [3][4] ={{0,1},{2,4},{0,1},{0,1}}, (*p)[4]=w; A.* w [1]+1 B.p++, *(p+1) C.w [2][2] D.p[1][1] 31.若有下面的程序片段,则对数组元素的错误引用是( )。 int a[12] ={0}, *p[3], **pp, i; for(i=0; i<3; i++) p[i]=&a[i*4]; pp=p; A.pp[0][1] B.a[10] C.p[3][1] D.*(*(p+2)+2) 32.若有如下定义和语句,则输出结果是( )。 int **pp, *p, a=10, b=20; pp=&p; p=&a; p=&b; printf(“%d,%d\n”, *p, **pp); A.10, 20 B.10, 10 C.20, 10 D.20, 20 33.若有以下定义和语句,则对w数组元素的非法引用是( )。 int w [2][3], (*pw)[3]; pw=w; A.*(w [0]+2) B.*pw [2] C.pw [0][0] D.*(pw [1]+2) 1.C语言中,数组名是一个 常量,不能对它进行 和 运算。 由 代表它的首地址。 2.在C程序中,指针变量只能赋 值和 值。 3.在C程序中,可以对指针变量进行 和 来移动指针。 3.单目运算符“*”称为 运算符,“&”称为 运算符。 5.若两个指针变量指向同一个数组的不同元素,可以进行减法运算和 运算。 6.设int a[10], *p=a; 则对a[3] 的引用可以是p[ ] 和 *(p )。 7.若d是已定义的双精度变量,再定义一个指向d的指针变量p的语句是 。 48 8.&后跟变量名,表示 该变量的 , *后跟指针变量名,表示 该指针变量 &后指针变量名,表示 该指针变量的 。 9.设有char *a=”ABCD”; , 则printf(“%s”,a);的输出是 ; 而printf(“%c”,*a);的输 出是 。 10. 定义a为共有5个元素的一维整型数组、同时定义p为指向a数组首地址的指针变 量的语句 为 。 11. 定义a为4行5列的二维整型数组、同时定义p为指向a数组首地址的指针变量的 语句 为 。 12.设有以下定义和语句,则 **(p+2) 的值为 。 int a[3][2] ={10,20,30,40,50,60}, (*p)[3]; p=a; 13.以下程序的功能是从键盘上输入若干个字符(以回车键作为结束)组成一个字符 串存入 一个字符数组,然后输出该字符数组中的字符串。请填空。 #include “stdio.h” #include “ctype.h” void main( ) { char str[81],*sptr; int i; for(i=0;i<80;i++) { str[i] =getchar(); if (str[i] ==’\n’) break; } str[i] = ; sptr=str; while(*sptr) putchar(*sptr ); } 14.以下程序从输入的10个字符串中找出最长的那个串及长度。请填空。 #include #include void main( ) { char str[10][80], *sp; int i; for(i=0;i<10;i++) gets(str[i]); sp= str[0] ; for(i=0;i<10;i++) 49 if(strlen(sp) void main (int argc, char *argv[ ])) { while (--argc>0) printf (“%s”, argv [argc]); printf (“\n”) ; } 假定上述程序编译连接成目标程序名为p.exe,如果输入如下的命令: p 123 AAA BBB ? (其中的?表示回车) 命令行中有4个字符串(包括p),: argc=4, argv[0]?p, argv[1]?123, argv[2]?AAA, argv[3]?BBB。因此, 输出结果是 5. 设有下列程序,试写出运行的结果。 void main( ) { int i,b,c,a[ ]={1,10,-3,-21,7,13},*pb,*pc; b=c=1; pb=pc=a; for(i=0,i<6;i++) { if(b<*(a+i)) { b=*(a+i); pb=&a[i]; } if(c>*(a+i)) { c=*(a+i); pc=&a[i]; } } i=*a; *a= *pb; *pb=i; i= *(a+5); *(a+5) = *pc; *pc=i; printf(“%d,%d,%d,%d,%d,%d\n”,a[0],a[1],a[2],a[3],a[4],a[5]); } 50 6. 阅读下列程序,写出程序运行的输出结果。 #include void main( ) { char *alpha[4] ={″ABCD″,″EFGH″,″IJKL″,″MNOP″}; char *p; int i; p=alpha[0]; for(i=0;i<4;p=alpha[++i]) printf(″%c″,*(p)); printf(″\n″); } 7.阅读下列程序,写出程序运行的输出结果。 #include void main( ) { static int a[4][4]; int *p[4],i,j; for(i=0; i<4; i++) p[i] =&a[i][0]; for(i=0; i<4; i++) { *(p[i]+i)=1; *(p[i]+4-(i+1))=1; } for(i=0;i<4;i++) { for(j=0;j<4;j++); printf(″%2d″,p[i][j]); printf(″\n″); } } : 8. 阅读下列程序,写出程序运行的输出结果 #include void main( ) { int x=3,y=5; void p(int *a,int *b); p(&x,y); printf(“x=%d,y=%d\n”, x , y); p(&y, x) ; printf(“x=%d,y=%d\n”, x , y); } void p(int *a, int b) { *a=10; b=20; } 9. 写出下列程序的运行结果 51 #include int z; void p(int *x,int y) { ++*x; y--; z=*x+y; printf(“%d,%d,%d\n”, *x, y, z) ; } void main( ) { int x=2 , y=3 , z=4 ; p(&x , y) ; printf(“%d,%d,%d\n”, *x, y, z) ; } : 1.输入3个整数,按从大到小的次序输出。 2.编一个程序,输入15个整数存入一维数组,再按逆序重新存放后再输出。 3.输入一个字符串,按相反次序输出其中的所有字符。 4.输入一个一维实型数组,输出其中的最大值、最小值和平均值。 5.输入一个3×6的二维整型数组,输出其中最大值、最小值及其所在的行列下标。 6.输入3个字符串,输出其中最大的字符串。 7.输入2个字符串,将其连接后输出。 8.比较2个字符串是否相等。 9.输入10个整数,将其中最大数和最后一个数交换,最小数和第1个数交换。 10.有10个整数,编一程序使它循环后移4个位置,再输出该整数。 52
/
本文档为【1对于同类型的指针变量】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索