真题指针.docx
《真题指针.docx》由会员分享,可在线阅读,更多相关《真题指针.docx(20页珍藏版)》请在冰豆网上搜索。
真题指针
23)已定义以下函数(0604B)
intfun(int*p)
{return*p;}
fun函数返回值是
A)不确定的值B)一个整数C)形参p中存放的值D)形参p的地址值
37)有以下程序(0604A)
voidfun1(char*p)
{
char*q;
q=p;
while(*q!
='\0')
{(*q)++;q++;}
}
main()
{chara[]={“Program”},*p;
p=&a[3];fun1(p);printf(“%s\n”,a);
}
程序执行后的输出结果是
A)Prohsbn B)Prphsbn C)Progsbn D)Program
38)有以下程序(0604C)
voidswap(char*x,char*y)
{
chart;
t=*x;*x=*y;*y=t;
}
main()
{
char*s1=”abc”,*s2=”123”;
swap(s1,s2);printf(“%s,%s\n”,s1,s2);
}
程序执行后的输出结果是
A)123,abc B)abc,123 C)1bc,a23 D)321,cba
47)设有以下定义和语句(0604A)
charstr[20]=”Program”,*p;
p=str;
则以下叙述中正确的是
A)*p与str[0]中的值相等
B)str与p的类型完全相同
C)str数组长度和p所指向的字符串长度相等
D)数组str中存放的内容和指针变量p中存放的内容相同
(29)在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是(0609A)。
A)p向高地址移动了一个字节B)p向高地址移动了一个存储单元
C)p向高地址移动了两个字节D)p与a+1等价
(30)有以下程序:
main()
{inta=1,b=3,c=5;
int*p1=&a,*p2=&b,*p=&c;
*p=*p1*(*p2);
printf("%d\n",c);
}
执行后的输出结果是(0609C)。
A)1B)2C)3D)4
(31)若有定义:
intw[3][5];,则以下不能正确表示该数组元素的表达式是(0609D)。
A)*(*w+3)B)*(w+1)[4]C)*(*(w+))D)*(&w[0][0]+1)
(33)若有定义语句:
intk[2][3],*pk[3];,则以下语句中正确的是(0609B)。
A)pk=k;B)pk[0]=&k[1][2];
C)pk=k[0];D)pk[1]=k;
(37)有以下程序:
main()
{chars[]={"aeiou"},*ps;
ps=s;printf("%c\n",*ps+4);
}
程序运行后的输出结果是(0609B)。
A)aB)cC)uD)元素s[4]的地址
(38)以下语句中存在语法错误的是(0609A)。
A)charss[6][20];ss[1]="right?
";
B)charss[][20]={"right?
"};
C)char*ss[6];ss[1]="right?
";
D)char*ss[]={"right?
"};
(39)若有定义:
char*x="abcdefghi";,以下选项中正确运用了strcpy函数的是(0609D)。
A)chary[10];strcpy(y,x[4]);
B)chary[10];strcpy(++y,&x[1]);
C)chary[10],*s;strcpy(s=y+5,x);
D)chary[10],*s;strcpy(s=y+1,x+1);
(40)有以下程序:
intadd(inta,intb){return(a+b);}
main()
{intk,(*f)(),a=5,b=10;
f=add;
..........
}
则以下函数调用语句错误的是(0609C)。
A)K=(*f)(a,b);B)K=add(a,b);
C)K=*f(a,b);D)k=f(a,b);
0704
(28)有以下函数
intfun(char*s)
{char*t=s;
while(*t++);
return(t-s);
}
该函数的功能是(0704B)
A)比较两个字符的大小 B)计算s所指字符串占用内存字节的个数
C)计算s所指字符串的长度 D)将s所指字符串复制到字符串t中
(29)设已有定义:
floatx;则以下对指针变量p进行定义且赋初值的语句中正确的是(0704D)
A)float*p=1024; B)int*p=(floatx);
C)floatp=&x; D)float*P=&x;
(30)有以下程序
#include
main()
{intn,*p=NULL;
*p=&n;
printf(“Inputn:
”);scanf(“%d”,&p);printf(“outputn:
”);printf(“%d\n”,p);
}
该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是(0704A)
Aintn,*p=NULL;B)*p=&n; C)scanf(“%d”,&p) D)printf(“%d\n”,p);
(31)以下程序中函数f的功能是:
当flag为1时,进行有由小到大排序;当flag为0时,进行由大到小排序。
(0704B)
voidf(intb[],intn,intflag)
{inti,j,t;
for(i=0;i for(j=i+1;j if(flag?
b[i]>b[j]:
b[i]
}
main()
{inta[10]={5,4,3,2,1,6,7,8,9,10},i;
f(&a[2],5,0);f(a,5,1);
for(i=0;i<10;i++)printf(“%d,”a[i]);
}
程序运行后的输出结果是
A)1,2,3,4,5,6,7,8,9,10,
B)3,4,5,6,7,2,1,8,9,10,
C)5,4,3,2,1,6,7,8,9,10,
D)10,9,8,7,6,5,4,3,2,1,
(32)有以下程序
voidf(intb[])
{inti;
for(i=2;i<6;i++)b[i]*=2;
}
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10},i;
f(a);
for(i=0;i<10;i++)printf(“%d,”,a[i]);
}
程序运行后的输出结果是(0704B)
A)1,2,3,4,5,6,7,8,9,10,
B)1,2,6,8,10,12,7,8,9,10
C)1,2,3,4,10,12,14,16,9,10,
D)1,2,6,8,10,12,14,16,9,10,
(36)有以下程序(0704B同32)
voidf(int*q)
{inti=0;
for(;i<5;i++)(*q)++;
}
main()
{inta[5]={1,2,3,4,5},i;
f(a);
for(i=0;i<5;i++)printf(“%d,”,a[i]);
}
程序运行后的输出结果是
A)2,2,3,4,5, B)6,2,3,4,5, C)1,2,3,4,5, D)2,3,4,5,6,
(40)有以下程序
voidf(intn,int*r)
{intr1=0;
if(n%3==0)r1=n/3;
elseif(n%5==0)r1=n/5;
elsef(--n,&r1);
*r=r1;
}
main()
{intm=7,r;
f(m,&r);printf(“%d\n”,r);
}
程序运行后的输出结果是(0704A)
A)2 B)1 C) 3 D)0
(15)若在定义语句:
inta,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是(0709C)
A)scanf("%d",a,b,c); B)scanf("%d%d%d",a,b,c);
C)scanf("%d",p); D)scanf("%d",&p);
(29)设有定义:
charp[]={’1’,’2’,’3’},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是(0709A)
A)sizeof(p) B)sizeof(char) C)sizeof(*q) D)sizeof(p[0])
(30)有以下函数
intaaa(char*s)
{char*t=s;
while(*t++);
t--;
return(t-s);
}
以下关于aaa函数的功能叙述正确的是(0709A)
A)求字符串s的长度 B)比较两个串的大小
C)将串s复制到串t D)求字符串s所占字节数
(32)有以下程序(0709D)
#include
voidfun(char **p)
{++p; printf("%s\n",*p);}
main()
{char *a[]={"Morning","Afternoon","Evening","Night"};
fun(a);
}
程序的运行结果是
A)Afternoon B)fternoon C)Morning D)orning
(33)若有定义语句:
inta[2][3],*p[3];,则以下语句中正确的是(0709C)
A)p=a; B)p[0]=a; C)p[0]=&a[1][2]; D)p[1]=&a;
(34)有以下程序
#include
voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/
{intt,i,j;
for(i=0;ifor(j=i+1;jif(a[i]}
main()
{intc[10]={1,2,3,4,5,6,7,8,9,0},i;
fun(c+4,6);
for(i=0;i<10;i++) printf("%d,",c[i]);
printf("\n");
}
程序运行的结果是(0709D)
A)1,2,3,4,5,6,7,8,9,0, B)0,9,8,7,6,5,1,2,3,4,
C)0,9,8,7,6,5,4,3,2,1, D)1,2,3,4,9,8,7,6,5,0,
(35)有以下程序(0709C)
#include
int fun(chars[])
{intn=0;
while(*s<=’9’&&*s>=’0’) {n=10*n+*s-’0’;s++;}
return(n);
}
main()
{chars[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’};
printf("%d\n",fun(s));
}
程序运行的结果是
A)9 B)61490 C)61 D)5
(38)有以下程序:
(0709D)
#include
voidfun(char*t,char*s)
{
while(*t!
=0)t++;
while((*t++=*s++)!
=0);
}
main()
{
charss[10]=”acc”,aa[10]=”bbxxyy”;
fun(ss,aa);
printf(“%s,%s\n”,ss,aa);
}
程序运行结果是
A)accxyy,bbxxyyB)acc,bbxxyy
C)accxxyy,bbxxyyD)accbbxxyy,bbxxyy
(42)有以下程序(0709A)
#include
void fun(intn,int*p)
{ int f1,f2;
if(n==1||n==2) *p=1;
else
{ fun(n-1,&f1); fun(n-2,&f2);
*p=f1+f2;
}
}
main()
{ int s;
fun(3,&s); printf("%d\n",s);
}
程序的运行结果是
A)2 B)3 C)4 D)5
(23)有以下程序(0804D)
#include
main()
{inta[]={1,2,3,4},y,*p=&a[3];
--p;y=*p;printf("y=%d\n",y);
}
程序的运行结果是
A)y=0B)y=1C)y=2D)y=3
25)设有如下程序段(0804A)
chars[20]="Beijing",*p;
p=s;
则执行p=s;语句后,以下叙述正确的是
A)可以用*p表示s[0]
B)s数组中元素饿个数和p所指字符串长度相等
C)s和p都是指针变量
D)数组s中的内容和指针变量p中的内容相同
(32)有以下程序(0804C)
#include
voidfun(int*s,intnl,intn2)
{inti,j,t;
i=n1;j=n2;
while(ii++;j--;}
}
main()
{inta[10]={1,2,3,4,5,6,7,8,9,0},k;
fun(a,0,3);fun(a,4,9);fun(a,0,9);
for(k=0;k<10;k++)printf("%d",a[k]);printf(“\n”);
}
程序的运行结果是
A)0987654321B)4321098765C)5678901234D)0987651234
(33)有以下程序(0804A)
#include
#include
voidfun(char*s[],intn)
{char*1;inti,j;
for(i=0;ifor(j=i+1;jif(strlen(s[i])>strlen(s[j])){t=s[i];s[i]=s[j]=t;}
}
main()
{char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};
fun(ss,5;printf("%s,%s\n",ss[0],ss[4]);
}
程序的运行结果是
A)xy,aaaaccB)aaaacc,xyC)bcc,aabccD)aabcc,bcc
(35)有以下程序(0804C)
#include
voidfun(char*a,char*b0
{while(*a==’*’)a++;
while(*b=*a){b++;a++;}
}
main()
{chau*s="*****a*b****",t[80];
fun(s,y;puts(t);
}
程序的运行结果是
A)*****a*bB)a*bC)a*b****D)ab
23) 若有定义语句:
doublex[5]={1.0,2..0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是(0809B)
A)*p B)x[5] C)*(p+1) D)*x
(21)有以下程序(0904C)
#iinclude
main()
{char*s={“ABC”};
do
{printf(“%d”;*s%l0);s++
}whi1e(*s);
}
注意:
字母A的ASCII码值为65。
程序运行后的输出结果是
A)5670
B)656667
C)567
D)ABC
(25)有以下程序(0904A)
#include
voidfun(char*s)
{while(*s)
{if(*s%2==0)printf(“%c”,*s);
s++;
}
}
main()
{chara[]=(“good”};
fun(a);printf(“\n”);
}
注意:
字母a的ASCII码值为97,程序运行后的输出结果是
A)d
B)go
C)god
D)good
(26)有以下程序(0904B)
#include
voidfun(int*a,int*b)
{int*c;
c=a;a=b;b=c;
}
main()
{intx=3,y=5,*p=&x,*q=&y;
fun(p,q);printf(“%d,%d,”,*p,*q):
fun(&x,&y);printf(“%d,%d\n”;*p,*q);
}
程序运行后的输出结果是
A)3,5,5,3
B)3,5,3,5
C)5,3,3,5
D)5,3,5,3
(27)有以下程序(0904A)
#include
voidf(int*p,int*q);
main()
intm=l,n=2,*r=&m;
f(r,&n);printf(“%d,%d”,m,n);
}
voidf(int*p,int*q)
{p=p+l:
*q=*q+1;}
程序运行后的输出结果是
A)1,3
B)2,3
C)1,4
D)1,2
(29)若有以下定义(0904B)
intx[10],*pt=x;
则对x数组元素的正确引用是
A)*&x[10]
B)*(x+3)
C)*(pt+10)
D)pt+3
(31)有以下程序(0904A)
#include
main()
{char*a[]=(“abcd”,“ef”,“gh”,“ijk”};inti;
for(i=0;i<4;i++)printf(“%c”,*a[i]);
}
程序运行后的输出结果是
A)aegi
B)dfhk
C)abcd
D)abcdefghijk
(32)以下选项中正确的语句组是(0904D)
A)chars[];s=“BOOK!
”;
B)char*s;s={“BOOK!
”};
C)chars[10];s=“BOOK!
”;
D)char*s;s=“BOOK!
”;
(35)有以下程序(0904C)
#include
intb=2.;
intfun(int*k)
{b=*k+b;return(b);}
main()
{inta[10]={1,2,3,4,5,6,7,8),i;
for(i=2;i<4;i++){b=fun(&a[i])+b;printf(“%d”,b);}
printf(“\n”);
}
程序运行后的输出结果是
A)1012
B)810
C)1028
D)1016
(32)下列函数的功能是(0909)
fun(char*a,char*b)
{while((*b=*a)!
=’\0’){a++,b++;}}
A)将a所指字符串赋给b所指空间
B)使指针b指向a所指字符串
C)将a所指字符串和b所指字符串进行比较
D)检查a和b所指字符串中是否有’\0’
(33)设有以下函数(0909)
voidfun(intn,char*s){……}
则下面对函数指针的定义和赋值均是正确的是
A)void(*pf)();pf=fun;
B)viod*pf();pf=fun;
C)void*pf();*pf=fun;
D)void(*pf)(int,char);pf=&fun;
(37)设有定义:
char*c;,以下选项中能够使字符型指针c正确指向一个字符串的是(0909)
A)charstr[]=”string”;c=str;
B)scanf(“%s”,c);
C)c=getchar();
D)*c=”string”;
(23)下列语句中,正确的是(1003A)
A)char*s;s="Olympic";B)chars[7];s="Olympic";
C)char*s;s={"Olympic"};D)chars[7];s={"Olympic"};
(27)若有定义int(*pt