C语言习题集合(指针)(共23页).doc
《C语言习题集合(指针)(共23页).doc》由会员分享,可在线阅读,更多相关《C语言习题集合(指针)(共23页).doc(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上第七章 指针71 选择题1 若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是()。A p=q; B *p=*q; C a=*q; D q=a;2 若定义:int a=511, *b=&a;,则printf(%dn, *b);的输出结果为: A 无确定值 B a的地址 C 512 D 5113 已有定义int a=2, *p1=&a, *p2=&a; 下面不能正确执行的赋值语句是()。A a=*p1+*p2; B p1=a; C p1=p2; D a=*p1*(*p2);4 变量的指针,其含义是指该变量的()。A 值 B 地址 C 名 D 一
2、个标志5 若有说明语句:int a, b, c, *d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是()。A scanf(%d%d%d, &a, &b, d); B scanf(%d%d%d, a, b, d);C scanf(%d%d%d, &a, &b, &d); D scanf(%d%d%d, a, b,*d);6 若已定义int a=5; 下面对(1)、(2)两个语句的正确解释是()。(1) int *p=&a; (2) *p=a;A 语句(1)和(2)中的*p含义相同,都表示给指针变量p赋值。B (1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量p。C
3、 (1)在对p进行说明的同时进行初始化,使p指向a;(2)变量a的值赋给指针变量p。D (1)在对p进行说明的同时进行初始化,使p指向a; (2)将变量a的值赋予*p。7 若有语句int *p, a=10; p=&a; 下面均代表地址的一组选项是()。A a, p, *&a B &*a, &a, *pC *&p, *p, &a D &a, &*p, p0.2345px8 若需要建立如图所示的存储结构,且已有说明double *p, x=0.2345; 则正确的赋值语句是()。 A p=x; B p=&x; C *p=x; D *p=&x;9 若有说明:int *p, a=1, b; 以下正确的
4、程序段是()。A p=&b; B scanf(%d, &b);scanf(%d, &p); *p=b;C p=&b; D p=&b;scanf(%d, *p); *p=a;10有如下语句:int m=6, n=9, *p, *q; p=&m; q=&n; 如图1所示,若要实现下图所示的存储结构,可选用的赋值语句是()。mpnqpmqn A *p=*q; B p=*q; C p=q; D *p=q;11以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是()。 #include main() int *p, *q, a, b;p=&a;printf(input a:);sca
5、nf(%d, *p);A *p表示的是指针变量p的地址B *p表示的是变量a的值,而不是变量a的地址C *p表示的是指针变量p的值D *p只能用来说明p是一个指针变量12下面程序的功能是从输入的十个字符串中找出最长的那个串。请在_处填空。 #include stdio.h #include string.h #define N 10 main() char sN81, * t;int j; for (j=0; jN; j+) gets (sj);t= *s; for (j=1; jN; j+) if (strlen(t)strlen(sj) _; printf(the max length o
6、f ten strings is: %d, %sn, strlen(t), t);A t=sj B t=&sj C t= s+ D t=sj013下面判断正确的是()。A char *s=girl; 等价于 char *s; *s=girl;B char s10=girl; 等价于 char s10; s10=girl;C char *s=girl; 等价于 char *s; s=girl;D char s4= boy, t4= boy; 等价于char s4=t4= boy14设char *s=ta017bc;则指针变量s指向的字符串所占的字节数是()。A 9 B 5 C 6 D 715下面
7、程序段中,for循环的执行次数是()。 char *s=ta018bc; for (;*s!=0;s+) printf(*);A 9 B 5 C 6 D 716以下不能正确进行字符串赋初值的语句是()。A. char str5= good!; B char *str=good!;C. char str=good!; D char str5=g, o,o, d;17若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是()。A p=2*(int *)malloc(sizeof(int);B p=(int *)malloc(2*sizeof(int);C p=(int *)mal
8、loc(2*2);D p=(int*)calloc(2, sizeof(int);18下面程序段的运行结果是()。char *s=abcde; s+=2; printf(%d, s);A cde B 字符c C 字符c的地址 D 无确定的输出结果19设有如下的程序段:char s=girl, *t; t=s;则下列叙述正确的是()。A s和t完全相同B 数组s中的内容和指针变量t中的内容相等C s数组长度和t所指向的字符串长度相等D *t与s0相等20以下正确的程序段是()。A char s20; B char *s; scanf(%s, &s); scanf(%s, s);C char s2
9、0; D char s20, *t=s; scanf(%s, &s2); scanf(%s, t2);21下面程序段的运行结果是()。#include stdio.hmain() int m=10, n=20; char *format=%s, m=%d, n=%dn; m*=n; printf(format, m*=n, m,n);A format, m*=n, m, n B format, m*=nC m*=n, m=200, n=20 D 以上结果都不对22以下与库函数strcpy(char *p, char *q)功能不相等的程序段是()。A strcpy1(char *p, char
10、 *q) while (*p+=*q+)!=0);B strcpy2( char *p, char *q) while(*p=*q)!=0) p+; q+;C strcpy3(char *p, char *q) while (*p+=*q+); D strcpy4( char *p, char *q) while(*p) *p+=*q+;23下面程序段的运行结果是()。#include stdio.h main() char s=example!, *t; t=s; while( *t!=p) printf(%c, *t-32);t+; A EXAMPLE! B example! C EXAM
11、 D example!24以下正确的程序段是()。A char s=12345, t=6543d21; strcpy( s,t);B char s20, *t=12345; strcat(s,t);C char s20= , *t=12345; strcat(s, t);D char *s=12345, *t=54321; strcat (s,t);25以下与库函数strcmp(char *s, chat *t)的功能相等的程序段是()。A strcmp1( char *s, chat *t) for ( ;*s+=*t+ ;) if (*s=0) return 0; return (*s-*
12、t);B strcmp2( char *s, char *t) for ( ;*s+=*t+ ;)if (!*s) return 0; return (*s-*t); C strcmp3( char *s, char *t) for ( ;*t=*s ;) if (!*t) return 0; t+; s+; return (*s-*t); D strcmp4( char *s, char *t) for( ;*s=*t;s+,t+) if (!*s) return 0;return (*t-*s);26若有以下定义和语句:int s45, (*ps)5; ps=s;则对s数组元素的正确引用形
13、式是()。A ps+1 B *(ps+3) C ps02 D *(ps+1)+327不合法的main函数命令行参数表示形式是:()。A main( int a, char *c) B main(int argc, char *argv)C main( int arc, char *arv) D main( int argv, char*argc)28若有说明语句:char s=it is a example, *t=it is a example.;则以下不正确的叙述()。A s表示的是第一个字符i的地址,s+1表示的是第二个字符t的地址B t指向另外的字符串时,字符串的长度不受限制C t变量
14、中存放的地址值可以改变D s中只能存放16个字符29若已定义char s10;则在下面表达式中不表示s1地址的是()。A s+1 B s+ C &s0+1 D &s130下面程序段的运行结果是()。(注:代表空格) #include stdio.h main() char s6;s=abcd;printf(%sn, s); A abcd B abcd C abcd D 编译出错31执行以下程序后,a的值为【1】, b的值为【2】。#include main() int a, b, k=4, m=6, *p=&k, *q=&m; a=p=&m;b=(-*p)/(*q)+7;printf(a=%d
15、n, a);printf(b=%dn, b);【1】 A -1 B 1 C 0 D 4【2】 A 5 B 6 C 7 D 1032下面程序的功能是将字符串s的所有字符传送到字符串t中,要求每传递三个字符后再存放一个空格,例如字符串s为abcdefg,则字符串t为abc def g,请选择填空。#include stdio.h #include string.h main() int j, k=0;char s60, t100, *p;p=s;gets(p);while(*p) for (j=1; j=3 & *p; 【1】) tk=*p;if (【2】) tk= ; k+;tk=0;puts(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题 集合 指针 23
限制150内