C语言习题集合(指针)
pqpq
mn
m
n
A.*p=*q;B.p=*q;C.p=q;D.*p=q;
11.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是()。
#include<stdio.h>main(){
int*p,*q,a,b;p=&a;
printf("inputa:");scanf("%d",*p);…}
A.*p表示的是指针变量p的地址
B.*p表示的是变量a的值,而不是变量a的地址C.*p表示的是指针变量p的值
D.*p只能用来说明p是一个指针变量
12.下面程序的功能是从输入的十个字符串中找出最长的那个串。请在________处填空。
#include"stdio.h"#include"string.h"#defineN10main(){
chars[N][81],*t;intj;
for(j=0;j<N;j++)gets(s[j]);t=*s;
for(j=1;j<N;j++)
if(strlen(t)<strlen(s[j]))________;
printf("themaxlengthoftenstringsis:%d,%s\n",strlen(t),t);}
A.t=s[j]B.t=&s[j]C.t=s++D.t=s[j][0]13.下面判断正确的是()。
A.char*s="girl";等价于char*s;*s="girl";B.chars[10]={"girl"};等价于chars[10];s[10]={"girl"};C.char*s="girl";等价于char*s;s="girl";D.chars[4]="boy",t[4]="boy";等价于chars[4]=t[4]="boy"14.设char*s="\ta\017bc";则指针变量s指向的字符串所占的字节数是()。
A.9B.5C.6D.7
C语言习题集合(指针)
15.下面程序段中,for循环的执行次数是()。
char*s="\ta\018bc";
for(;*s!='\0';s++)printf("*");A.9B.5C.6D.716.以下不能正确进行字符串赋初值的语句是()。
A.charstr[5]="good!";B.char*str="good!";C.charstr[]="good!";
D.charstr[5]={'g','o','o','d'};
17.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是()。
A.p=2*(int*)malloc(sizeof(int));B.p=(int*)malloc(2*sizeof(int));C.p=(int*)malloc(2*2);
D.p=(int*)calloc(2,sizeof(int));18.下面程序段的运行结果是()。
char*s="abcde";s+=2;
printf("%d",s);A.cdeB.字符'c'C.字符'c'的地址D.无确定的输出结果19.设有如下的程序段:chars[]="girl",*t;t=s;则下列叙述正确的是()。
A.s和t完全相同
B.数组s中的内容和指针变量t中的内容相等C.s数组长度和t所指向的字符串长度相等D.*t与s[0]相等
20.以下正确的程序段是()。
A.chars[20];B.char*s;
scanf("%s",&s);scanf("%s",s);C.chars[20];D.chars[20],*t=s;
scanf("%s",&s[2]);scanf("%s",t[2]);
21.下面程序段的运行结果是()。
#include"stdio.h"main(){
intm=10,n=20;
char*format="%s,m=%d,n=%d\n";m*=n;
printf(format,"m*=n",m,n);}
A.format,"m*=n",m,nB.format,"m*=n"C.m*=n,m=200,n=20D.以上结果都不对22.以下与库函数strcpy(char*p,char*q)功能不相等的程序段是()。
A.strcpy1(char*p,char*q)
{while((*p++=*q++)!='\0');
}