第九章 指针 9.1 选择题
[题9.1] 以下程序的运行结果是____。 sub(int x,int y,int *z) {*z=y-x;}
main()
{int a,b,c; sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);
printf(”%4d,%4d,%4d\n”,a,b,c); }
A) 5,2,3 B)-5,-12,-7 C)-5,-12,-17 D)5,-2,-7
[题9.2] 执行以下程序后,a的值为[1l,b的值为[2]。 main()
{int a,b,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m;
b=(-*p1)/(*p2)十7; print{(”a=%d\n”,a); printf(”b=%d\n”,b); }
[1l A)一1 B)1 C)0 D)4 [2] A)5 B)6 C)7 D)10
[题9.3]下面程序应能对两个整型变量的值进行交换。以下正确的说法是____ main()
{inta=10,b=20;
printf(”(1)a=%d,b=%d\\n”,a,b); swap(%d,%b);
printf(”(2)a=%d,b=%d\n”,a,b) }
Swap(int p,int q) {int t;
t=p;p=q;q=t;} A)该程序完全正确
B)该程序有错,只要将语句swap(&d,&b);中的参数改为a,b即可
C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执 行语句不变)即可 D)以上说法都不正确
[题9.4]有四组对指针变量进行操作的语句,以下判断正确的选项是____ (1)int *p,*q; q=p; int a,*p,*q; p=q=&a; (2)int a,*p,*q; q=&a;p=*q; int a=20,*p; *p=a;
(3)int a=b=0,*p; p=&a; b=*p; int a=20,*p,*q=&a;*p=*q; (4)int a=20,*p,*q=&a; p=q; int p,*q; q=&p;
A)正确:(1); 不正确:(2),(3),(4) B)正确:(1),(4); 不正确:(2),(3)
C)正确:(3); 不正确:(1),(2),(4) D)以上结论都不正确
[题9.5]以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是____。 main()
{ int *p,*q,a,b; P=&a;
printf(\:”); scanf(\%d”,*p);
A)*p表示的是指针变量p的地址
B)*p表示的是变量a的值,而不是变量a的地址 C)*p表示的是指针变量p的值
D)*p只能用来说明p是一个指针变量
[题9.6]以下程序有错,错误原因是____ main()
{int *p,i; char *q,ch; P=&i; q=&ch; *p=40; *p=*q; . . . }
A)p和q的类型不一致,不能执行*p=*q;语句
B)*p中存放的是地址值,因此不能执行*p=40;语句 C)q没有指向具体的存储单元,所以*q没有实际意义
D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行 *p=*q;语句
[题9.8]已有定义 int k=2;int *ptrl,*ptr2;且ptrl和ptr2均已指向变量k,下面不能正确执行的赋值语句是____。
A) k=*ptr1+*ptr2; B)ptr2=k;
C) ptr1=ptr2; D)k=*ptrl*(*ptr2); 一O
[题9.9]变量的指针,其含义是指该变量的____. A)值 B)地址 C)名 D)一个标志
[题9.10]若已定义inta=5;下面对(1),(2)两个语句的正确解释是____ (1)int *p=&a; (2)*p=a;
A)语句(1)和(2)中的*p含义相同,都表示给指针变量p赋值
B)(1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量p C)(1)在对p进行说明的同时进行初始化,使p指向a (2)将变量a的值赋给指针变量p
D)(1)在对p进行说明的同时进行初始化,使p指向a (2)将变量a的值赋于*p
[题9.11] 若有语句int*point,a=4;和point=&a; 下面均代表地址的一组选项是____. A)a,point,*&a B)&*a,&a,*point C)*&point,*point,&a D)&a,&*point,point
[题9.13]若有说明:int *p,m=5,n; 以下正确的程序段是____ A) p=&n;
scanf(”%d”,&p); B) p=&n;
scanf(”%d”,*p); C) scanf(”%d”,&n); *p=n; D)p=&n; *p=m;
[题9.14] 若有说明: int *pl,*p2,m=5,n;以下均是正确赋值语句的选项是____ A)p1=&m;p2=&p1;
B)p1=&m;p2=&n;*p1=*p2; C)p1=&m;p2=p1; D)p1=&m;*p2=*p1;
[题9.15]已有变量定义和函数调用语句:int a=25; print_value(&a);下面函数的 正确输出结果是____。
void print_value(int * x) {printf(”%d\n”,++*x);} A)23 B)24 C)25 D)26
[题9.16] 下面判断正确的是____。 A)char *a=\”;等价于char *a;*a=\”;
B)char strLl0]={“china”};等价于char str[10]; str[]={“china”}; C)char *s=”china”;等价于char *s;s=\”; D)charc[4]=\”,d[4]=\”;等价于char c[4]=d[4]=\”;
[题9.17]设char *s=”\ta\017bc\;则指针变量s指向的字符串所占的字节数是____. A)9 B)5 C)6 D)7
[题9.18]下面程序段中,for循环的执行次数是____。 char *s=”\ta\018bc”;
for( ;*s!=’\0’;s++) printf(“*”); A)9 B)5 C)6 D)7
[题9.19]下面能正确进行字符串赋值操作的是____。
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); [
[题9.20]下面程序段的运行结果是____。 Char*S=\;
s+=2; printf(”%d”,s);
A)cde B)字符’c’ C)字符’c’的地址 D)无确定的输出结果
[题9.21]设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确 执行的赋值语句是____。
A)c=*p1+*p2; B)p2=c; C)p1=p2; D)c=*p1*(*p2);
[题9.22]设有下面的程序段:
Char s[]=\; char *p; p=s; 则下列叙述正确的是____。 A)s和p完全相同
B)数组s中的内容和指针变量p中的内容相等 C)s数组长度和p所指向的字符串长度相等 D)*p与s[0]相等
[题9.23] 下面程序段的运行结果是____ Char *format=”%s,a=%d,b=%d\\n”; int a=1,b=10; a+=b;
print{(format,”a+=b”,a,b); A)for,”a+=b”,ab B)format,”a+=b” C)a+=b,a=ll,b=10 D)以上结果都不对
[题9.24]下面程序段的运行结果是____ Char *p=”%d,a=%d,b=%d\\n” int a=111,b=10,c; c=a%b; p+=3; printf(p,c,a,b);
A)1,a=111,b=10 B)a=1,b=111 C)a=111,b=10 D)以上结果都不对
[题9.25]以下正确的程序段是____ A)char str[20]: scanf(”%s”, &str); B)char *p; , scanf(”%s”, p); C)char str[20]; scanf(”%s”,&str[2]; D)char str[20], *p=str; scanf(”%s”,p[2]);
[题9.26] 以下正确的程序段是____。 A)char strl[ ]=\”, str2[ ]=”abcdef”; strcpy(strl, str2);
B)char str[10], *st=”abcde”; strcat(str, st); C)char str[10]=” ”, *St=”abcde”; strcat(str, st); D)char *stl=”12345\,*st2=”abcde”; strcat(stl, st2);
[题9.27] 下面程序段的运行结果是____。 charstr[]=”ABC”, *p=str; printf(”%d\n”,*(p+3));
A)67 B)0 C)字符’C’的地址 D)字符’C’ [题9.28] 下面程序段的运行结果是____. Char *p=”abcdefgh”; P+=3;
printf(”%d\n”,strlen(strcpy(p,”ABCD\; A)8 B)12 C)4 D)7
[题9.29] 下面程序段的运行结果是____. Char a[]=”1anguage\,*p; p=a;
while(*p!=’u’{print{(”%c,*p-32);p十十;} A)LANGUAGE B)1anguage C)LANG D)1angUAGE
[题9.30]若有语句:char sl[]=”string”,s2[8],*s3,*s4=”string2”;则对库函数strcpy的错误调用是____。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言第九章指针习题在线全文阅读。
相关推荐: