C语言5指针练习题5
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第五章指针
一、选择题
1.若有说明语句: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);
2.若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是
A.p+1 B.a+1 C.a++ D.++p
3.若已定义:int a[ ]={0,1,2,3,4,5,6,7,8,9},*p=a,i;
其中 0
A.a[p-a] B.*(&a[i]) C.p[i] D.a[10]
4.若定义:int x=3,*p=&x,*q=p;则以下非法的赋值语句是
A.p=q B.*p=*q C.p=x D.x=q
5.若有int x, *pb; 则正确的赋值表达式是
A.pb=&x B.pb=x; C.*pb=&x; D.*pb=*x
6.以下选项中,对指针变量p的正确操作是
A.int a[3], *p; p=&a; B.int a[5], *p; p=a;
C.int a[5]; int *p=a=100; D.int a[5],int *p1,*p2=a; *p1=*p2; 7.char str[]="ABCD", *p=str; printf("%d\n",*(p+4));上面程序的输出结果是A.68 B.0C.字符"D"的地址D.不确定的值
8.变量的指针,其含义是指该变量的
A.值B.一个标志C.名D.地址
9.若有语句:int *p,a=4;和p=&a;下面均代表地址的一组选项是
A.a,p,*&a B.&*a,&a,*p
C.*&p,*p,&a D.&a,&*p,p
10.12.设有程序段:char s[ ]=”china”; char *p ; p=s ;则下面叙述正确的是A.s和p完全相同
B.数组s中的内容和指针变量p中的内容相等
C.*p与s[0]相等
D.s数组长度和p所指向的字符串长度相等
二、阅读程序,写出运行结果。
*1.void expvalue(int a,int*b);
main()
{ int x,y;
printf("inpat data");
scanf("%d",&x);
expvalue(x,&y);
printf("x=%d y=%d",x,y);
}
void expvalue(int a, int *b)
{ *b=-a*a+2*a+1; }
运行时输入数据4,则输出结果为
A.x=4.0 y=-7.0 B.x=4 y=-7
C.x=4 y=7 D.x=-0.4 y=-7.0
*2.#include
#include
int strcmpl(char *s, char *t);
main()
{ int i;
char *s1,*s2;
gets(s1);
gets(s2);
i=strcmp1(s1,s2);
printf("%d\n",i);
}
int strcmp1(char *s,char *t)
{ for( ;*s==*t; s++,t++)
if(*s=='\0')
return(0);
return(*s-*t);
}
运行两次,第一次输入their<回车>their<回车>,第二次输入I am a student <回车>You are a teacher <回车>,运行结果:
A.0 B.0 C.0 D.0
15 16 -15 -16
3.int a[ ]={1,5,7,9,11,13};
main( )
{ int *p;
p=a+3;
printf(“%d,%d\n”,*p,*p++);
printf(“%d,%d\n”,*(p-2),*(a+4));
}
A.9,9B.9,11 C.7,11 D.11,7
7,11 11,7 11,9 9,11
4.#include
main()
{ char*ptr1,*ptr2;
ptr1=ptr2=”abcde";
while(*ptr2!=…\0')
putchar(*ptr2++);
while(--ptr2>ptr1)
putchar(*ptr2);
putchar(…\n');
}
A.bcde edc B.abcdeedb
C.abcde edcb D.bcde edb
5.#include
char b[ ]=“computer";
char *a=“COMPUTER";
main( )
{ int i=0;
printf(“%c,%s,",*a,b+1);
while(putchar(*(a+i))) i++;
}
A.C, omputer,COMPUTER B.C,omputer,COMPUTER
C.COMPUTER, omputer, COMPUTER D.C,omputer,COMPUTER 6.#include
main()
{ char a[]=“Th is is a computer",b[20];
int i=0;
while (a[i]!=…\0')
{ b[i]=a[i];i++;
}
b[i]=…\0';
printf(“stirng a is:%s\n",a);
printf(“string b is:");
for(i=0;*(b+i)!=…\0';i++)
printf("%c",*(b+i));
printf(“\n");
}
A.string a is :This is a computer
string b is : This is a computer
B.string a is :This is a computer string b is : This is a computer C.This is a computer
This is a computer
D.string a is : string b is :
*7.#include
main( )
{ int a[10]={11,12,13,14,15,16,17,18,19,20},n=10,i;
sub(a,&n);
for(i=0;i printf(“\n"); } sub(s,n) int*s,*n; { int i,j=0;