程序设计基础练习题全部有答案版.docx
《程序设计基础练习题全部有答案版.docx》由会员分享,可在线阅读,更多相关《程序设计基础练习题全部有答案版.docx(58页珍藏版)》请在冰豆网上搜索。

程序设计基础练习题全部有答案版
一、单项选择题(每小题2分,共20分)第一章
D1.下列说法中错误的是()。
A、程序的执行总是从主函数开始
B、主函数可以调用任何非主函数的其它函数
C、任何非主函数可以调用其它任何非主函数
D、程序可以从任何非主函数开始执行
C2.若a=4,b=7,则输出4*7=28的语句是()。
A、printf(“a*b=%d\n”a+b);
B、printf(“a*b=%d\n”,a*b);
C、printf(“%d*%d=%d\n,a,b,a*b);
Dprintf(“%d*%d=%d\n,a+b);
第三章
C1.C语言中int型数据占2个字节,则long型数据占(C)
个字节。
A1
B、2
C、4
D8
D2.若C中int
型数据占
2个字节,则
double型数据占(D)个
字节。
A1
B、2
C、4
D8
B3.若a为整型变数,则以下语句(B)。
a=-2L;
printf(“%d\n”,a);
A、赋值不合法B、输出-2C、输出不确定值D输出
2
D4.若int型数据占2个字节,则下列语句的输出为(D)。
intk=-1;
printf(“%d,%u\n”,k,k);
A、-1,-1B、-1,32767C、-1,32768D、-1,65535B5.下列程序的输出是(B)。
#include
main()
{printf(“%d\n”,null);}
A、0B、变量无定义C、-1D1
C6.若x为float型变数,则以下语句:
x=223.82748;
printf("%6.2f\n",x);
运行结果为(C)
A223.8
B、
223.82
C、223.83
D、
223.827
D7.
设有语句inta=3;则执行语句
a+=a-=a*a
后,变量
的值是
B、0
C、9
D-12
第四章
A1.
执行语句:
a=5,b=8;printf(
%d\n”
c=a/b);
后输出的值为(A)
B、0.6
C、0.625
D、0.
B2.
F列语句
intk=8567;
printf(
“|%06d|\n
k);
A、输出格式描述符不合法
B、输出为||
C、输出为|8567|
输出为卜08567|
C3.
intk=8567;
printf(
“|%-06d|\n
k);
A、输出格式描述符不合法
B、输出为||
C、输出为|8567
输出为卜08567|
C4.
若ch为字符型,k为整,则执行下列语句
后的输出为(C
ch='a';
k=12;
printf(
“%x,%o,”
ch,ch,k);
printf(
k=%%d\n
k)
因变量类型与格式描述符的类型不匹配,输出无定值;
B、
输出项与格式描述符个数不符,输出为
0或不定值;
C、
61,141,k=%d;
D、
61,141,k=%12
D5.
若k,g为int型变数,则下列语句的输出
(D)
k=017;
g=111;
printf(
“%d,%x\n”,++k,g++);
A15,6f
B16,70
C、15,71
D16,6f
C、
A7.
I#include
main()
{inta=4,b=7;
printf(
“%d\n”,(a=a+1,b+a,b+1));
II#include
main()
{inta=1,b=2;
printf(
输出5,
输出5,
II
II
#include
main()
{intm=7,n=4;
“%d\n”,a=a+1,a+b,b+1));
输出2
输出3
floata=38.4,b=6.4,x;
x=m/2+n*a/b+1/2;
printf(
%f\n
x);
27.
第五章
C、
28.
D1.
true
C2.
B、I输出
D、I输出
F列程序的输出为(A
B、27.
D28.
8,II
8,II
在C语言中,能代表逻辑值“真”
B、大于0的数C、非0整数
若给定表达式
则其中表达式M(C)
D3.
输出2
输出3
的是(D)
D非0的数
(M?
(a++):
(a--),
入和(M==0)等价
。
、和(M!
=0)
等价
在C语言的
B、
if
为(D)
A、关系表达式
B、
D4.
C、算术表达式
D、
#include
和(m==1)等价
和(M!
=1)等价
语句中,用作判断的表达式
逻辑表达式
任意表达式
以下程序的输出是(D)
main()
{inti,j,k,a=3,b=2;
j=a++;k=b;
B5.
执行下面的程序:
main(){intx;
seanf("%d",&x);
if(x++>5)printf("%d\n",x);
elseprintf("%d\n",-x);
若输入5,则输出为(B)
6.
有程序段:
inta,b;
a=9;b=10;
a=2,b=5,a>b?
a++:
b++,a+b
的值为(B)
C、9
#inelude
voidmain(){inta,b,e;
a=10;b=50;e=30;
if(a>b)a=b,
b=e;e=a;
printf(
“a=%d,b=%d,c=%d\rT,a,b,e);
Aa=10,b=50,e=10
B、a=10,b=30,e=10
C、a=50,b=30,c=10Da=50,b=30,c=50
C9.下面程序运行后输出的结果是()
main()
{intn;
for(n=0;n<3;n++)
switch(n)
{case1:
printf(“%d,n);
case2:
printf(“%d,n);default:
printf(“%d,n)
}
}
A、012B、120C、D
10.下面程序的输出是(B)o
#include
voidmain()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;
}
printf(“a=%d,b=%d\rT,a,b);
}
A、a=1,b=0B、a=2,b=1C、a=1,b=1D、a=2,b=2
第六章
1.下面循环的执行次数是(4)次。
n=0;
while(++n<5)
{printf("%3d\n",n);}
结构是(A)。
A、顺序结构、选择结构、循环结构;B、if、switch、break;
C、for、while、do-while;Dif、goto、continue
3.在C语言中,为了结束while语句构成的循环,while后一对圆括号中表达式的值应该为(A)。
A0B、1C、trueD非0
4.在C语言中,为了结束do-while语句构成的
5.
循环,while后一对圆括号中表达式的值应该为(A)
while(k=0)k=k-1;
A、10次
6.
k=2;
while(k==0)printf(“%cT,k),k--;
printf(“\n”);
A、无限次B0次C、1次D2次
7.下面程序执行后,k的值是(C)
#include
main()
{
intk=2;
while(k==0)
printf("%d",k),k--;
printf("k=%d\n",k);
printf("\n");
}
A0B、1C、2D、-2
8.下面程序的输出为(B)
#includemain()
{inti,j,x=0;
for(i=0;i<2;i++)
"do.”of•:
•n“3y.:
:
go-.b.920*-p,
x++;
printf("x=%d\n",x);
数组中的所有元素赋值,则在下划线处应填入的是(
#defineN10voidarrin(intx[N]){intk=0;
while(kvN)
(D)
C、intc[2][]={{1,2},{3,4}};6
d[3][2]={{1,2},{34}};
A
B、
char*str;str=”string”;
charstr[7]={‘s','t','r','i'
n,g};
C、
charstr[10];str[10]=
string;
D
charstr1[]=”string”
str2[]=””;
strcpy(str2,str1);
若有以下定义和语句,
则输出结果是(C
chars[12]=
”abook!
”;
printf(“%(”
strlen(s));
A9B、
8C、7D
6
不正确的字符串赋值或赋初值方式是
O
)
6.若有以下定义和语句,则输出结果是(B)o
chars[]=”abook!
”;
printf(“%d,sizeof(s));
A9B、8C、7D6
第八章
C1.C语言可执行程序的开始执行点是()。
A、第一条可执行语句B、第一个函数
C、main函数D、包含文件中的第一个函数
C2.C语言中规定,若对函数类型未加显示说明,则函数的隐含类型为()。
AvoidB、doubleC、intD、char
C3.C语言程序中,当调用函数时()。
(不确定)
A、实参和形参各占一个独立的存储单元
B、实参和形参可以共享存储单元
C、可以由用户指定是否共享存储单元
D、由计算机系统自动确定是否共享存储单元
C4.下面程序的输出结果为()。
#include
voidmain()
{intf();
inti=2,k;
k=f(i,++i);
printf("%d\n",k);}
intf(inta,intb)
{intc;
c=a;
if(a>b)c=1;
elseif(a==b)c=0;
elsec=-1;
return(c);
}
A2B、1C、-1D0
A5.下面程序的输出结果是()。
#include
main()
{intfunc(inta,intb);
o
intk=4,m=1,p;
p=func(k,m);
printf("%d,",p);
p=func(k,m);
printf("%d\n",p);
}
intfunc(inta,intb)
{staticintm,n=2;
n+=m+1;
m=n+a+b;
return(m);
}
A8,17B、8,16C、8,20D、8,8
第九章
C1.以下叙述正确的是()。
A、在程序的一行上可以出现多个预处理命令行
B、预处理行是C的合法语句
C、被包含的檔不一定以.h作为后缀
D、在以下定义中CR是称为“宏名”的标识符
#definefc4566CR
B2.在“檔包含”预处理语句的使用形式中,当#include
后面的文件名用“”(双引号)括起时,寻找被包含檔的方式是()。
A、直接按系统设定的标准方式搜索目录
B、先在源程序所在目录搜索,再按系统设定的标准方式搜索
C、仅仅搜索源程序所在目录
D、仅仅搜索当前目录
C3.以下叙述中不正确的是()。
A、预处理命令行都必需以#开始
B、在程序中凡是以#号开始的语句行都是预处理命令行
C、程序在执行过程中对预处理命令行进行处理
D、在下是正确的宏定义
#defineIBM_PC
#definePT3.5#defineS(x)PT*x*x
main()
inta=1,b=2;
5.
printf(
14.0
%4.1f\n
B、31.5
S(a+b));3.5*a+b*a+b
C、
7.5
D、10.5
F面程序运行后输出的结果
#include"stdio.h"
#defineMIN(x,y)(x)<(y)?
(x):
(y)
main()
inta,b,c;
a=10,b=20;
c=8*MIN(a,b);
printf("%d\n",c);
#include"stdio.h"#defineMIN(x,y)(x)<(y)?
(x):
(y)main()inta,b,c;
a=10,b=20;
c=8*MIN(a,b)-5;
printf("%d\n",c);
7.下面程序运行后输出的结果是(
#include"stdio.h"
#defineMIN(x,y)(x)<(y)?
(x):
(y)
main()
ndpl.n
inta,b,c;
a=10,b=20;
c=MIN(a+b,a-b)*8;
printf("%d\n",c);
10
B、20
C、-80
D-10
第十章
1.若有以下定义和语句,且
02.
A*(a+i)
B、a[p-a]
C、p+i
D、p[i]
若有以下定义和语句,且
0wiw10,则对数组元素的正确引
用是(D)
char*alpha[6]=
char**p;
main()
{intk;
p=alpha;
4.
#includemain(){inta[]={1,2,3,4,5,6},*p;
p=a;*(p+3)+=2;
intc[4][5],(*cp)[5];cp=c;
*(*cp+2)
第十一章
1.共享体变数中起作用的成员是(C)。
A、第一次存放的成员;B、中间存放的成员;
C、最后一次存放的成员;D、所有的成员。
2.若有以下程序段,则值为101的表达式是(C)。
structwc
{inta;
int*b;
}*p;
intx0[]={11,12},x1[]={31,32};
structwcx[2]={100,x0,300,x1};
p=x;
那么
D3.如果在C程序中有main(floatargc,char*argv[]),
类型定义错误的参数是(
D、argc
.若程序中由下面的说明和定义:
structstt{intx;charb;}structstta1,a2;
则会发生的情况是(
但连接出错
#includevoidmain()
{unsignedinta=32,b=66;
第十二章
1.下面程序的输出是(D)。
#include
main()
{unsignedinta=3,b=10;
printf("%d\n",a<<2|b>>1);
}
A1B、5C、12D13
3.若int型是2个字节,下面程序运行后,输入331,则输出结
果为(C)。
#include
voidmain()
{
unsigneda,b,c,d;
printf("enter%%oa:
");
scanf("%o",&a);
b=a>>4;
c=~(~0<<4);
d=b&c;
printf("%o,%d\n",d,d);
}
A331,217B13,15C、15,13D217,331
4.若int型是2个字节,下面程序段运行后,若输入:
a=,n=3,则
输出的值为(A)。
main()
{
unsigneda,b,c,d;
intn;
scanf("a=%o,n=%d",&a,&n);
b=a<<(16-n);
c=a>>n;
d=c|b;
printf("%o\n",d);
}
A75765B、35765C、13765D30000
D5.
表达式11&10的结果用二进制表示为()。
A11B、3C、1D10
B6.表达式9|5
的结果十进制表示为(
)。
A、12
B、13
C、14
D15
存取
二、程序填空题
第三章
1.要使下面程序的输出形式为:
12+10=22,-24+10=-14,请填空。
#inelude
voidmain()
{
inta,b,c,d;
unsignedu;
a=12;b=-24;u=10;
c=a+u;d=b+u;
printf(”【1]+【2]=%d,【3]+【4]=%d\n",a,u,c,【5]);
}
选择答案:
【1]%d【2]%d【3]%d【4]%d【5]b,u,d
第四章
2.下面程序不借助任务中间变量把a,b的值进
行交换。
请填空。
#includemain()
{inta,b;
printf(“Inputa,b:
”);
scanf(“%d,%d,
【1】&a,&b);
a+=【2]b;b=a-
【3]b;a-=【4】b
printf(“a=%d,b=%d\n”,【5】a,b);
}
第五章
3.下面程序输入一个学生的生日(年:
y0,月:
mQ日:
d0),并输入当前日期(年:
y1,月:
ml,日:
di)。
求出该学生的实足年龄。
请填空。
#include
main()
{int896$0小0成$1口191;
printf(”输入生日日期(年、月、日)");
scanf("%d,%d,%d",【1】&yO,&m0,&d0);
printf("输入当前日期(年、月、日)");
scanf("%d,%d,%d",【2】&y1,&m1,&d1);
age=y1-yO;
if(m0【3】>m1)age--;
if((mQ【4】==mi)&&(【5]dQ>di))age--;
printf("age=%3d\n",age);
}
4.下面程序输出乘法九九表。
#inelude
voidmain()
{inti,j;
for(i=i;i<【i]1Q;i++)
printf("%4d",i);
printf("\n\n");
for(i=i;i<【2】10;i++)
for(j=i;jprintf((j==【3】9)?
"%4d【4】\n":
"%4d",【5]
}
第六章
5.下面程序从读入的整数据中,统计大于0的
整数个数i和小于0的整数个数j,当输入0时,程序运行结束。
请填空。
#include
{【1]intn,i,j;
printf(“Inputintnumbers,with0toend:
”);
i=j=0;
scanf(“%d,&n);
while(【2]n!
=0)
{if(n>0)i=【3]i+1;
if(n<0)j=【4]j+1;
5]scanf(“%(”,&n);
}printf(“i=%d,j=%d\n”,i,j);
}
第七章
1.设数组a和数组b中分别有an和bn个有序
数,程序把数组a和数组b按由小到大的顺序合并到数组c中。
请填空。
#include
main()
{inta[10]={1,2,5,8,9,10},an=5;
intb[10]={1,3,4,8,12,18},bn=5;
inti,j,k,c[20],max=9999;
/*在a,b数组的后面都放上一个ma(大于数组中所有的数),
作为结束标志*/
a[an+1]=b[bn+1]=【1]max;
i=j=k=0;
/*若a[i],b[j]中有一个不等于max则尚有数未合并到c数
组中,循环继续进行*/
while((a[i]!
=max)||(b[j]!
=max))
if(a[i]
/*如果a[i]
else{c[k]=【4]b[j];k++;【5]j++;}/*如果
b[j]for(i=0;irintf("%4d",c[i]);
printf("\n");
}
2.从键盘输入一个3行4列矩阵的数据,然后求其最大数。
请填空:
main()
{int【1】i,j,max,a[3][4];
for(i=0;i<3;i++)for(j=0;j<4;j++)
scanf("%d",【2】&a[i][i]);
【3】max=a[O][O];for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(maxprintf("max=%d\n",【5]max);
}
第八章
3.下面程序求出数组a中所有素数的和。
请填空。
#include
#include【1】
main()
{intisprime(intx);
inti,a[10],sum=0;
printf("Inputarraya[10]