C语言习题集含答案11文档格式.docx
- 文档编号:21374524
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:12
- 大小:22.05KB
C语言习题集含答案11文档格式.docx
《C语言习题集含答案11文档格式.docx》由会员分享,可在线阅读,更多相关《C语言习题集含答案11文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
(7)若有以下定义:
chars[20]="
programming"
*ps=s;
则不能代表字符o的表达式是(d)
【Ps是一维地址】
A)ps+2B)s[2]C)ps[2]D)ps+=2,*ps
(8)若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是(a)
for(i=5;
i;
i--)
for(j=0;
j<
4;
j++){...}
A)20B)25C)24D)30
(9)若有以下定义和语句:
char*s1="
12345"
*s2="
1234"
%d\n"
strlen(strcpy(s1,s2)));
则输出结果是(a)
A)4B)5C)9D)10
(10)若有以下定义和语句:
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则不能表示a数组元素的表达式是(b)
A)*pB)a[10]C)*aD)a[p-a]
(11)下面程序的输出是(c)
main()
{char*s="
121"
intk=0,a=0,b=0;
do
{k++;
if(k%2==0){a=a+s[k]-'
0'
continue;
}
b=b+s[k]-'
a=a+s[k]-'
}
while(s[k+1]);
k=%da=%db=%d\n"
k,a,b);
A)k=3a=2b=3B)k=3a=3b=2
C)k=2a=3b=2D)k=2a=2b=3
(12)下面程序的输出是(a)
{unsigneda=32768;
a=%d\n"
a);
}运行结果:
-32768
A)a=-32768B)a=32767
C)a=-32767D)a=-1
(13)若有以下定义:
floatx;
inta,b;
则正确的switch语句是(c)
A)switch(x)B)switch(x)
{case1.0:
*\n"
{case1,2:
case2.0:
**\n"
case3:
}}
C)switch(a+b)D)switch(a+b);
{case1:
\n"
{case1:
case1+2:
case2:
}}
(14)以下程序输出的结果是(d)
{charw[][10]={"
ABCD"
"
EFGH"
IJKL"
MNOP"
},k;
for(k=1;
k<
3;
k++)
&
w[k][k]);
A)ABCDB)ABCD
FGHEFG
KLIJ
M
C)EFGD)FGH
JKKL
O
(15)若数组名作实参而指针变量作形参,函数调用实参传给形参的是(d)
A.数组的长度B.数组第一个元素的值
C.数组所有元素的值D.数组第一个元素的地址
(16)若变量已正确定义并赋值,下面符合C语言语法的表达式是(b)
A)a:
=b+1B)a=b=c+2C)int18.5%3D)a=a+7=c+b
(17)C语言中运算对象必须是整型的运算符是(a)
A)%=B)/C)=D)〈=
(18)若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是(c)
A)1B)2C)2.0D)2.5
(19)若变量a、i已正确定义,且i已正确赋值,合法的语句是(d)
A)a==1B)++i;
C)a=a++=5;
D)a=int(i);
(20)若有以下程序段,
intc1=1,c2=2,c3;
c3=1.0/c2*c1;
则执行后,c3中的值是(a)
A)0B)0.5C)1D)2
(21)有如下程序
main()
{inty=3,x=3,z=1;
printf(“%d%d\n”,(++x,y++),z+2);
}
运行该程序的输出结果是(d)
A)34B)42C)43D)33
(22)能正确表示逻辑关系:
“a≥=10或a≤0”的C语言表达式是(d)
A)a>
=10ora<
=0B)a>
=0|a<
=10
C)a>
=10&
&
a<
=0D)a>
=10||a<
=0
(23)有如下程序
{intx=1,a=0,b=0;
switch(x)
{case0:
b++;
case1:
a++;
case2:
}
printf(“a=%d,b=%d\n”,a,b);
该程序的输出结果是(a)
A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2
(24)有如下程序
main()
{floatx=2.0,y;
if(x<
0.0)y=0.0;
elseif(x<
10.0)y=1.0/x;
elsey=1.0;
printf(“%f\n”,y);
该程序的输出结果是(c)
A)0.000000B)0.250000C)0.500000D)1.000000
(26)有如下程序
{inti,sum;
for(i=1;
i<
=3;
sum++)sum+=i;
printf(“%d\n”,sum);
}
该程序的执行结果是(c)
A)6B)3C)死循环D)0
(27)有如下程序
main()
{intx=23;
do
{printf(“%d”,x--);
}while(!
x);
该程序的执行结果是(b)
A)321B)23C)不输出任何内容D)陷入死循环
(28)有如下程序
{intn=9;
while(n>
6){n--;
printf(“%d”,n);
}}
该程序段的输出结果是(b)
A)987B)876C)8765D)9876
(29)设有说明语句:
chara=’\72’;
则变量a(a)
A)包含1个字符B)包含2个字符
C)包含3个字符D)说明不合法
(30)有如下函数调用语句
func(rec1,rec2+rec3,(rec4,rec5);
该函数调用语句中,含有的实参个数是(d)
A)3B)4C)5D)有语法错
(31)有如下程序
intfunc(inta,intb)
{return(a+b);
{intx=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(“%\d\n”,r);
该程序的输出的结果是(d)
A)12B)13C)14D)15
(32)有如下程序段
int*p,a=10,b=1;
p=&
a=*p+b;
执行该程序段后,a的值为(b)
A)12B)11C)10D)编译出错
(33)对于基类型相同的两个指针变量之间,不能进行的运算是(a)
A)<
B)=C)+D)-
(34)有如下程序
longfib(intn)
{if(n>
2)return(fib(n-1)+fib(n-2));
elsereturn
(2);
{printf(“%d\n”,fib(3));
该程序的输出结果是(b)
A)2B)4C)6D)8
(35)在C语言中,函数的隐含存储类别是(a)
A)autoB)staticC)externD)无存储类别
(36)有如下程序
#defineN2
#defineMN+1
#defineNUM2*M+1
{inti;
for(i=1;
=NUM;
i++)printf(“%d\n”,i);
该程序中的for循环执行的次数是(b)
A)5B)6C)7D)8
(37)有以下函数
charfun(char*p)
{returnp;
该函数的返回值是(d)
A)无确切的值B)形参p中存放的地址值
B)一个临时存储单元的地址D)形参p自身的地址值
(38)有如下程序段
inta=14,b=15,x;
charc=’A’;
x=(a&
b)&
(c<
’B’);
执行该程序段后,x的值为(d)
A)trueB)falseC)0D)1
(39)有如下说明
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是(b)
A)*p+9B)*(p+8)C)*p+=9D)p+8
(40)若有以下的定义:
intt[3][2];
能正确表示t数组元素地址的表达式是(cd)
A)&
t[3][2]B)t[3]C)t[1]D)t[2]
(41)有如下程序
{charch[2][5]={“6937”,”8254”},*p[2];
inti,j,s=0;
for(i=0;
2;
i++)p[i]=ch[i];
i++)
p[i][j]>
’\0’;
j+=2)
s=10*s+p[i][j]-‘0’;
printf(“%d\n”,s);
A)69825B)63825C)6385D)693825
(42)若有以下的定义:
inta[]={1,2,3,4,5,6,7,88,9,10},*p=a;
则值为3的表式是(a)
A)p+=2,*(p++)B)p+=2,*++p
C)p+=3,*p++D)p+=2,++*p
(43)假定所有变量均已正确说明,下列程序段运行后x的值是(b)
a=b=c=0;
x=35;
if(!
a)x--;
elseif(b);
if(c)x=3;
elsex=4;
A)34B)4C)35D)3
(44)在以下一组运算符中,优先级最高的运算符是(c)
A)<
=B)=C)%D)&
(45)若有以下定义和语句:
intw[2][3],(*pw)[3];
pw=w;
则对w数组元素非法引用是(b)
A)*(w[0]+2)=*w[0][2]B)*(pw+1)[2]
C)pw[0][0]=*w[0][0]D)*(pw[1]+2)=*w[1][2]
(46)若有以下程序片段:
charstr[]="
ab\n\012\\\"
"
strlen(str));
上面程序片段的输出结果是(c)
A)3B)4C)6D)12
(47)函数调用strcat(strcpy(str1,str2),str3)的功能是(c)
A)将串str1复制到串str2中后再连接到串str3之后
B)将串str1连接到串str2之后再复制到串str3之后
C)将串str2复制到串str1中后再将串str3连接到串str1之后
D)将串str2连接到串str1之后再将串str1复制到串str3中
(48)以下对C语言函数的有关描述中,正确的是(a)
A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B)C函数既可以嵌套定义又可以递归调用
解释:
C函数可以递归调用,但不允许嵌套定义
C)函数必须有返回值,否则不能使用函数
D)C程序中有调用关系的所有函数必须放在同一个源程序文件中
(49)以下叙述中不正确的是(c)
A)在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值.
B)在C中,调用函数时,实在参数和对应形参在类型上只需赋值兼容.
C)在C中,外部变量的隐含类别是自动存储类别.
D)在C中,函数形参可以说明为register变量.
(50)以下程序的输出结果是(a)
#definesub1(chara,charb){charc;
c=a;
a=b;
b=c;
#definesub2(char*a,charb){charc;
c=*a;
*a=b;
#definesub3(char*a,char*b){charc;
*a=*b;
*b=c;
{chara,b;
a='
A'
b='
B'
sub3(&
a,&
b);
putchar(a);
putchar(b);
a='
sub2(&
a,b);
sub1(a,b);
putchar(b);
A)BABBABB)ABBBBA
C)BABABAD)BAABBA
(51)错误的转义字符是(a)
A)'
\091'
B)'
\\'
C)'
\0'
D)'
\'
'
(52)设inta,b,c;
执行表达式a=b=1,a++,b+1,c=a+b--后,a,b和c的值分别是(b)
A)2,1,2B)2,0,3C)2,2,3D)2,1,3
(53)在C语言中,错误的常数是(a)
A)1E+0.0B)5C)0xafD)0L
(54)设intk;
则语句for(k=0;
k=1;
k++);
和
语句for(k=0;
k==1;
k++);
执行的次数分别是(a)
A)无限和0B)0和无限C)都是无限D)都是0
(55)某文件中定义的静态全局变量(或称静态外部变量)其作用域是(b)
A)只限某个函数B)本文件C)跨文件D)不限制作用域
二、程序填空题:
(10)函数pi的功能是根据以下近似公式求π值:
(π*π)/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)
现在请你在下面的函数中填空,完成求π的功能。
#include“math.h”
doublepi(longn)
{doubles=0.0;
longi;
=n;
i++)s=s+1.0/(i*i);
return(sqrt(6*s));
(14)以下函数用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n所指存储单元中存放数组中数据的个数.插入后数组中的数仍有序.请填空.
voidfun(int*w,intx,int*n)
{inti,p;
p=0;
w[*n]=x;
while(x>
w[p])p++;
for(i=*n;
i>
i--)w[i]=w[i-1];
w[p]=x;
++*n;
(15)fun1函数的调用语句为:
fun1(&
a,&
b,&
c);
它将三个整数按由大到小的顺序调整后依次放入a,b,c三个变量中,a中放最大数。
请填空.
voidfun2(int*x,int*y)
{intt;
t=*x;
*x=*y;
*y=t;
voidfun1(int*pa,int*pb,int*pc)
{if(*pc>
*pb)fun2(pc,pb);
if(*pa<
*pc)fun2(pa,pc);
*pb)fun2(pa,pb);
16.任意输入三条边(a,b,c)后,若能构成三角形且为等腰、等边和直角,则分别输出DY、DB和ZJ,若不能构成三角形则输出NO。
{floata,b,c,a2,b2,c2;
scanf("
%f%f%f"
&
%5.1f,%5.1f,%5.1f"
a,b,c);
if(a+b>
c&
b+c>
a&
a+c>
b)
{if(a==b||a==c||b==c)printf("
DY"
if(a==b&
b==c)printf("
DB"
a2=a*a;
b2=b*b;
c2=c*c;
if(a2+b2==c2||a2+c2==b2||b2+c2==a2)printf("
ZJ"
elseprintf("
NO\n"
17.输出下列图形。
123456789
23456789
3456789
456789
56789
6789
789
89
9
{inti,j;
i<
=9;
i++)
{for(j=i;
=9;
j++)printf("
%2d"
j);
printf("
三、程序分析题
阅读下列程序,将输出结果分别写到各题右侧的空白处。
16.main()
{inta=3,b=9,c=2;
if(a)if(b)printf("
%5d%5d%5d\n"
程序运行结果:
ﺏﺏﺏﺏ3ﺏﺏﺏﺏ9ﺏﺏﺏﺏ2
17.voidchange(int*x,inty)
{intt;
*x=y;
y=t;
{inta=3,b=5;
change(&
a=%d,b=%d\n"
a,b);
a=5,b=5
18.main()
{intj;
for(j=4;
j>
=2;
j--)
switch(j)
{case0:
%4s"
ABC"
DEF"
GHI"
break;
case3:
JKL"
default:
MNO"
}程序运行结果:
ﺏMNOﺏJKLﺏMNOﺏGHI
19.main()
{staticintj,a[6]={1,2};
for(j=3;
6;
j++)
a[j]=a[j/2]+a[j%3]-a[j-2];
%5d"
a[j]);
ﺏﺏﺏﺏ1ﺏﺏﺏﺏ2ﺏﺏﺏﺏ0ﺏﺏﺏﺏ1ﺏﺏﺏﺏ2ﺏﺏﺏﺏ-1
20.inta=10;
intf(inta)
{intb=0;
staticintc=3;
++c;
++b;
returna+b+c;
{inti;
i++)print("
f(a));
ﺏﺏﺏ16ﺏﺏﺏ17
21.#defineN2
#defineMN+1
#defineNUM2*M+1
intfib(intn)
{
returnn<
3?
2:
fib(n-1)+fib(n-2);
main()
%5d%5d\n"
NUM,fib(5));
ﺏﺏﺏﺏ6ﺏﺏﺏ10
22.假设在DOS提示符下显示源程序如下(PROG.exe程序也在C
盘中):
C:
\>
typePROC.c
main(intargc,char*argv[])
{while(--argc>
0)
%s"
argv[argc]);
写出执行下列命令后的输出结果
PROG2008OLYMPICBEIJING<
回车>
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题集 答案 11