}
main(){intaa[10]={1,2,4,5,6,7,8,9,10},i;
sort(aa);for(i=0;i<10;i++)printf(“%d”,aa[i]);printf(“\n”);}
其输出结果是___。
A)1,2,3,4,5,6,7,8,9,10B)10,9,8,7,6,5,4,3,2,1
C)9,2,7,4,5,6,3,8,1,10D)1,10,3,8,5,6,7,4,9,2
6、以下不能正确定义二维数组的选项是___。
A)inta[2][2]={{1},{2}}B)inta[][2]={1,2,3,4}
C)inta[2][2]={{1},2,3}D)inta[2][]={{1,2},{3,4}}
7、若有定义:
int*p[3];,则以下叙述中正确是_元素__。
A)定义一个基类型为int的指针变量p,该变量具有三个指针
B)定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C)定义了一个名*p的整型数组,该数组含有三个int类型元素
D)定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型
8、有以下程序:
main(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,j,k=2;for(i=0;i<3;i++)printf(“%d”,m[k][i]);}
程序运行后的输出结果是___。
A)456B)258C)369D)789
二、填空题
1.若有定义:
doublex[3][5];则x数组中行下标的下限为_________,列下标的上限为_________.
2.下面程序以每行4个数据的形式输出a数组,请填空。
#defineN 20
main()
{inta[N],i;
for(i=0;i for(i=0i {if (_____________) _____________
printf("%3d",a[i]);
}
printf("\n");
}
3.下面程序可求出矩阵a的主对角线上的元素之和,请填空。
main()
{
inta[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(_____)sum=sum+_______;
printf("sum=%d\n",sum);
}
4.当从键盘输入18并回车后,下面程序的运行结果是________.
main()
{intx,y,i,a[8],j,u,v;
scanf("%d",&x);
y=x;i=0;
do
{u=y/2;
a[i]=y%2;
i++;y=u;
}while(y>=1)
for(j=i-1;j>=0;j--)
printf("%d",a[j]);
}
5.下面程序用插入法对数组a进行降序排序。
请填空。
main()
{inta[5]={4,7,2,5,1};
inti,j,m;
for(i=1;i<5;i++)
{m=a[i];
j=____;
while(j>=0&&m>a[j])
{_______;
j--;
}
_______=m;
}
for(i=0;i<5;i++)
printf("%d",a[i]);
printf("\n");
}
6.下面程序的功能是在三个字符串中找出最小的,请填空。
#include
#include
main()
{
chars[20],str[3][20];
inti;
for(i=0;i<3;i++)gets(str[i]);
strcpy(s,_______);
if(strcmp(str[2],s)<0)strcpy(s,str[2]);
printf("%s\n",_______);
}
7.下面程序的运行结果是________.
#include
main()
{chars[]="ABCCDA";
intk;charc;
for(k=1;(c=s[k])!
='\0';k++)
{switch(c)
{case'A':
putchar('%');continue;
case 'B':
++k;break;
default:
putchar('*');
case 'C':
putchar('&');continue;
}
putchar('#');
}
}
七、函数
典型考题
1、若程序中定义了以下函数:
doublemyadd(doublea,doubleb){return(a+b);}
将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是____。
A)doublemyadd(doublea,b) B)doublemyadd(double,double)
C)doublemyadd(doubleb,doublea) D)doublemyadd(doublex,doubley)
2、有以下程序:
charfun(charx,chary){if(xmain(){inta=’9’,b=’8’,c=’7’;
printf(“%c\n”,fun(fun(a,b),fun(b,c))}
程序运行结果是___。
A)函数调用出错 B)8 C)9 D)7
3、有以下程序:
voidf(intv,intw){intt;t=v;v=w;w=t;}
main(){intx=1,y=3,z=2;
if(x>y)f(x,y);
elseif(y>z)f(y,z);
elsef(x,z);
printf(“%d,%d,%d\n”,x,y,z);}
执行后的输出结果是___。
A)1,2,3 B)3,1,2 C)1,3,2 D)2,3,1
4、若已知定义的函数有返回值,则以下该函数调用的叙述中错误是_____。
A)函数调用可以作为独立的语句存在。
B)函数调用可以作为一个函数的实参。
C)函数调用可以出现在表达式中。
D)函数调用可以作为一个函数的形参。
5、有以下函数定义:
voidfun(intn,doublex){……}
若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是___。
A)fun(inty,doublem); B)k=fun(10,12.5);
C)fun(x,n); D)voidfun(n,x);
6、下列函数定义中,出现编译错误的是____。
A)max(intx,inty,int*z){*z=x>y?
x:
y;}
B)intmax(intx,y){intz;z=x>y?
x:
y;returnz;}
C)max(intx,inty){intz;z=x>y?
x:
y;return(z);}
D)intmax(intx,inty){return(x>y?
x:
y);}
7、有以下程序:
fun(inta,intb){if(a>b)return(a);elsereturn(b);}
main(){intx=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf(“%d\n”,r);}
程序运行后的输出结果是____。
A)3 B)6 C)8 D)12
8、有以下程序:
intf1(intx,inty){returnx>y?
x:
y;}
intf2(intx,inty){returnx>y?
y:
x;}
main(){inta=4,b=3,c=5,d,e,f;d=f1(a,b);d=f1(d,c);e=f2(a,b);e=f2(e,c);f=a+b+c-d-e;printf(“%d,%d,%d\n”,d,f,e);}
程序运行后的输出结果是_____。
A)3,4,5B)5,3,4 C)5,4,3 D)3,5,4
9、有以下程序:
voidf(intx,inty){intt;if(xmain(){inta=4,b=3,c=5;f(a,b);f(a,c);f(b,c);printf(“%d,%d,%d\n”,a,b,c);}
程序运行后的输出结果是:
____。
A)3,4,5B)5,3,4C)5,4,3D)4,3,5
填空题
1、函数fun的功能是计算xn。
doublefun(doublex,intn){inti;doubley=1;for(i=1;i<=n;i++)y=y*x;returny;}
主函数已正确定义m、a、b变量并赋值,并调用fun函数计算:
m=a4+b4-(a+b)3。
实现这一计算的函数调用语句为______。
2、以下程序的功能是调用函数fun计算:
m=1-2+3-4+…+9-10,并输出结果。
请填空。
intfun(intn){intm=0,f=1,i;
for(i=1;i<=n;i++){m+=i*f;f=______;}returnm;}f=(-1)*f
main(){printf(“%d\n”,_____);}fun(10)
3、补全程序,使程序能正确运行。
____(double,double);doublemax
main(){doublex,y;scanf(“%lf”%lf,&x,&y);printf(“%lf\n”,max(x,y);)
doublemax(doublea,boubleb){return(a>b?
a:
b);}
4、有以下程序:
intf(intx,inty){return(y-x)*x;}
main(){inta=3,b=4,c=5,d;d=f(f(3,4),f(3,5));printf(“%d\n”,d);}
程序运行后的输出结果是_____。
八、指针
选择题
1、设有定义:
intn=0,*p=&n,**q=&p;下列选项中,正确的赋值语句是__。
A)p=1B)*q=2C)q=pD)*p=5
2、有以下程序:
voidfun(char*a,char*b){a=b;(*a)++;}
main(){charc1=’A’,c2=’a’,*p1,*p2;p1=&c1;p2=&c2;fun(p1,p2);printf(“%c%c\n”,c1,c2);}
程序运行后的输出结果是___。
A)AbB)aaC)AaD)Bb
3、有以下程序:
#include
main(){printf(“%d\n”,NULL);}
程序运行后的输出结果是___。
A)0B)1C)-1D)NULL没定义,出错
4、若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是___。
A)int*i=NULL;
scanf(“%d”,i);
B)float*f=NULL;
*f=10.5;
C)chart=’m’,*c=&t;
*c=&t;
D)long*L;
L=’\0’;
5、已经定义以下函数:
fun(int*p){return*p;}
该函数的返回值是___。
A)不确定值B)形参p中存放的值
C)形参p所指存储单元中的值D)形参p的地址值
6、有以下程序段:
main(){inta=5,*b,**c;c=&b;b=&a;…}
程序在执行了c=&b;b=&a;语句后,表达式**c的值是___。
A)变量a的地址B)变量b中的值
C)变量a中的值D)变量b的地址
7、已经定义以下函数:
fun(char*p2,char*p1){while((*p2=*p1)!
=’\0’){p1++;p2++;}}
函数的功能是____。
A)将p1所指字符串复制到p2所指内存空间
B)将p1所指字符串的地址赋给指针p2
C)对p1和p2两个指针所指字符进行比较
D)检查p1和p2两个指针所指字符串中是否有’\0’
8、有以下程序段:
#include
inta=4,b=3,*p,*q,*w;p=&a;q=&b;w=q;q=NULL;
则以下选项中错误的语句是____。
A)*q=0B)w=pC)*p=aD)*p=*w
9、有以下程序:
int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}
main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf(“%d,%d,%d\n”,*p,*q,*r);}
程序运行后的输出结果是____。
A)7,8,8B)7,8,7C)8,7,7D)8,7,8
填空题
1、下面的sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指内存空间中,形成一个新字符串s。
请补全程序。
voidsstrcpy(char*s,char*t){while(*s++=____);}*t++
main(){charstr1[100],str2[]=”abcdefgh”;sstrycpy(str1,str2);printf(“%s\n”,str1);}
2、以下程序的运行结果是___。
efgh
#include
char*ss(char*s){returns+strlen(s)/2;}
main(){char*p,*str=”abcdefgh”;p=ss(str);printf(“%s\n”,p);}
补充
1、对于基类型相同的2个指针变量,不能进行的运算是___。
A)
2、有如下程序段 int*p,a=10,b=1;p=&a;a=*p+b;执行该程序段后,a的值为_B__。
A)12B)11C)10D)编译出错
3、以下正确的程序段是___。
A)int*p;
scanf(“%d”,p);
B)int*s,k;
*s=100;
C)int*s,k;
char*p,c;
s=&k;p=&c;*p=’a’;
D)int*s,k;
char*p,c;s=&k;
p=&c;s=p;*s=1;
4、若有以下程序段:
doubler=99,*p=&r;*p=r;则以下正确的叙述是__。
A)以上两处的*p含义相同,都是给指针变量p赋值
B)在doubler=99,*p=&r;中,把r的地址赋给了p所指的存储单元
C)语句*p=r;把变量r的值赋给指针p
D)语句*p=r;将变量r的值赋给指针p所指的存储单元
5、有以下函数:
char*fun(char*p){returnp;}该函数的返回值是__。
A)无确切的值B)形参p中存放的地址值
C)一个临时存储单元的地址D)形参p自身的地址值
6、下列程序执行后的输出结果是___。
intb=2;
intfunc(int*a){b+=*a;return(b);}
main(){inta=2,res=2;res+=func(&a);printf(“%d\n”,res);}
A)4B)6C)8D)10
7、下列程序的输出结果是___。
voidfunc(int*a,intb[]){b[0]=*a+6;}
main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf(“%d\n”,b[0]);}
A)6B)7C)8D)9
8、若有以下调用语句,则不正确的fun函数首部是___。
main(){inta[50],n;
……
fun(n,&a[9]);
……}
A)voidfun(intm,intx[])B)voidfun(ints,inth[41])
C)voidfun(intp,in*s)D)voidfun(intn,inta)