当前位置:学习资源下载>课后习题答案
第一章 C++基础知识习题
1.1 判断下列标识符的合法性。
5arry
a3
book
class_cpp
sin
$1
_name
Example2.1
main
x*y
my name
答 : 合 法 的 : sin
book
_name
main
class_cpp
a3
非法的:5arry
1.2假定有下列变量:
Example2.1
$1
x*y
my name
int a=3,b=5,c=0;
float x=2.5,y=8.2,z=1.4;
char ch1=’a’,ch2=’5’,ch3=’0’,ch4;
求下列表达式的值,以及运算后表达式所涉及的各变量的值。
x+(int)y%a
int(y/z)+(int)y/(int)z
ch3||(b+=a*c)||c++
x=z*b++,b=b*x,b++
!(a>b)&&c&&(x*=y)&&b++
z=(a<<2)/(b>>1)
ch4=ch3-ch2+ch1
答:x+(int)y%a 值为:4.5
x=z*b++,b=b*x,b++值为:42,x 为7,b 为43
ch4=ch3-ch2+ch1值为:’\\’
int(y/z)+(int)y/(int)z 值为:13
!(a>b)&&c&&(x*=y)&&b++值为:0,b 为5 注:只要出现一个 false 右边的不再做。
ch3||(b+=a*c)||c++值为:1,c 为0 注:只要出现一个 true,右边不再做。
z=(a<<2)/(b>>1)值为:6
1.3判断下列哪些是常量,哪些是变量。
"China"
int array[5]={1,2,3,4,5};
const int n=10;
int m=5;
'a'
char ch='a'
char s[]="Hello";
答:"China" 文字常量
const int n=10;常变量
int m=5;变量
'a' 文字常量
char ch='a'变量
int array[5]={1,2,3,4,5};变量
char s[]="Hello";变量
1.4将下列算式或叙述用 C++表达式描述。
(1)
(2) (x+y)/((x-y)*ay)
(3)位于原点为圆心,a, b 为半径的圆环中的点坐标。
(4) 。
(5) 并且字符 ch 不为'\0'。
答: pi/2+sqrt(asin(x)*asin(x)+c*c)
(x+y)/((x-y)*pow(a,y))
((x*x+y*y)>=a*a)&&((x*x+y*y)<=b*b)
(a!=b)&&(a!=c)&&(b!=c)
(k<=20)&&(ch!='\0')
1.6设有语句:
int a, b;
float x,y;
char ch1,ch2,ch3;
cin>>a>>b>>x>>y>>ch1;
ch2=cin.get();
cin>>ch3;
若从键盘输入:
3 2 1.8 7 a b c
执行后各变量取值如何?注意 abc 三字符两两间有空格。
答:a 是3,b 是2,x 是1.8,y 是7,ch1是’a’,ch2是空格,ch3是’b’。
1.7设有语句:
int a,b,c,d;
cin>>oct>>a>>b>>hex>>c>>dec>>d;
若从键盘输入:
23
23
执行后各变量的值用十进制表示各是多少?
23
23
答:a:19,b:19,c:35,d:23
1.8对于习题1.7,若执行:
cout<
课后习题答案
第二章基本控制结构程序设计习题
一.基本概念与基础知识自测题
2.1程序阅读题
2.1.1设有说明:
int a=3, b=100;
下面的循环语句执行(1)次,执行后 a、b 的值分别为(2)、(3)。
while(b/a>5){
if(b-a>25) a++;
elseb/=a;
}
解答:
本题检查学生整除的概念。跟踪:
a
3
4
5
…
b
100
100
100
…
100
100
100
15
16
17
(1)14
(2)17
(3)100
b/a
33
25
20
…
6
6
5
循环次数
1
2
3
…
13
14
停
b-a
97
96
95
…
85
84
2.1.2设有说明:
int x,y,n,k;
下面程序段的功能是备选答案中的 (1) ,当 n=10,x=10打印结果是 (2) 。
cin>>x>>n;
k=0;
do{
x/=2;
k++;
}while(k
else if(num==3) cout<<”Gamma”;
else cout<<”Delta”;
当 num 的值分别为1、2、3时,上面程序段的输出分别为(1)、(2)、(3)。
解答:
检查条件语句与字符串输出概念:
(1)Alpha
(2)Bata
(3)Gamma
2.1.4执行下面程序段后,m 和 k 的值分别为 (1) 、 (2) 。
int m,k;
for(k=1,m=0;k<=50;k++){
if(m>=10) break;
if(m%2==0){
m+=5;
continue;
}
m-=3;
}
解答:注意 continue 语句的使用
初值
第1次循环后
第2次循环后
第3次循环后
第4次循环后
第5次循环后
第6次循环后
第7次循环后
第8次循环
(1)11
(2)8
m=0
m=5
m=2
m=7
m=4
m=9
m=6
m=11
m=11结束
二.编程与综合练习题
2.2有一个函数:
编写程序,输入 x,输出 y。
解:
#include
using namespace std;
int main(){
double x,y;
k=1
k=2
k=3
k=4
k=5
k=6
k=7
k=8
k=8,k++未做
cout<<"输入 x=";
cin>>x;
if(x<1) y=x;
else if(x<10)
y=2*x-1;
else y=3*x-11;
cout<<"y="<
using namespace std;
int main(){
int mark,result; //mark 是百分制成绩,result 是5分制
cout<<"请输入百分制成绩:"<>mark;
if(mark<0) {
cout<<"缺考!"<cout<<"输入错误!"<
using namespace std;
int main(){
double income,tax=0;
int k;
cout<<"请输入个人月收入:"<>income;
if(income<=1200){
cout<<"免征个人所得税"<20000){
k=income/20000;
switch(k){
default: tax+=(income-100000)*0.45;income=100000;
case 4: tax+=(income-80000)*0.40;income=80000;
case 3: tax+=(income-60000)*0.35;income=60000;
case 2: tax+=(income-40000)*0.30;income=40000;
case 1: tax+=(income-20000)*0.25;income=20000;
}
}
if(income>5000){
tax+=(income-5000)*0.20;
income=5000;
}
if(income>2000){
tax+=(income-2000)*0.15;
income=2000;
}
if(income>500){
tax+=(income-500)*0.10;
income=500;
}
tax+=income*0.05;
cout<<"应征所得税:"<
using namespace std;
int main(){
int i,j;
for (i=1;i<=4;i++){
for(j=4-i;j>0;j--) cout<<" ";//三角形每行前部的空格
for(j=1;j<=2*i-1;j++) cout<<" *";
cout<
using namespace std;
int main(){
char in;
int i,j;
do{
cout<<"输入一个字母:";
cin>>in;
if((in>=97)&&(in<=122)) in-=32;//小写改大写
}while((in<65)||(in>90));
int line=in-'A';
for (i=0;i<=line;i++){//上三角
for(j=line-i;j>0;j--) cout<<" ";//前方空格
for(j=1;j<=2*i+1;j++) cout<<' '<0;i--){//下三角(少一行)
for(j=0;j<=line-i;j++) cout<<" ";
for(j=1;j<=2*i-1;j++) cout<<' '<
#include
using namespace std;
int main(){
int n,i,jch=1;
double result=0; //result 是结果
cout<<"请输入正整数 n:"<>n;
if(n<1){
cout<<"输入错误!"<