}
A.2B.11C.26D.24
4.在VisualC++中,打开一个项目只需要打开对应的项目工作区文件即可,项目工作区文件的扩展名为()。
C
A.objB.dspC.dswD.cpp
5.下面关于C语言与C++关系的说法中,()是正确的。
D
A.C语言是C++的子集B.C++对C语言进行了改进
C.C++和C语言都是面向对象的D.C++继承了C语言的众多优点
6.设置一个断点的方法是将光标移到需要设置断点的行上,然后按()键。
A
A.F9B.F10C.F11D.F12
7.下面关于编译预处理命令的说法中,正确的是()。
C
A.一条文件包含命令能包含多个文件
B.文件包含命令不可以嵌套使用
C.编译预处理命令是在编译之前被处理的命令
D.编译预处理命令中的“#”可以省略
8.使用()可以设置数据输出的宽度。
B
A.setbase(intn)B.setw(intn)C.setfill(intn)D.setprecision(intn)
二、填空题
1.C/C++程序是由一个或多个函数组成的,但必须要有一个()函数,程序从这个函数开始运行的。
main()
2.C/C++字符集包括大、小写英文字母、()、()和包括运算符在内的特殊字符,程序中出现字符集以外的字符就是一个语法错误。
数字0-9、下划线
3.在VisualC++中编写程序时,除了注释中可以出现汉字,还能在()中使用汉字。
字符串
4.文件包含命令是以()开始的预处理命令,而宏定义命令是以()开始的预处理命令。
#include#define
5.在cout命令中,使用()格式控制符可以把一个数据以十六进制的形式输出。
hex
6.在C/C++中,头文件的扩展名一般为()。
.h
7.程序的错误一般分两种:
()和()。
前者是编译器可以发现的,而后者编译器则无法发现。
语法错误和逻辑错误
8.在VisualC++中调试程序时,可以使用快捷菜单中的()命令来插入断点和清除断点。
Insert/RemoveBreakpoint
9.C++源程序的扩展名为()。
.cpp
10.在VisualC++中,浏览当前项目中的所有源程序文件应在工作区的()选项卡。
Fileview
三、简答题
1.C++与C语言的主要区别是什么?
C++是C语言的超集。
C++中的类和对象部分,C语言没有,C++是面向对象的程序设计。
见教材P3。
2.C/C++程序由哪些部分组成?
C/C++程序是由一个或多个函数组成,其中必须要有一个main()函数。
在一个函数内,语句的执行是从上到下的。
3.判断下列符号中哪些不能作为C/C++的标识符:
a?
3a,a-b,f(x),AD,a.txt,D$,∏,double
能作为C/C++的标识符:
abc,b,s_2,Int
4.C/C++语言的书写格式有哪些特点?
C/C++程序书写形式自由。
一行可以写多条语句,一条语句也可以分别写在不同行上。
区别大小写字母。
5.何时在#include中使用尖括号,何时使用双引号?
用尖括号时,预处理程序在系统指定的文件夹中寻找文件;用双引号时,预处理程序首先在当前文件所在的文件目录中寻找文件,若找不到再到系统指定的文件夹中查找。
6.如果程序顺利地通过编译、连接,但是程序运行时结果有错误,最好的调试手段是什么?
最好的调试手段是设置断点,并让程序运行到该断点,然后在Debug窗口观察各变量的值,从中发现错误。
第二章
一、选择题
1.下列选项中可以作为C/C++的合法整型常量的是()。
B
A.1011BB.047C.x23D.20H
2.下列不合法的常量是()。
C
A.2.7B.1.0E+3C.3.5E-3.0D.3.4e-5
3.下列常量中不是字符型常量的是()。
D
A.'\x44'B.'\t'C.'\\'D."m"
4.下列选项中合法的变量名为()。
C
A.#defineB.floatC.a12_3D.sqrt(x)
5.下列不正确的变量定义方法是()。
D
A.inta,&b=a;B.floata,*b=&a;C.inta(4),b(0);D.inta=b=5;
6.下列运算符优先级按由高到低的顺序排列正确的是()。
C
A.*=、&&、!
=、%B.*=、%、&&、!
=C.%、!
=、&&、*=D.&&、!
=、%、=
7.已知x、y为整型,z为实型,ch为字符型,下列表达式中合法的是()。
C
A.z=(y+x)++B.x+y=zC.y=ch+xD.y=z%x
8.若有定义"intx;",则经过表达式"x=(float)7/3"运算后,x的值为()。
C
A.0B.2.3C.2D.1
9.若有定义"intx=13,y=5;",则表达式"x++,y+=2,x/y"的值为()。
B
10.设整型变量m、n、a、b、c、d均为数值1,表达式(m=a>b)&&(n=c>d)运算后,m、n的值分别是()。
B
A.0,0B.0,1C.1,0D.1,1
二、把下列数学表达式写成C/C++表达式。
1.x+y≠a+b :
(x+y)!
=(a+b).
2.(ln10+xy)3 :
pow(log(10)+x*y),3)
3.
:
sin(w*u)/(cos(45*180/3.14)+3*pow(x,y))
4.
:
exp(3)+sqrt(2*x+3*y)
5.
:
fabs(x-y)+(x+y)/(3*x)
6.
:
1/(1/r1+1/r2+1/r3)
三、根据下列条件写一个C/C++表达式。
1.a和b中有一个大于d:
a>d||b>d
2.将x、y中较大的值送给z:
z=x>y?
x:
y
3.将直角坐标系中点(x,y)表示在第3象限内:
x<0&&y<0
4.3个数据x、y、z能组成三角形:
x+y>z||y+z>z||x+z>y
5.将含有3位小数的实型变量x的值,四舍五入到百分位:
(int)(x*100+0.5)/100.
6.d是不大于100的偶数:
d>0&&d<=100&&d%2==0
7.x、y中至少有一个是5的倍数:
x%5==0||y%5==0
8.对n(>0)个人进行分班,每班k(>0)个人,最后不足k人也编一个班,问要编几个班:
n%k==0?
n/k:
n/k+1
四、编程题:
1编程序求半径为r、高为h的圆柱体的体积。
#include"iostream.h"
voidmain()
{floatr,h,v;
cin>>r>>h;
v=3.1416*r*r*h;
cout<}
2.任意输入3个数据,输出它们的平均值和最小的一个数。
#include"iostream.h"
voidmain()
{
floata,b,c,ave,min;
cin>>a>>b>>c;
ave=(a+b+c)/3;
min=(a
a:
b;
min=(cc:
min;
cout<<"ave="<}
3.将字符串“12”转换为整数12并输出。
#include"iostream.h"
voidmain()
{
charc1='1',c2='2';
intx;
x=10*(c1-'0')+c2-'0';
cout<}
4.编写程序,输入一个三位整数,反向输出该三位整数。
#include"iostream.h"
voidmain()
{intx;
intc1,c2,c3;
cin>>x;
c1=x/100;
c2=x/10%10;
c3=x%10;
x=100*c3+10*c2+c1;
cout<}
5.输入一个年份,判断是否为闰年。
解1:
#include"iostream.h"
voidmain()
{intyear,x;
cin>>year;
x=year%400==0||year%4==0&&year%100!
=0;
x!
=0?
cout<":
cout<";
}
解2:
#include"iostream.h"
voidmain()
{intyear;
charx;
cin>>year;
x=(year%400==0||year%4==0&&year%100!
=0)?
'y':
'n';
cout<}
6.编写程序,求函数
的值,要求输入x,程序就输入y的值
#include"iostream.h"
#include"math.h"
voidmain()
{doublex,y;
cin>>x;
y=log(x*x+3)/log(10)+3.14/2*cos(40*3.14/180);
cout<}
第三章
一、选择题
1.为了避免嵌套的ifelse语句的二义性,C/C++语言规定else总是与()组成配对关系。
C
A.缩排位置相同的ifB.在其之前未配对的if
C.在其之前未配对的最近的ifD.同一行上的if
2.设有函数关系为
,下面()选项不能正确表示上述关系。
D
A.if(x<=0)B.y=1;
if(x<0)y=-1;if(x<=0)
elsey=0;if(x<0)y=-1;
elsey=1;elsey=0;
C.y=-1;D.y=-1;
if(x>=0)if(x!
=0)
if(x==0)y=0;if(x>0)y=1;
elsey=1;elsey=0;
3.若有变量定义“inta=7;”,则下列语句组对应的输出结果是()。
D(该答案后还应附“其他值”)
switch(a%5)
{case0:
cout<case1:
cout<<++a;
case2:
cout<case3:
cout<<--a;
default:
cout<<”其他值”;
}
A.其他值B.5C.7D.75其他值
4.以下程序段中循环体语句“k++”执行的次数为()。
C
for(k=0,m=4;m;m-=2)
for(n=1;n<4;n++)
k++;
A.16B.12C.6D.8
5.执行下面程序段后,变量k的值为()。
B
for(k=0,m=1;m<4;m++)
{
for(n=1;n<5;n++)
if(m*n%3==0)continue;
k++;
}
A.1B.3C.6D.12
6.下面叙述中正确的是()。
C
A.for循环只能用于循环次数已经确定的情况
B.for循环同do-while语句一样,先执行循环体再判断
C.不管哪种形式的循环语句,都可以从循环体内转到循环体外
D.for循环体内不可以出现while语句
7.下面语句中不是死循环的是().A
A.inti=100;B.inti,sum(0);
while
(1)for(i=1;;i++)sum++;
{
i=i%100+1;
if(i==20)break;
}
C.intk=0;D.ints=3379
do{while(s++%2+3%2)s++
++k;
}while(k>=0);
8.若输入字符串“ABC”,下面程序段的输出为()。
C
charc;
while(cin>>c,c!
=’\n’)
cou<A.222B.CDEC.676869D.333
9.以下程序段的输出结果是()。
B
A.45B.457810C.69D.678910
二、阅读程序,写出程序运行结果。
(1)试说明下列语句组的功能:
while
(1)
{
cin>>m>>n;
if(m>0&&n>0)break;
}
功能:
输入两个正整数给m和n。
(2)若有变量定于“intcount=0,m=1;”,试写出下列语句组对应的输出结果。
do
{
if(m%5)continue;
count++;
while(++m<=100);
}
结果:
20
(3)#include”iostream.h”
voidmain()
{
intm,n(4),k;
longintt,s=0;
for(m=1;m<=n;m++)
{
for(t=1,k=1;k<=m;k++)
t*=m;
s+=t ;
}
cout<<”s=”<
}
输出为:
s=288
(4)若输入:
“AB20dfz5”,则下列程序输出结果是什么?
#include”iostream.h”
voidmain()
{
charc;
while(cin>>c,c!
=’.’)
{
if(c>=’a’&&c<’z’)
c+=1;
if(c==’z’)c=’a’;
cout<}
}
输出为:
AB20ega5
(5)#include”iostream.h”
#include”iomanip.h”
voidmain()
{
inti,j;
for(i=4;i>=1;i--)
{
cout<for(j=1;j<=4-i;j++)
cout<<’*’<<’‘;
cout<}
}
输出:
*
**
***
三、程序填空题:
(1)下面的程序是检查输入的算术表达式中括号是否配对,并显示相应的结果。
本程序边输入,边统计,以输入‘?
’作为表达式输入结束,然后显示结果。
#include”iostream.h”
voidmain()
{
intcount(0);
charc;
cout<<”请输入表达式,以输入?
表示结束”<while(cin>>c,c!
=’?
’)
{
if(c==’(‘)
count++;
elseif()
count--;
}
if()
cout<<”左右括号配对”<elseif()
cout<<”左括号多于右括号”<else
cout<<”右括号多于左括号”<}
填空结果:
c==')'
count==0
count>0
count
(2)用辗转相减法求两个正整数m和n的最大公约数。
#include”iostream.h”
voidmain()
{
intm,n;;
while(m-n!
=0)
if(m>n);
else;
cout<<”gcd(m,n)=”<}
填空结果:
cin>>m>>n
m=m-n
n=n-m
(3)求100的阶乘的末尾包含多少个0?
程序通过找出1-100之间的所有整数中包含5这个因子的个数来求解。
如100=5*5*4含5的因子个数为2,在求阶乘过程中会在末尾产生2个0。
#include"iostream.h"
voidmain()
{
intm,n,k=0;
for(m=5;m<100;)
{;
while(n%5==0)
{
k++;
;
}
;
}
cout<<”100!
include”<}
填空结果:
n=m
n=n/5
m=m+5
四、编程题:
1.编一程序,实现下列分段函数的求值:
#include"iostream.h"
#include"math.h"
voidmain()
{floatx,y;
cout<<"inputx:
"<cin>>x;
if(x<5)
y=fabs(x);
elseif(x<20)
y=3*x*x-2*x+1;
else
y=x/5;
cout<<"x="<}
2.按工资的高低纳税,已知不同工资s的税率p如下:
s<1000p=0%
1000≤s<2000p=5%
2000≤s<3000p=8%
3000≤s<5000p=10%
5000≤sp=15%
编一程序,输入工资数,求纳税款和实得工资数。
#include"iostream.h"
voidmain()
{
floats,p,t,w;
cout<<"inputs:
"<cin>>s;
switch(int(s)/1000)
{case0:
p=0;break;
case1:
p=0.05;break;
case2:
p=0.08;break;
case3:
case4:
p=0.1;break;
default:
p=0.15;break;
}
t=s*p;
w=s-t;
cout<<"纳税款="<}
3.编一程序,求100~1000之间有多少个整数,其各个数位数字之和等于5?
#include"iostream.h"
voidmain()
{intm,count=0;
for(m=100;m<1000;m++)
{if(m%10+m/10%10+m/100==5)
count++;
}
cout<<"count="<}
4.鸡兔共笼有30个头,90只脚,求鸡兔各有多少?
#include"iostream.h"
voidmain()
{intm,n;
for(m=0;m<=30;m++)
for(n=0;n<=30;n++)
if(m*2+n*4==90&&m+n==30)
cout<<"鸡:
"<"<}
5.利用格里高利公式求
的近似值,公式为:
/4≈1-1/3+1/5-1/7+....,要求直到最后一项小于10-4为止。
#include"iostream.h"
voidmain()
{doublepi=1.0;
intn,t=1;
for(n=1;1.0/(2*n+1)>1e-6;n++)
{t=(-1)*t;
pi=pi+t/(2.0*n+1.0);
}
pi=4*pi;
cout<<"pi="<}
法二:
#include"iostream.h"
voidmain()
{floatpi=0.0;
intn,t=-1;
for(n=1;1.0/n>1e-6;n=n+2)
{t=(-1)*t;
pi=pi+1.0*t/n;
}
pi=4*pi;
cout<<"pi="<}
6.编一程序,求出方程x2+2x=y3(其中1≤x≤100,1≤y≤100)的所有整数解。
#include"iostream.h"
voidmain()
{intx,y;
for(x=1;x<=100;x++)
for(y=1;y<=100;y++)
if(x*x+2*x==y*y*y)
cout<<"x="<}
7.输入一个英文句子(以句号结束),要求将句中单词分行打印,试编写符合上述要求的程序。
#include"iostream.h"
#include"stdio.h"
voidmain()
{charch;
while((ch=getchar())!
='.')
if(ch=='')
cout<else
cout<}
8.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,求1000以内满足该条件的数。
#include"iostream.h"
#include"math.h"
voidmain()
{intm,k1,k2;
for(m=0;m<=1000;m++)
{k1=sqrt(m+100);
k2=sqrt(m+100+168);
if(k1*k1==m+100&&k2*k2==m+100+168)
cout<}
}
9.用二分法求x9-4x5-5x3-270000=0在(0,10)之间的根,要求精度达到0.00001
二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间,
依次类推,当新区间的长度或f(x)的绝对值小于eps时,x就作为所求的实根。
#include"iostream.h"
#include"math.h"
voidmain()
{floatx1=0,x2=10,x,y1,y2,y,eps=1e-6;
do{x=(x1+x2)/2;
y1=pow(x1,9)-4*pow(x1,5)-5*pow(x1,3)-270000;
y=pow(x,9)-4*pow(x,5)-5*pow(x,3)-270000;
if(y1*y>0)
x1=x;
else
x2=x;
}while(fabs(x2-x1)>eps);
cout<}
第四章
一、选择题
1.下列数组定义语句中,正确的是()。
C
A.inta[3,4];B.intn=3,m=4,inta[n][m];
C.inta[3][4];D.inta(3)(4);
2.以下不能对二维数组a初始化的语句是()。
A
A.inta[2][]={{1},{2}};B.inta[2][3]={1,2,3,4,5,6};
C.inta[2][3]={1};D.inta[2][3]={{1},{2}};
3.要使字符数组str中存放串”Lucky”并能正确处理,下列正确的定义语句是()。
C
A.charstr[]={‘L’,’u’,’c’,’k’,’y’};B.charstr[5]={‘L’,’u’