程序设计基础一习题及其解答Word格式文档下载.docx
《程序设计基础一习题及其解答Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《程序设计基础一习题及其解答Word格式文档下载.docx(61页珍藏版)》请在冰豆网上搜索。
a,*p2=&
b;
(a)*p2=b;
(b)p1=a;
(c)p2=p1;
(d)c=*p1*(*p2);
16.有以下变量说明,下面正确的语句是(b)。
inta=10,b;
int&
pa=a,&
pb=b;
(a)&
pb=a;
(b)pb=pa;
(c)pb=&
pa;
(d)*pb=*pa;
17.执行下面语句序列后,a和b的值分别为(b)。
inta=5,b=3,t;
int&
ra=a;
rb=b;
t=ra;
ra=rb;
rb=t;
(a)3和3(b)3和5(c)5和3(d)5和5
18.在下列运算符中,(d)优先级最高。
(a)<
=(b)*=(c)+(d)*
19.在下列运算符中,(d)优先级最低。
(a)!
(b)&
&
(c)!
=(d)?
:
20.设inti=1,j=2;
则表达式i+++j的值为(c)。
(a)1(b)2(c)3(d)4
21.设inti=1,j=2;
则表达式++i+j的值为(d)。
22.在下列表达式选项中,(c)是正确。
(a)++(a++)(b)a++b(c)a+++b(d)a++++b
23.已知inti=0,j=1,k=2;
则逻辑表达式++i||--j&
++k的值为(b)。
(a)0(b)1(c)2(d)3
24.执行下列语句后,x的值是(d),y的值是(c)。
intx,y;
x=y=1;
++x||++y;
(a)不确定(b)0(c)1(d)2
25.设x为整型变量,不能正确表达数学关系1<x<5的C++逻辑表达式是(a)。
(a)1<
x<
5(b)x==2||x==3||x==4
(c)1<
x&
x<
5(d)!
(x<
=1)&
!
(x>
=5)
26.已知intx=5;
执行下列语句后,x的值为(c)。
1找优先级2结合性
x+=x-=x*x;
(a)25(b)40(c)–40(d)20
27.设inta=1,b=2,c=3,d=4;
则以下条件表达式的值为(a)。
a<
b?
a:
c<
d?
c:
d
28.以下逗号表达式的值为(d)。
逗号运算符的优先级最小
(x=4*5,x*5),x+25
(a)25(b)20(c)100(d)45
2阅读下列程序,写出执行结果
1.
#include<
iostream>
usingnamespacestd;
intmain()
{inta=1,b=2;
boolx,y;
cout<
<
(a++)+(++b)<
endl;
a%b<
x=!
a>
y=a--&
b;
y<
}
【解答】
4
2
1
2.
{intx,y,z,f;
x=y=z=1;
f=--x||y--&
z++;
"
x="
<
y="
z="
z<
f="
f<
x=0
y=0
z=2
f=1
3.
#include<
iomanip>
{inta=123;
ra=a;
int*pa=&
a;
cout<
setw(5)<
dec<
a<
oct<
ra<
hex<
*pa<
endl;
1231737b
3编程题
1.输入一个三位整数,将它反向输出。
{intx,i,j,k;
pleaseinputx:
"
;
cin>
>
x;
i=x/100;
j=x/10%10;
k=x%10;
cout<
k<
j<
i<
2.输入平面上某点横坐标x和纵坐标y,若该点在由图3.1表示的方块区域内,则输出1;
否则,输出0。
图1.11正方形
{doublex,y,b;
pleaseinputx,y:
x>
y;
b=(-2<
=x)&
(x<
=2)&
(-2<
=y)&
(y<
=2);
b<
}
3.输入三个整数,求出其中最小数(要求使用条件表达式)。
{inta,b,c,temp,min;
pleaseinputa,b,c:
a>
b>
c;
temp=(a<
b)?
a:
min=(temp<
c)?
temp:
c;
min="
min<
选择、循环结构
1.已知inti=0,x=1,y=0;
在下列选项使i的值变成1的语句是(c)。
(a)if(x&
y)i++;
(b)if(x==y)i++;
(c)if(x||y)i++;
(d)if(!
x)i++;
2.设有函数关系为y=
,下面选项中能正确表示上述关系为(c)。
(a)y=1;
(b)y=-1;
if(x>
=0)if(x!
=0)
if(x==0)y=0;
if(x>
0)y=1;
elsey=-1;
elsey=0;
(c)if(x<
=0)(d)y=-1;
if(x<
0)y=-1;
elsey=0;
elsey=1;
3.假设i=2,执行下列语句后i的值为(b)。
switch(i)
{case1:
i++;
case2:
i--;
case3:
++i;
break;
case4:
--i;
default:
4.已知inti=0,x=0;
下面while语句执行时循环次数为(d)。
while(!
i<
3){x++;
i++;
(a)4(b)3(c)2(d)1
5.已知inti=3;
下面do_while语句执行时循环次数为(b)。
do{i--;
i<
}while(i!
=1);
(a)1(b)2(c)3(d)无限
6.下面for语句执行时循环次数为(b)。
inti;
for(i=0,j=5;
i=j;
)
{cout<
i++;
j--;
(a)0(b)5(c)10(d)无限
7.以下死循环的程序段是(b)。
(a)intx;
for(intx=0;
3;
){x++;
};
(b)intk=0;
do{++k;
}while(k>
=0);
(c)inta=5;
while(a){a--;
(d)inti=3;
for(;
i;
i--);
2.2阅读下列程序,写出执行结果
{inta,b,c,d,x;
a=c=0;
b=1;
d=20;
if(a)d=d-10;
elseif(!
b)
if(!
c)
x=15;
elsex=25;
d<
20
{inta=0,b=1;
switch(a)
{case0:
switch(b)
{case0:
a="
b="
b<
break;
case1:
case1:
a++;
b++;
a=0b=1
a=1b=2
{inti=1;
while(i<
=10)
if(++i%3!
=1)
continue;
elsecout<
4
7
10
4.
usingnamespacestd;
intmain()
{inti=0,j=5;
do
{i++;
if(i>
3)break;
}while(j>
0);
i="
'
\t'
j="
i=4j=1
5.
{inti,j;
for(i=1,j=5;
j;
i++)
{j--;
'
j<
33
6.
{inti,s=0;
for(i=0;
5;
switch(i)
s+=i;
case2:
default:
s+=2;
s="
s<
s=7
7.
{inti,j,x=0;
=3;
{x++;
for(j=0;
j<
j++)
{if(j%2)continue;
x++;
x="
x=16
3编程题
1.输入一个字母,如果它是一个大写字母,则把它变成小写字母;
如果它是一个小写字母,则把它变成大写字母;
其它字符不变。
iostream.h>
voidmain()
{charch;
cin>
ch;
if(ch>
=’A’&
ch<
=’Z’)ch=ch+32;
elseif(ch>
=’a’&
ch<
=’z’)ch=ch-32;
return0;
2.下面的程序实现输出x,y,z三个数中的最大值。
{intx=5,y=8,z=9,u,v;
if(x>
y)u=x;
elseu=y;
if(u>
z)v=u;
elsev=z;
v;
return0;
3.输入三角形的三条边,判别它们能否形成三角形,若能,则判断是等边、等腰、还是一般三角形。
{doublea,b,c;
a,b,c="
;
c;
if(a+b>
c&
b+c>
a&
c+a>
b)
{if(a==b&
b==c)
等边三角形!
elseif(a==b||a==c||b==c)
等腰三角形!
一般三角形!
else
不能形成三角形!
endl;
4.下面程序是输出100以内能被7整除且个位数是4的所有整数。
for(i=0;
=9;
i++)
{j=i*10+4;
if(j%7!
=0)
else
}
return0;
5.输入一个整数,输出该整数的所有素数因子。
例如,输入120,输出为2、2、2、3和5。
{intm,i=2;
pleaseinputm:
m;
=m)
if(m%i==0)
"
m=m/i;
elsei++;
6.使用迭代公式
编程序求某一正整数a的平方根。
cmath>
{constdoubleeps=1e-8;
doublea,x0,x;
pleaseinputa:
cin>
a;
x0=a/2;
x=(x0+a/x0)/2;
while(fabs(x-x0)>
eps)
{x0=x;
x=(x0+a/x0)/2;
7.已知两个正整数m和n,求其最大公约数。
{intm,n,r;
r=m%n;
while(r!
{m=n;
n=r;
r=m%n;
”最大公约数是”<
n<
8.在100到200中找出同时满足用3除余2,用5除余3和用7除余2的所有整数。
{inti;
for(i=100;
=200;
{if((i%3==2)&
(i%5==3)&
(i%7==2))
9.求100到999中的水仙花数。
所谓水仙花数是指一个三位数,它的每位数字的立方之和等于该数。
例如,因为153=1
+5
+3
,所以153为水仙花数。
{inti,a,b,c;
=999;
{a=i/100;
b=(i-a*100)/10;
c=i-a*100-b*10;
if(i==a*a*a+b*b*b+c*c*c)cout<
Usingnamespacestd;
{intn,a,b,c;
for(a=1;
a<
a++)
for(b=0;
b++)
for(c=0;
c<
c++)
{n=a*100+b*10+c;
if(a*a*a+b*b*b+c*c*c==n)
”“;
10.求1000之内的所有完数。
所谓完数是指一个数恰好等于它的所有因子之和。
例如,因为6=1+2+3,所以6为完数。
{inti,j,s;
for(i=1;
=1000;
{s=0;
for(j=1;
if(i%j==0)s=s+j;
if(i==s)cout<
11.编一程序显示由符号组成的三角形图案。
例如,程序运行后,
屏幕显示:
Howmanylines?
用户输入:
5
Whatcharacter?
*
则输出如下图案。
*
***
*****
*******
*********
{inti,j,k,n;
charch;
Howmanylines?
\n"
n;
Whatcharacter?
=n;
{for(k=1;
k<
=n-i;
k++)cout<
=2*i-1;
j++)cout<
ch;