C语言书后习题Word格式文档下载.docx
- 文档编号:19143650
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:32
- 大小:43.17KB
C语言书后习题Word格式文档下载.docx
《C语言书后习题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言书后习题Word格式文档下载.docx(32页珍藏版)》请在冰豆网上搜索。
else总是和配对。
A、其之前最近的ifB、第一个if
C、缩进位置相同的ifD、其前面最近的且尚未配对的if
12)已知x、a、b均为整型变量,则下列选项中错误的if语句是。
A、if(a=b)x++;
B、if(a=<
b)x++;
C、if(a-b)x++;
D、if(x)x++;
13)下列关于switch语句和break语句的结论中,正确的是。
A、break语句只能用于switch语句中
B、在switch语句中可以根据需要,使用或不使用break语句
C、在switch语句中必须使用break语句
D、break语句不能用于switch语句
14)在C语言中,判断一个量是否为"
真"
时,通常这个量必须是才表示逻辑值“真”。
A、1B、非0整数C、大于0的整数D、非0值
15)以下四条语句中,有语法错误的是。
A、if(a>
b)m=a;
B、if(a=b)m=b;
C、if((a=b)>
=0)m=a;
D、if((a=b;
)>
16)程序main(){intx=5;
if(x++>
10)printf("
%d"
x);
elseprintf("
x--);
}的输出是。
A、4B、5C、6D、7
17)在下面的条件语句中(其中s1和s2表示是C语言的语句),只有一个在功能上与其它三条语句不等价,它是。
A、if(a)s1;
elses2;
B、if(a==0)s2;
elses1;
C、if(a!
=0)s1;
D、if(a==0)s1;
18)在循环语句的循环体中使用break和continue语句的作用分别是。
A、都是结束循环B、结束本次循环和结束循环
C、都是结束本次循环D、结束循环和结束本次循环
19)设i和s是整型变量,执行如下的语句,则输出的i和s的值为。
for(i=0,s=0;
i<
10;
i++,s++);
printf("
%d,%d\n"
i,s);
A、0,0B、10,0C、10,10D、9,9
20)语句while(!
x);
中的条件等价于。
A、x==0B、x!
=0C、~xD、x!
=1
21)在while(x)语句中的x与下面条件表达式等价的是。
A、x==0B、x==1C、x!
=1D、x!
=0
22)若intx=3;
且有下面的程序片段,则输出结果是。
do
{printf("
%d"
x-=2);
}while(!
(--x));
A、1B、30C、1-2D、死循环
23)若i,j均为整型变量,则关于循环for(i=0,j=-1;
j==1;
i++,j++)printf("
i,j);
正确的说法是。
A、循环体只执行一次B、循环体一次也不执行
C、判断循环结束的条件不合法D、是无限循环
24)以下不是死循环的语句为。
A、for(;
;
x+=i);
B、while
(1){x++;
}
C、for(i=10;
i--)D、for(;
(c=getchar())!
='
\n'
;
)
sum+=i;
%c"
c);
25)设有如下程序段,则以下叙述中正确的是。
intx=2002,y=2003;
printf("
%d\n"
(x,y));
A、输出语句中格式说明符的个数少于输出项的个数
B、输出语句中格式说明符必须再增加一个%d
C、输出值为2002
D、输出值为2003
2、填空题
1)设有如下说明:
inti=3,j=5,m;
执行语句m=(i++)-(--j);
后,m的值是,j的值是。
2)设有如下程序:
voidmain()
{inta=3,b=3,c;
c=a+++b;
%d%d\n"
a,c);
c=a---b;
b,c);
/*减号之间有无空格结果是不同的*/
该程序执行后的三行输出分别是,,。
3)设x=2.5;
a=7;
y=4.7;
则表达式x+a%3*(int)(x+y)%2/4的值为。
4)以下程序运行的结果是。
#include<
stdio.h>
{inti,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf("
%d,%d,%d,%d"
,i,j,m,n);
}
5)若intx=600;
则执行下列程序后,变量y的值是。
if(x>
400)
if(x<
500)
y=0.5*(x-400);
else
y=x-400;
y=0;
6)若inti=10;
则执行下列程序后,变量i的正确结果是。
switch(i)
{case9:
i+=1;
case10:
case11:
i+=2;
default:
7)以下程序的输出为。
voidmain()
{inta=9,b=7,c=11;
if(a>
b)
c)printf("
a);
elseprintf("
b);
end"
);
8)完善程序:
企业根据月销售额为销售人员发奖金。
销售额小于1万元,奖金为销售额的20%;
销售额大于或等于1万元而小于2万元,低于1万元的部分按20%,高于1万元的部分按15%发奖金;
销售额大于2万元而小于4万元的,低于2万元的部分仍按上述方法发奖金,高于2万元的部分按10%发奖金;
销售额大于4万元而低于6万元时,高于4万元的部分按6%发奖金;
销售额大于6万元而低于10万元时,高于6万元的部分按3%发奖金;
当销售额大于10万元时,高于10万元的部分按2%发奖金。
{floatsales;
doubleprice;
intn;
请输入月销售额:
scanf("
%f"
&
sales);
if(sales>
=100000)
n=10;
;
switch(n)
{case0:
price=sales*0.2;
break;
case1:
price=2000+(sales-10000)*0.15;
case2:
case3:
price=3500+(sales-20000)*0.1;
case4:
case5:
price=5500+(sales-40000)*0.06;
case6:
case7:
case8:
case9:
price=6700+(sales-60000)*0.03;
break;
price=7900+(sales-100000)*0.02;
奖金是:
%f\n"
price);
9)执行下列程序段后,x和i的值分别是10和。
intx,i;
for(i=1,x=1;
=50;
i++)
{if(x>
=10)break;
if(x%2==1){x+=5;
continue;
}x-=3;
10)完善程序:
程序用于求100~200之间的全部素数。
程序中n的作用是累计素数的个数,该程序要求控制每行输出10个数据。
#include"
math.h"
{intm,k,i,n=0;
for(m=101;
m<
=200;
m=m+2)
{if(n%10==0)printf("
k=sqrt(m);
for(i=2;
=k;
if(m%i==0);
if(i>
=k+1){printf("
m);
n=n+1;
11)完善程序:
已知任意一个正整数的立方都可以写成一串连续奇数的和。
例如:
13×
13=2197=157+159+…+177+179+181,下列程序可以验证上述定理。
{longintn,i,k,j,sum;
Entern="
%ld"
&
n);
k=n*n*n;
for(i=1;
k/2;
i+=2)
{for(j=i,sum=0;
sum<
k;
j+=2)
sum+=j;
if(sum==k)
%ld*%ld*%ld=%ld=from%ldto%ld\n"
n,n,n,sum,i,j);
12)完善程序:
下面程序的功能是打印100以内个位数为6且能被3整除的所有数。
#include"
stdio.h"
{inti,j;
for(i=0;
i<
10;
{j=i*10+6;
if()continue;
j);
13)阅读程序,写出程序的输出结果。
#include<
{intk=1;
charc='
A'
{switch(c++)
{case'
:
k++;
case'
B'
k--;
C'
k+=2;
D'
k=k%2;
continue;
E'
k=k*2;
k=k/3;
}while(c<
F'
k=%d\n"
k);
14)写出程序的输出结果。
{inti=1;
while(i<
=15)
if(++i%3!
=2)
i);
/*该语句是否在循环中?
*/
15)编程将一个键盘输入的正整数分解质因数。
输入90,打印出90=2*3*3*5。
16)猴子吃桃问题:
几个猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半多一个。
到第10天早上想再吃时,见只剩下一个桃子了。
编程求第一天共摘了多少桃子。
(提示:
采取逆向思维的方法,从后往前推断。
/*有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?
main()
{
intday=0,x1=1020,x2;
while(x1)
{x2=x1/2-2;
x1=x2;
day++;
day=%d\n"
day);
system("
pause"
第2部分数组
1、单项选择题
1)以下对数组的初始化方法中,正确的是。
A、inta[]='
'
B、inta[5]={0,1,2,3,4,5};
C、chara={'
};
D、inta[]={0,1,2,3,4,5};
2)若要判断两个字符串str1和str2是否相等,应选用的函数是。
A、strcat(str1,str2)B、strcpy(str1,str2)
C、strcmp(str1,str2)D、strstr(str1,str2)
3)以下对字符数组初始化的方法中,错误的是。
A、charstr[]={"
Hello"
B、charstr[]="
C、charstr[]={Hello};
D、charstr[]={'
H'
e'
l'
o'
4)若给出以下定义,则正确的叙述为。
charx[]="
abcdefg"
chary[]={'
a'
b'
c'
d'
f'
g'
A、数组x和数组y等价B、数组x和数组y的长度相同
C、数组x的长度大于数组y的长度D、数组x的长度小于数组y的长度
5)若二维数组a有m列,则在a[i][j]前的元素个数为。
A、j*m+i;
B、i*m+j;
C、i*m+j-1;
D、i*m+j+1;
6)若已定义:
intw[10];
则在下面表达式中不能表示w[2]的地址的是。
A、w+2B、&
w[2]C、&
w[0]+2D、w+=2
7)以下对二维数组a的正确说明是。
A、inta[3][]={3,4,2,6,9,2,7,5};
B、floata(3,4);
C、inta[][4]={3,4,2,6,9,2,7,5};
D、inta[10]={10*1};
8)不正确的字符串赋值或赋初值方式是。
A、charstr[]={'
s'
'
t'
r'
i'
n'
B、charstr[7]={'
C、charstr1[10];
str1="
string"
D、charstr1[]="
str2[]="
12345678"
9)若有以下说明和语句,则输出结果是。
p51
chars[12]="
abook!
"
%.4s"
s);
A、abook!
B、abo
C、abook!
□□□(□代表空格)D、因格式描述不正确,没有确定的输出
10)若有以下说明和语句,则输出的结果是。
charsp[]="
\x69\082\n"
strlen(sp));
A、3B、1C、2D、4
11)若两个静态数组A和数组B进行如下初始化,则。
staticcharA[]="
ABCDEF"
staticcharB[]={'
F’};
A、A和B完全相同B、A和B只是长度相等
C、A和B不相同,A是字符串,不是数组D、A数组长度比B数组长
12)下列程序的输出结果是。
{intk=3,a[2];
a[0]=k;
k=a[1]*10;
A、10B、30C、33D、不定值
13)要定义一个连续10个字节的存储空间,以下定义正确的是。
A、charss[10];
B、intss[10];
C、floatss[10];
D、doubless[10];
14)有一数组intnum[][4]={11,12,13,14,15,16,17,9,8,7,6,5},执行语句scanf("
&
num[2][3]);
时键盘输入值为0,则数组中的值应为。
A、11,12,13,14,0,0,0,0,0,0,0,0B、11,12,13,14,15,16,17,9,8,7,6,0
C、11,12,13,14,15,16,17,0,8,7,6,5D、11,12,13,14,15,16,17,9,8,7,6,5
15)有一数组如下定义
inta[6]={1,2,3,4,5};
执行for(i=0;
6;
printf("
a[i]);
输出的结果是。
A、123456B、12345随机值C、123450D、123455
16)执行以下程序,若输入数据为:
abcd1234efgh,则程序的输出结果是。
{charstr[13];
%s"
str);
%s\n"
A、abcdB、abcd1234C、efghD、abcd1234efgh
17)若有声明语句“intM[10],N[3][3];
”,则以下对数组元素赋值的操作中,未出现越界访问的是。
A、N[0][3]=0B、M[10]=0C、N[3][0]=0D、M[-1]=0
18)已定义一个数组str存放字符串,要从键盘上接收一串字符到str中,正确的方法是。
A、gets(str);
B、gets(&
str);
C、scanf("
D、scanf("
19)有一数组charstr[60],要将windows存放到此数组的正确语句是。
A、get(str);
B、scanf("
str);
D、puts(str);
20)C语言中,存储字符串"
ABC"
占用的字节数(即函数sizeof(a)的值)和字符串长度(即函数strlen("
)的值)分别是。
A、3、4B、4、3C、3、3D、4、4
21)设有说明:
“charstr[100];
”,并假设已输入一个字符串至str数组中,则输出该字符串的printf函数调用语句的格式为。
A、printf("
B、printf("
%c\n"
C、printf("
D、printf("
22)下列描述正确的是。
A、数组名就是本数组在存储空间中的起始地址
B、数组名就是一个符号,在程序中没有实际的意义
C、数组名就是存放数组中的第一个元素的存储单元
D、在程序中数组不能单独使用,必须带[]使用
23)命题“当两个字符串s1和s2相等时为真,否则为假”的C语言表达式为。
A、s1==s2B、s1=s2C、!
strcmp(s1,s2)D、strcmp(s1,s2)
24)有一数组inta[8]={1,2,3,4,5,6,7,8},在执行scanf("
a[a[5]%3+1]);
时键盘输入值为0,则数组中的值为。
A、12045678B、12305678
C、12340678D、10345678
25)若有以下说明和语句,则输出结果是。
charstr[]="
c:
\\abc.dat\"
"
A、符串中有非法字符B、\"
C、"
\abc.dat"
D、"
\\abc.dat
26)有以下语句:
intb;
charc[10];
则正确的输入语句是。
A、scanf("
%d%s"
b,&
c);
b,c);
C、scanf("
b,&
27)以下程序运行后的输出结果是。
{intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<
7)
if(p[i]%2)j+=p[i];
A、42B、45C、56D、60
28)以下程序运行后的输出结果是。
{
chara[7]="
a0\0a0\0"
inti,j;
i=sizeof(a);
/*sizeof()是求a数组存储空间的库函数*/
j=strlen(a);
A、22B、76C、72D、62
29)以下能正确定义一维数组的选项是。
A、inta[5]={0,1,2,3,4,5}B、chara[]={0,1,2,3,4,5};
D、inta[5]="
0123"
30)以下叙述中错误的是。
A、对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B、数组名代表的是数组所占存储区的首地址,其值不可改变
C、当程序执行中数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D、可以通过赋初值的方式确定数组元素的个数
31)以下能正确定义一维数组的选项是。
A、intnum[];
B、#defineN100
intnum[N];
C、intnum[0…100];
D、intN=100;
32)若有定义语句"
staticcharstr[4][12]={"
thank"
"
you"
very"
much!
则str数组中存储'
的数组元素有个。
A、4B、1C、31D、27
33)为了判断两个字符串s1和s2是否相等,应当使用。
A、if(s1==s2)B、if(s1=s2)
C、if(strcpy(s1,s2))D、if(strcmp(s1,s2)==0)
1)执行以下程序段后,b[0]、b[1]、b[2]的值为。
intb[3]={0,1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 书后 习题