第九十章c语言复习试题.docx
- 文档编号:28635555
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:116
- 大小:64.15KB
第九十章c语言复习试题.docx
《第九十章c语言复习试题.docx》由会员分享,可在线阅读,更多相关《第九十章c语言复习试题.docx(116页珍藏版)》请在冰豆网上搜索。
第九十章c语言复习试题
第九章指针
一、单项选择题
1.变量的指针,其含义是指该变量的
A)值B)名C)地址D)名和值
2.已知指针P的指向如图所示,则表达式*++p的值是
a[0]
a[1]
a[2]
a[3]
a[4]
10
20
30
40
50
P↑
A20B30C21D31
3.下面程序应能对两个整型变量的值进行交换。
以下正确的说法是
main()
{inta=10,b=20;
swap(a,b);
prinif("a=%d,b=%d\n",a,b);
}
swap(intp,intq)
{intt;
t=p;p=q;q=t;
}
A)该程序完全正确
B)该程序有错,只要将语句swap(a,b);中的参数改为&a,&b即可
C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针即可
D)以上说法都不正确
4.以下对指针变量进行操作的语句,正确的选项是
A)int*p,*q;q=p;B)inta,*p,*q;q=&a;p=*q;
C)inta=b=0,*p;p=&a;b=*p;D)inta=20,*p,*q=&a;p=q;
5.已有定义intk=2,*ptr1,*ptr2;且ptrl和Ptr2均已指向变量k,下面能正确执行的赋值语句是
A)k=*ptrl+*ptr2;B)ptr2=k
C)*ptrl=ptr2;D)ptrl=*ptr2;
6.若已定义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
7.若有语句int*p,a=4;和p=&a;下面均代表变量值的一组选项是
A)a,p,*&aB)&*a,&a,*p
C)*&p,*p,&aD)*&a,*p,a
8.若有说明:
int*p1,*p2,m=5,n=9;以下均是正确赋值语句的选项是
A)p1=&m;p2=&p1;B)p1=&m;p2=&n;*p1=*p2;
C)p1=&m;p2=p1D)p1=&m;*p2=*p1;
9.下面判断正确的是
A)char*a="china";等价于char*a;*a="china"
B)charstr[10]={"china"};等价于charstr[10];str[]={"china"};
C)char*s="china";等价于char*s;s="china";
D)charc[4]="abc",d[4]="abc";等价于charc[4]=d[4]="abc"
10.设char*s="\tabc\017\’\n";则指针变量s指向的字符串所占的字节数是
A)9B)8C)6D7
11.下面能正确进行字符串赋值操作的是
A)chars[5]=("ABCDE");B)chars[5]={’A’,’B’,’C’,’D’,’E’};
C)char*s;s="ABCDE";D)char*s;scanf("%s",s);
12.下面程序段的运行结果是
char*s="abcde";
s+=2;printf("%c",*s);
A)cdeB)cC)字符c’的地址D)无确定的输出结果
13.下面程序段的运行结果是
char*format="%s,a=%d,b=%d\n";
inta=1,b=3;
a+=b;
printf(format,"a+=b",a,b);
A)"a+=b",4,3B)format,"a+=b",4,3
C)a+=b,a=4,b=3D)“a+=b”,a=4,b=3
14.以下不能正确进行字符串赋初值的语句是
A)charstr[5]="good!
";B)charstr[]="good!
";
C)char*str="good!
";D)charstr[5]={‘g',‘o',‘o',‘d'};
15.若有以下定义和语句:
ints[4][5],(*ps)[5];
ps=s;
则对s数组元素的正确引用形式是
A)ps+1B)*(ps+3)C)ps[0][2]D)*(ps+1)+3
16.在声明语句:
int*f();中,标识符f代表的是
A)一个用于指向整型数据的指针变量
B)一个用于指向一维数组的行指针
C)一个用于指向函数的指针变量
D)一个返回值为指针型的函数名
17.若有以下说明和定义
fun(int*c){}
main()
{int(*a)()=fun,*b(),w[10],c;
┆
}
在必要的赋值之后,对fun函数的正确调用语句是
A)a=a(w);B)(*a)(&c);C)b=*b(w);D)fun(b);
18.有如下说明
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是
A)*p+9B)*(p+8)C)*p+=9D)p+8
19.若有以下调用语句,则不正确的fun函数的首部是
main()
{…
inta[50],n;
…
fun(n,&a[9]);
…
}
Avoidfun(intm,intx[])Bvoidfun(ints,inth[41])
Cvoidfun(intp,int*s)Dvoidfun(intn,inta)
20设已有定义:
char*st="howareyou";下列程序段中正确的是
A}chara[11],*p;strcpy(p=a+1,&st[4]);
B}chara[11];strcpy(++a,st);
C}chara[11];strcpy(a,st);
D}chara[],*p;strcpy(p=&a[1],st+2);
21.设有如下定义语句:
intx[6]={2,4,6,8,5,7},*p=x,i;
要求依次输出x数组6个元素中的值,不能完成此操作的语句是
A)for(i=0;i<6;i++)printf("%2d",*(p++));
B)for(i=0;i<6;i++)printf("%2d",*(p+i));
C)for(i=0;i<6;i++)printf("%2d",*p++);
D)for(i=0;i<6;i++)printf("%2d",(*p)++);
22.以下程序程序运行后的输出结果是
main()
{inta[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;
*q=*(p+5);
printf("%d%d\n",*p,*q);
}
A)运行后报错B)66C)611D)510
23.有以下定义和语句:
inta[3][2]={1,2,3,4,5,6,},*p[3];
p[0]=a[1];
则*(p[0]+1)所代表的数组元素是
A)a[0][1]B)a[1][0]C)a[1][1]D)a[1][2]
24.已有定义:
inti,a[10],*p;,则合法的赋值语句是
A)p=100;B)p=a[5];C)p=a[2]+2;D)p=a+2;
25.程序中对fun函数有如下说明
void*fun();
此说明的含义是:
A)fun函数无返回值
B)fun函数的返回值可以是任意的数据类型
C)fun函数的返回值是无值型的指针类型
D)指针fun指向一个函数,该函数无返回值
26.以下与库函数strcpy(char*p1,char*p2)功能不相等的程序段是
A)strcpyl(char*p1,char*p2){while((p1++=p2++)!
='\0');}
B)strcpy2(char*pl,char*p2){while((*p1=*p2)!
=’\0’)pl++,p2++;}
C)strcpy3(char*pl,char*p2){while((*p1++=*p2++);)
D)strcpy4(char*p1,char*p2){whi1e(*p2)*pl++=*p2++;}
27.下面程序段的运行结果是
chars[6];s="abcd";printf("%s\n",s);
A)abcdB)"abcd"C)abcD)编译出错
28.若有以下定义,则对c数组元素地址的正确引用是C
intc[5],*p=c;
A)p+5B)*c+1C)&c[0]D)&c+1
29.若有定义:
inta[3][4];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素值的不正确引用为
A)*(*(a+i)+j)B)*(a+i)[j]C)*(a+i+j)D)*(a[i]+j)
30.若有以下定义初语句,则对a数组元素地址的不正确引用为
inta[3][4],(*p)[3];
p=a;
A)*(p+2)B)p[2]C)p[1]+1D)(p+1)+2
31.若要对a进行++运算,则a应具有下面说明
A)inta[3][2];B)char*a[]={"12","ab"};
C)char(*a)[3];D)intb[10],*a=b;
32.设有以下程序段:
chars[4][10]={"first","second","third","fourth"},*sp[4];
inti;
for(i=0;i<4;i++)sp[i]=s[i];
若k为int型变量且0<=k<4,则对字符串的正确引用是
A)spB)s[k]C)sp+kD)s+k
33.若有以下定义,则*(p+5)表示
inta[10],*p=a;
A)元素a[5]的地址B)元素a[5]的值
C)元素a[6]的地址D)元素a[6]的值
34.若有定义:
inta[4][6];则能正确表示a数组中任一元素a[i][j](0<=i<4,0<=j<6)地址的表达式是:
A)a[0]+6*j+iB)a[0]+4*j+iC)a[0]+4*i+jD)a[0]+6*i+j
35.若有以下定义和语句,则能正确表示a数组元素的表达式是
inta[10],*p1;
p1=a;
A)aB)p1+5C)*p1D)&a[5]
36.设有一个名为file1源程序,且已知命令行为:
FILE1BEIJINGSHANGHAI,则可得到以下运行结果的程序为
BEIJING
SHANGHAI
A)main(intargc,char*argv[])
{while(--argc>1)printf("%s\n",*++argv);}
B)main(intargc,char*argv[])
{while(argc-->=1)printf("%s\n",*++argv);}
C)main(intargc,char*argv[])
{while(argc-->1)printf("%s\n",*++argv);}
D)main(intargc,char*argv[])
{while(argc>1)prinif("%s\n",*++argv);}
37.若有说明:
char*lang[]={"F0RTRAN","BASIC","PASCAL","JAVA","C"};则lang[3]的值是
A)一个地址B)一个字符C)一个字符串D)一个不定值
38.已有定义int(*f)();指针f可以
A)代表函数的返回值B)表示函数返回值的类型
C)表示函数的类型D)指向函数的入口地址
39.已知:
int**p;则变量p是
A)指向int型变量的指针B)指向指针的指针
C)int型变量D)以上三种说法均不正确
40.设有以下程序段,则在main函数中使用语句是无意义的
main()min(intx,inty)
{intmin();{
inta,b,c,(*p)();……
p=min;}
……
}
A)printf(“%d\n”,min(a,b));B)c=min(a,b);
C)c=(*p)(a,b);D)p++;
41.下列函数FUN的功能是
FUN(char*ps)
{char*p;
p=ps;
while(*p++);
return(p-ps);
}
A)比较两个字符串的大小B)求字符串的长度
C)复制字符串D)以上说法都不对
42.已知指针p的指向如图所示,则表达式++*p的值是
a[0]
a[1]
a[2]
a[3]
a[4]
10
20
30
40
50
P↑
A20B30C21D31
43.已知指针p的指向如图所示,则执行语句*p++;后,*p的值是
a[0]
a[1]
a[2]
a[3]
a[4]
10
20
30
40
50
P↑
A20B30C21D31
44.已定义以下函数
intfun(int*p)
{return*p;}
fun函数返回值是
A不确定的值B一个整数
C形参p中存放的值D形参p的地址值
45.若有说明语句:
double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是
A)*p=&a;scanf(“%lf”,p);B)*p=&a;scanf(“%f”,p);
C)P=&a;scanf(“%lf”,*p);D)p=&a;scanf(“%lf”,p);
46.以下语句或语句组中,能正确进行字符串赋值的是
A.char*p;*sp=”right!
”;B.chars[10];s=”right!
”;
C.chars[10];*s=”right”;D.char*sp=”right”;
47.有以下程序
Fun(char*a,char*b)
{while((*a!
=’\0’)&&(*b!
=’\0’)&&(*a==*b))
{a++;b++;
}
Return(*a-*b);
}
该函数的功能是
A计算a和b所指字符串的长度之差B将b所指字符串复制到a所制字符串中
C将b所指字符串连接到a所指字符串后面D比较a和b所指字符串大小
48.程序中若有如下说明和语句
charfun(char*);
main()
{char*s=”one”,a[5]={0},(*f1)()=fun,ch;
……
}
以下选项中对函数fun的正确调用语句是
A(*f1)(a);B*f1(*s);Cfun(&a);Dch=*f1(s)
49.若有语句:
char*line[5];,以下叙述中正却的是
A定义line是一个数组,每个数组元素是一个基类型为char的指针变量
B定义line是一个指针变量,改变量可以指向一个长度为5的字符型数组
C定义line是一个指针数组,语句中的*号称为间址运算符
D定义line是一个指向字符型的指针
50.设有定义:
intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是
A*p=*q;Bp=q;C*p=&n1Dp=*q;
51.设有定义:
intx=0,*p=&x;则语句printf(“%d\n”,*p);的输出结果是
A随机值B0Cx的地址Dp的地址
52.有以下程序
main()
{inta=1,b=3,c=5;
int*p1=&a,*p2=&b,*p=&c;
*p=*p1*(*p2);
printf("%d\n",c);
}
执行后的输出结果是
A1B2C3D4
53.若有定义:
intw[3][5];,则以下不能正确表示该数组元素的表达式是
A*(*w+3)B*(w+1)[4]C*(*(w+1))D*(&w[0][0]+1)
54.若有以下函数首部
intfun(doublex[10],int*n)
则下面针对此函数的函数声明语句中正确的是
Aintfun(doublex,int*n);Bintfun(double,int);
Cintfun(double*x,intn);Dintfun(double*,int*);
55.若有定义语句:
intk[2][3],*pk[3];,则以下语句中正确的是
Apk=k;Bpk[0]=&k[1][2];Cpk=k[0];Dpk[1]=k;
56.有以下程序
voidchange(intk[]){k[0]=k[5];}
main()
{intx[10]={1,2,3,4,5,6,7,8,9,10},n=0;
while(n<=4){change(&x[n]);n++;}
for(n=0;n<5;n++)printf("%d",x[n]);
printf("\n");
}
程序运行后的输出结果是
A678910B13579C12345D62345
57.有以下程序
main()
{chars[]={"aeiou"},*ps;
ps=s;printf("%c\n",*ps+4);
}
程序运行后的输出结果是
AaBeCuD元素s[4]的地址
58.以下语句中存在的语法错误是
Acharss[6][20];ss[1]="right?
";
Bcharss[][20]={"right?
"};
Cchar*ss[6];ss[1]="right?
";
Dchar*ss[]={"right?
"};
59.若有定义:
char*x="abcdefghi";,以下选项中正确运用了strcpy函数的是
Achary[10];strcpy(y,x[4]);
Bchary[10];strcpy(++y,&x[1]);
Cchary[10],*s;strcpy(s=y+5,x);
Dchary[10],*s;strcpy(s=y+1,x+1);
60.有以下程序
#include
main(intargc,char*argv[])
{inti=1,n=0;
while(i printf("%d\n",n); } 该程序生成的可执行文件名为: proc.exe,若在运行时输入命令行: proc1234567 则该程序的输出结果是 A3B5C7D11 二、读程序,写运行结果 一般题 1.以下程序运行后的输出结果是______ voidfun(char*c,intd) {*c=*c+1;d=d+1; printf("%c,%c,",*c,d); } main() {chara='A',b='a'; fun(&b,a);printf("%c,%c\n",a,b); } 2.以下程序运行后的输出结果是__ #include main() {char*p="abcde\0fghjik\0"; printf("%d\n",strlen(p)); } 3.以下程序程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是: ex1abcdefg10<回车>,则运行的结果是______ #include main(intargc,char*argv[]) {inti,len=0; for(i=1;i printf("%d\n",len); } 4.以下程序运行后的输出结果是_____ intfa(intx) {returnx*x;} intfb(intx) {returnx*x*x;} intf(int(*f1)(),int(*f2)(),intx) {returnf2(x)-f1(x);} main() {inti; i=f(fa,fb,2);printf("%d\n",i); } 5.设有以下程序,执行该程序后,a的值为,b的值为 main() {inta,b,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; b=(*p1)/(*p2)+7; printf("a=%d\n",a); printf("b=%d\n",b); } 6.以下程序运行后的输出结果是 main() {chars[]="9876",*p; for(p=s;p } 7.下列程序的运行结果是 voidfun(int*a,int*b) {int*k; k=a;a=b;b=k; } main() {inta=3,b=6,*x=&a,*y=&b; fun(x,y); printf("%d%d",a,b); } 8.以下程序的输出结果是 main() {intarr[]={30,25,20,15,10,5},*p=arr; p++; printf("%d\n",*(p+3)); } 9.下列程序的输出结果是 intb=2; intfunc(int*a) {b+=*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第九十 语言 复习 试题