一、选择题
1、C++源程序文件的扩展名是:______
A)
.CPP B)
.C C)
.DLL D) .EXE
2、程序中主函数的名字为______。
A)
main B)
MAIN C)Main D) 任意标识符
3、C++的合法注释是______。
A) /*This is a C
program/* B) // This is
a C program
C) “This is a C
program” D)
/This is a C program/
4、C++程序从上机到得到结果的几个操作步骤依次是______。
A) 编译、编辑、连接、运行B)
编辑、编译、连接、运行
C) 编译、运行、编辑、连接D)
编辑、运行、编辑、连接
答案:1 A 2 A
3 B 4B
二、简答题
1、C与C++语言的关系是什么?
答案:C++包含了整个C,C是建立C++的基础。C++包括C的全部特征、属性和优点,同时添加了对面向对象编程(OOP)的完全支持。
2、结构化程序设计与面向对象程序设计有什么异同点?
答案:
结构化的程序设计的主要思想是功能分解并逐步求精。面向对象程序设计的本质是把数据和处理数据的过程当成一个整体——对象。
3、C++程序开发步骤:
答案:
建立一个工程;
编辑或者导入源文件;
编译源文件,产生目标代码;
目标代码和其他库文件连接为可执行文件。
运行可执行文件。
第二章
数据类型和表达式习题答案
一、选择题
(1)B (2)C
(3)B (4)B
(5)BD
二、简答题
1、下列变量名不合法的有哪些?为什么?
A12-3、 123、 m123、 _
123、 While
答案:
A12-3:
变量名中不能有‘-‘符号
123: 变量名不能一数字开始
_ 123、、 While变量名合法。
2、下列表达式不正确的有哪些?为什么?
int a=’a’;
char
c=102; char c="abc";
char
c=’\n’;
答案: char
c="abc";是不正确的,因为"abc"是字符串不能赋值给字符变量。
3、分析常量和变量的异同点?
答案:
常量是常数或代表固定不变值的名字,常量的内容初始化以后一直保持不变。变量的内容可以在运行过程中随时改变。变量要占用固定的内存地址,常量一般不占用内存,但是用const定义的常量也要占用内存。
4、字符串"ab\\\n"在机器中占多少字节?
答案: 5个字节。分别是’a’;’b’;’\\’;’\n’;’\0’这五个字符。
5、运算结果2.5。
第三章 C++流程控制习题答案
一、选择题
(1)C (2)A
(3)D (4)C
(5)C
1、C++语言中while和do-while循环的主要区别是_________。
答案:do-while的循环体至少无条件执行一次
2、过程化程序的有哪三种基本控制结构?
答案:
顺序结构、分支结构、循环结构
3、C++用于构成分支结构的语句有哪些?构成循环结构的语句有哪些?
答案: if…else和switch语句用于分支结构。
for、while、do…while语句用于循环结构。
4、以下程序执行的结果是什么?
void main(
)
{ int x = 3;
do
cout<
while(!(--x));
}
答案: 1 -2
三、编程题(部分习题)
编程题3
#include
void main()
{
float b;int
a;
cout<
cin>>b;
a=b/1000;
switch(a)
{
case
0:cout<
case
1:cout<
case
2:cout<
case
3:
case
4:cout<
default:cout<
}
}
编程题4题
1: 1 2: 2 3: 6
4: 24 5: 120 6: 720
#include
#include
void main()
{
int
n,k;
double s;
for(n=1;n<=6;n++)
{
s=1.0;
for
(k=1;k<=n;k++)
s=s*k;
cout<
if(n%3==0)
cout<
}
}
编程题6
1.1+(1+2)+(1+2+3).....
#include
void main()
{
int
n,i,d,sum;
sum=0;d=0;i=1;
cin>>n;
for(i=1;i<=n;i++)
{
d=d+i;
sum =sum+d;
}
cout<
}
编程题10题.
迭代法求根号a。求平方根的公式为:xn+1=1/2(xn+a/xn),要求前后求出的x的差的绝对值小于10e-5。
#include
#include
void main()
{
double a, x1,x2;;
cin>>a;
x1=a;
while(1)
{
x2=(x1+a/x1)/2;
if(fabs(x1-x2)<1E-5) break;
x1=x2;
}
cout<
}
第四章
函数
//P91
四、编程题
(1)编写一个函数,将华氏温度转换为摄氏温度。公式为C=(F-32)*5/9。
#include
float swap(float x)
{
float
y;
y=(x-32)*(5.0/9);
return
(y);
}
void main()
{
float
f,p;
cout<
cin>>f;
p=swap(f);
cout<
}
(2)编写一个函数判断一个数是否为素数,并在主函数中通过调用该函数求出所有三位数的素数。
方法一、采用返回BOOL型,true表示是素数,false表示不是素数
#include
bool Prime(int m)
{
int i;
bool
flag;
flag=true;
for(i=2;i<=m-1;i++)
if(m%i==0)
{
flag=false;
break;
}
return
flag;
}
void main()
{
int n;
for(n=100;n<1000;n++)
{
if(Prime(n)==true)cout<
}
}
方法二 采用返回整型,1表示是素数,0表示不是素数
#include
int sh(int m)
{
int x;
int
flag=1;
for(x=2;x
if(m%x==0)
{flag=0; break;
}
return(flag);
}
void main()
{
int i;
for(i=101;i<=999;i++)
if(sh(i))
cout<
}
(3)编写一个递归函数求满足以下条件的最大制值n:
#include
int gui_add(int sum,int
n)
{
sum=sum+n*n;
if
(sum>1200)return n;
gui_add(sum,n+1);
}
void main()
{
cout<
}
//满足条件的最大制值n:14
(4)编写一递归函数将所输入的5个字符按相反的顺序排列出来。(递归)
#include
void shuru(int n)
{
char
c;
if(n==0)return;
cin>>c;
n--;
shuru(n); // shuru(n-1);
cout<
}
void main()
{
shuru(5);
}
(5)使用函数重载的方法定义两个重名函数,分别求出整型数的两点间的距离和浮点型数的两点间距离。
(6)求方程ax2+bx+c=0的根,用三个函数分别求当b2-4ac大于0,等于0和小于0时的根,并输出结果。要求从主函数输入a,b,c的值。
(7)编写一个函数,调用该函数能够打印一个由指定字符组成的n行金字塔。其中,指定打印的字符和行数n分别由两个形参表示。
#include
#include
void print(int n,char p)
{
int i,j;
for (i=1;i<=n;i++)
{
cout <
for (j=1;j<2*i;j++)
cout<
cout<
}
}
void main()
{
int m;char l;
cout<
cin>>m;
cout<
cin>>l;
print(m,l); //不能cout<
}
(8)编写一个判断完数的函数。“完数”是指一个数恰好等于它的因子之和,例如6=1+2+3,6就是完数。
#include
bool jin(int n)
{
int s=0,i;
for(i=1;i
if(n%i==0)s=i+s;
if(s==n)return true;
else return false;
}
void main()
{
int n;
cout<
cin>>n;
if(jin(n)==true)
cout<
else
cout<
}
(9)编写一个将十进制数转换为二进制数的函数。(递归)
#include
void convert_to_B(int n)
{
if(n==0)
return;
else
convert_to_B(n/2);
cout<
}
void main()
{
int
n;
cout<
cin>>n;
cout<
convert_to_B(n);
cout<
}
(10)编写一个函数,功能为求两个正整数m和n的最大公约数。
最大公约数,最小公倍数函数
#include
int f(int x,int y)
//最大公约数函数
{
int t;
if(x
while(y!=0)
{
t=x%y;x=y;y=t;}
return x;
}
int g(int x,int y)
//最小公倍数函数
{
int t;
t=f(x,y);
return
(x*y/t);
}
main()
{ int a,b,max,min;
scanf("%d%d",&a,&b);
max=f(a,b);
min=g(a,b);
printf("==",max,min);}