printf("\n");}
程序运行后的输出结果是
A)2,4,8, B)3,6,9, C)3,5,7, D)1,3,5,
答案:
B
(2012年3月真题24题)设有如下定义语句
intm[]={2,4,6,8},*k=m;
以下选项中,表达式的值为6的是
A*(k+2)Bk+2C*k+2D*k+=2
答案:
A
(2012年3月真题26题)若有函数
viodfun(doublea[],int*n){………}以下叙述中正确的是
A调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送
B形参a和n都是指针变量
C形参a是一个数组名,n是指针变量
D调用fun函数时将把double型实参数组元素一一对应地传送给形参a数组
答案:
C
(2012年3月真题29题)avg函数的功能是求整型数组中的前若干个元素的平均值,设数组元素个数最多不超过10,则下列函数说明语句错误的是
A、intavg(int*a,intn);B、intavg(inta[10],intn);
C、intavg(inta,intn);D、intavg(inta[],intn);
答案:
C
(2011年9月真题27题)有以下程序
#include
voidfun(int*p){printf(“%d\n”,p[5]);}
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10};
fun(&a[3]);}
程序运行后的输出结果是
A.5B.6C.8D.9
答案:
D
(2011年3月真题30题)以下函数的功能是:
通过键盘输入数据,为数组中的所有元素赋值。
#include
#defineN10
voidfun(intx[N])
{inti=0; while(i 在程序中下划线处应填入的是
A)x+iB)&x[i+1] C)x+(i++)D)&x[++i]
答案:
C
(2010年9月真题29题)有以下程序
#include
voidf(int*p);
main()
{inta[5]={1,2,3,4,5},*r=a;
f(r);printf("%d\n",*r);}
voidf(int*p){p=p+3;printf("%d,",*p);}
程序运行后的输出结果是
A)1,4 B)4,4 C)3,1 D)4,1
答案:
D
(2010年3月真题28题)设有定义doublea[10],*s=a;,以下能够代表数组元素a[3]的是:
A)(*s)[3] B)*(s+3) C)*s[3] D)*s+3
答案:
B
(2010年3月真题32题)有以下程序
#include"stdio.h"
#defineN8
voidfun(int*x,inti)
{*x=*(x+i);}
main()
{inta[N]={1,2,3,4,5,6,7,8},i;
fun(a,2);
for(i=0;iprintf("\n");}
程序运行后的输出结果是
A)1313 B)2234 C)3234 D)1234
答案:
C
(2009年3月真题29题)若有以下定义intx[10],*pt=x;则对数组元素的正确引用是
A)*&x[10]B)*(x+3)C)*(pt+10)D)pt+3
答案:
B
(2009年3月真题35题)有以下程序
#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)1012B)810C)1028D)1016
答案:
C
(2008年9月真题23题)若有定义语句:
double x[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是
A)*p B)x[5] C)*(p+1) D)*x
答案:
B
(2008年9月真题32题)有以下程序
#include
void fun( int a, int b)
{ int t;
t=a; a=b; b=t;
}
main()
{ int c[10]={1,2,3,4,5,6,7,8,9,0}, i;
for(i=0;i<10;i+=2) fun(c, c[i+1]);
for(i=0;i<10;i++) printf("%d," ,c[i]);
printf("\n");
}
程序的运行结果是
A)1,2,3,4,5,6,7,8,9,0 B)2,1,4,3,6,5,8,7,0,9
C)0,9,8,7,6,5,4,3,2,1 D)0,1,2,3,4,5,6,7,8,9
答案:
A
(2008年9月真题34题)有以下程序
#include
voidfun(inta[],intn)
{inti,t;
for(i=0;i}
main()
{intk[10]={1,2,3,4,5,6,7,8,9,10},i;
fun(k,5);
for(i=2;i<8;i++)printf("%d",k[i]);
printf("\n");
}
程序的运行结果是
A)345678 B)876543 C)1098765 D)321678
答案:
D
(2008年9月真题)(35) 有以下程序
#include
#defineN4
voidfun(inta[][N],intb[])
{inti;
for(i=0;i}
main()
{intx[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;
fun(x,y);
for(i=0;iprintf("\n");
}
程序的运行结果是
A)1,2,3,4, B)1,0,7,0, C)1,4,5,9, D)3,4,8,10,
答案:
B
(2008年9月真36题) 有以下程序
#include
intfun(int(*s)[4],intn,intk)
{intm,i;
m=s[0][k];
for(i=1;im)m=s[k][i];
returnm;
}
main()
{inta[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}};
printf("%d\n",fun(a,4,0));
}
程序的运行结果是
A)4 B)34 C)31 D)32
答案:
4
8.4通过指针引用字符串
(2012年9月真题)(31)有以下程序
#include
main()
{char*s="12134"; intk=0,a=0;
while(s[k+1]!
='\0')
{k++;
if(k%2==0){a=a+(s[k]-'0'+1);continue;
}
a=a+(s[k]-'0'); }
printf("k=%da=%d\n",k,a);
}
程序运行后的输出结果是
A)k=6 a=11 B)k=3 a=14 C)k=3 a=12 D)k=4a=12
答案:
D
(2012年3月真题)28、以下选项中有语法错误的是
Achar*str[]={“guest”};
B、charstr[10]={“guest”};
C、char*str[3]*str[1]={“guest”};
D、charstr[3][10];str[1]={“guest”};
答案:
D
(2011年9月真题)29.有以下函数
intfun(char*x,char*y)
{intn=0;
while((*x=*y)&&*x!
=’\0’)
{x++;y++;n++;}
returnn;}
函数的功能是
A.查找x和y所指字符串中是否有‘\0‘
B.统计x和y所指字符串中最前面连续相同的字符个数
C.将y所指字符串赋给x所值存储空间
D.统计x和y所指字符串中相同的字符个数
答案:
B
(2011年9月真题)35.有以下程序
#include
#include
voidfun(char*u,intn)
{chars,*y1,*y2;y1=u;y2=u+n-1;while(y1main()
{chara[]="1,2,3,4,5,6";fun(a,strlen(a));puts(a);}
程序运行后的输出结果是
A.654321B.115611C.153525D.123456
答案:
A
(2011年3月真题)(25)有以下程序(说明:
字母A的ASCII码值是65)
#include
voidfun(char*s)
{while(*s)
{if(*s%2)printf("%c",*s);s++;}}
main()
{chara[]="BYTE";
fun(a);
printf("\n");
}
程序运行后的输出结果是
A)BYB)BTC)YTD)YE
答案:
D
(2011年3月真题)(29)有以下程序
#include
voidfun(char*c)
{while(*c)
{if(*c>='a'&&*c<='z')*c=*c-('a'-'A'); c++; }}
main()
{chars[81]; gets(s);fun(s);puts(s); }
当执行程序时从键盘上输入HelloBeijing<回车>,则程序的输出结果是
A)hellobeijingB)HelloBeijing
C)HELLOBEIJINGD)hELLOBeijing
答案:
C
(2010年9月真题)(32)以下不能将s所指字符串正确复制到t所指存储空间的是
A)while(*t=*s){t++;s++;}
B)for(i=0;t[i]=s[i];i++);
C)do{*t++=*s++;}while(*s);
D)for(i=0,j=0;t[i++]=s[j++];);
答案:
C
(2010年9月真题)(34)有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母
#include
#include
voidfun(char*p)
{inti=0;
while(p[i])
{if(p[i]==''&&islower(p[i-1]))p[i-1]=p[i-1]-'a'+'A';
i++;}}
main()
{chars1[100]="abcdEFG!
";
fun(s1);printf("%s\n",s1);}
程序运行后的输出结果是
A)ab cd EFG!
B)Ab Cd EFg!
C)aB cD EFG!
D)ab cd EFg!
答案:
C
(2009年9月真题)(28)有以下程序
#include
#include
main()
{charstr[][20]={“One*World”,“One*Dream!
”},*p=str[1];
printf(“%d,”,strlen(p));printf(“%s\n”,p);}
程序运行后的输出结果是
A)9,One*WorldB)9,One*Dream
C)10,One*DreamD)10,One*World
答案:
C
(2009年9月真题)(32)下列函数的功能是
fun(char*a,char*b)
{while((*b=*a)!
=’\0’){a++,b++;}}
A)将a所指字符串赋给b所指空间
B)使指针b指向a所指字符串
C)将a所指字符串和b所指字符串进行比较
D)检查a和b所指字符串中是否有’\0’
答案:
A
(2009年3月真题)31.有以下程序
#include
main()
{char*a[]={"abcd","ef","gh","ijk"};inti;
for(i=0;i<4;i++)printf("%c",*a[i]);}
程序运行后的输出结果是
A)aegiB)dfhkC)dfhkD)abcdefghijk
答案:
A
(2009年3月真题)25.有以下程序
#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)dB)goC)godD)good
答案:
A
8.5指定函数的指针
(2009年9月真题)(33)设有以下函数
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;
答案:
A
(2008年4月真题)40、设有定义语句int(*f)(int);,则下列叙述正确的是()。
A)f是基类型为int的指针变量
B)f是指向函数的指针变量,该函数具有一个int类型的形态
C)f是指向int类型一维数组的指针变量
D)f是函数名,该函数的返回值是其类型为int类型的地址
答案:
B
8.6返回指针值的函数
8.7指针数组和多重指针
(2011年3月真题)(28)若有定义语句:
chars[3][10],(*k)[3],*p;,则以下赋值语句正确的是
A)p=s;B)p=k;C)p=s[0];D)k=s;
答案:
D
(2010年9月真题)(26)有定义语句:
int*p[4];以下选项中与此语句等价的是
A)int p[4]; B)int **p;
C)int *(p[4]); D)int(*p)[4];
答案:
C
(2010年3月真题)(27)若有定义int(*pt)[3];,则下列说法正确的是
A)定义了基类型为int的三个指针变量
B)定义了基类型为int的具有三个元素的指针数组pt
C)定义了一个名为*pt、具有三个元素的整型数组
D)定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组
答案:
D
8.8动态内存分配和指向它的指针变量
(2012年9月真题)(35)有以下程序
#include
#include
voidfun(int*p1,int*p2,int*s)
{s=(int*)malloc(sizeof(int));
*s=*p1+*p2;
free(s);}
main()
{inta=1,b=40,*q=&a;
fun(&a,&b,q);
printf("%d\n",*q);
}
程序运行后的输出结果
A)42 B)0 C)1 D)41
答案:
C
(2010年9月真题)(37)有以下程序
#include
#include
main()
{int*a,*b,*c;
a=b=c=(int*)malloc(sizeof(int));
*a=1;*b=2,*c=3;
a=b;
printf("%d,%d,%d\n",*a,*b,*c);}
程序运行后的输出结果是
A)3,3,3 B)2,2,3 C)1,2,3 D)1,1,3
答案: