C语言最后部分练习题Word格式.docx
《C语言最后部分练习题Word格式.docx》由会员分享,可在线阅读,更多相关《C语言最后部分练习题Word格式.docx(10页珍藏版)》请在冰点文库上搜索。
程序运行后的输出结果是___。
A)22B)11C)18D)16
5、有以下程序:
voidsort(inta[],intn)
{inti,j,t;
for(i=0;
i<
n-1;
i+=2)
for(j=i+2;
n;
j+=2)
if(a[i]<
a[j]){t=a[i];
a[i]=a[j];
a[j]=t;
main(){intaa[10]={1,2,4,5,6,7,8,9,10},i;
sort(aa);
for(i=0;
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;
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;
N;
i++)scanf("
%d"
_______);
for(i=0i<
i++)
{if
(_____________)
_____________
printf("
%3d"
a[i]);
}
\n"
);
3.下面程序可求出矩阵a的主对角线上的元素之和,请填空。
{
inta[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;
for(j=0;
j++)
if(_____)sum=sum+_______;
sum=%d\n"
sum);
4.当从键盘输入18并回车后,下面程序的运行结果是________.
main()
{intx,y,i,a[8],j,u,v;
scanf("
&
x);
y=x;
i=0;
do
{u=y/2;
a[i]=y%2;
i++;
y=u;
}while(y>
=1)
for(j=i-1;
j>
j--)
a[j]);
<
/P<
p>
5.下面程序用插入法对数组a进行降序排序。
请填空。
{inta[5]={4,7,2,5,1};
inti,j,m;
for(i=1;
5;
{m=a[i];
j=____;
while(j>
=0&
&
m>
a[j])
{_______;
j--;
_______=m;
6.下面程序的功能是在三个字符串中找出最小的,请填空。
#include<
stdio.h>
string.h>
{
chars[20],str[3][20];
inti;
i++)gets(str[i]);
strcpy(s,_______);
if(strcmp(str[2],s)<
0)strcpy(s,str[2]);
%s\n"
7.下面程序的运行结果是________.
#include<
{chars[]="
ABCCDA"
;
intk;
charc;
for(k=1;
(c=s[k])!
='
\0'
k++)
{switch(c)
{case'
A'
:
putchar('
%'
continue;
case
'
B'
++k;
break;
default:
*'
C'
'
putchar('
#'
七、函数
典型考题
1、若程序中定义了以下函数:
doublemyadd(doublea,doubleb){return(a+b);
将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是____。
A)doublemyadd(doublea,b) B)doublemyadd(double,double)
C)doublemyadd(doubleb,doublea) D)doublemyadd(doublex,doubley)
charfun(charx,chary){if(x<
y)returnx;
returny;
main(){inta=’9’,b=’8’,c=’7’;
printf(“%c\n”,fun(fun(a,b),fun(b,c))}
程序运行结果是___。
A)函数调用出错 B)8 C)9 D)7
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>
returnz;
C)max(intx,inty){intz;
return(z);
D)intmax(intx,inty){return(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
intf1(intx,inty){returnx>
intf2(intx,inty){returnx>
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(x<
y){t=x;
x=y;
y=t;
}}
main(){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;
=n;
i++)y=y*x;
主函数已正确定义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;
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,&
printf(“%lf\n”,max(x,y);
doublemax(doublea,boubleb){return(a>
b?
a:
b);
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
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
#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=&
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=&
语句后,表达式**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、有以下程序段:
inta=4,b=3,*p,*q,*w;
p=&
q=&
w=q;
q=NULL;
则以下选项中错误的语句是____。
A)*q=0B)w=pC)*p=aD)*p=*w
int*f(int*x,int*y){if(*x<
*y)returnx;
elsereturny;
main(){inta=7,b=8,*p,*q,*r;
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
char*ss(char*s){returns+strlen(s)/2;
main(){char*p,*str=”abcdefgh”;
p=ss(str);
printf(“%s\n”,p);
补充
1、对于基类型相同的2个指针变量,不能进行的运算是___。
A)<
B)=C)+D)-
2、有如下程序段 int*p,a=10,b=1;
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;
c;
*p=’a’;
D)int*s,k;
s=p;
*s=1;
4、若有以下程序段:
doubler=99,*p=&
r;
*p=r;
则以下正确的叙述是__。
A)以上两处的*p含义相同,都是给指针变量p赋值
B)在doubler=99,*p=&
中,把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)