c++程序设计课后习题答案(杨长兴,刘卫国主编)1111
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c++程序设计课后习题答案(杨长兴,刘卫国主编)1111习题⼀
⼀、选择题
1.C
2. C
3.B
4.C
5.C
6.D
7.C
8.A
9.B
10.D
⼆、填空题
1. 算法
2. main
3. ;
4. cpp obj exe
5. 符号定义
6. 是10 是11
7. d ouble 1
8. -2649. 是4
10. m-m/n*n11. a为6 b为4 c为212. 为1
三、问答题
1.有点。
计算机程序设计语⾔模型是更规则、⽆⼆意性的语⾔模型。
2.书P3
3..dsw 、.dsp、.ncp、.cpp
4.提⾼程序的可读性、可维护性。
在⾏注释前加“//”。
段注释放⼊“/*”和“*/”之间。
注释对原程序的编译和运⾏没影响。
5.设置符号常量主要提⾼源程序的可读性、维护性。
区别:1.识别时,主要看符号的定义;2.运⾏时,符号常量不能改变值⽽变量可改变。
6.字符常量通常指⼀个字符,存储单元为⼀个字节;字符串可包含多个字符,存储单元为字符数加1个字节。
7. 1.0 、1.1e2 类型:double; 1L、65536 类型:long
8.int、new 不是,因为是关键字;abc、lxyz、a_0、Hello、aaaaa、_a是合法的标识符;a+b、!A不是,因为+、!是运算
9.合法:(1)、(5)、(6)
10.全部都是。
11.a=2;b=1
12.2;-2;6、4、40、-3、3
13.(1) 4 a=3 b=4 c=5; (2)5 a=3 b=4 c=6; (3)-9 a=3 b=5 c=5;
(4) 4 a=4 b=4 c=4
14.(1) (float) k (2)x-int(x) (3)m/10%10
(4)(ch>=’A’ && ch<=’Z’)?(ch=’a’+ch-‘A’):ch
习题⼆
四、选择题
1.B
2. C
3.A
4.B
5.B
五、填空题
1. if
2. do while和for
3.循环体循环体
4. 1 n+1 n
5. 5,4,6
三、程序阅读题
15.m=5
16. 1 4,2 6,2 3,3 5,5 6,c=37
六、程序设计题
1.#include
#include
using namespace std;
float a,b,c,s,area;
void main()
{cout<<"输⼊a b c:"; cin>>a>>b>>c;
if ((a+b>c)&&(a+c>b)&&(b+c>a))
{s=(a+b+c)/2;cout<<"⾯积="<
2.见《实验教程》p27 4.
3.#include
void main()
{float x,y;
cout<<"输⼊购物款:";cin>>x; switch (int(x/1000))
{ case 0:y=x;break;
case 1:y=x*0.95;break;
case 2:y=x*0.9;break;
case 3:y=x*0.85;break; default:y=x*0.8;
}
cout<<"优惠款为:"<
}
4.见《实验教程》p28
5.
5. #include
using namespace std;
int i,n;
long js=1;
void main()
{cout<<"输⼊n:"; cin>>n;
for (i=1;i<=n;i++)
js*=i;
cout<
}
6. #include
#include
using namespace std;
int n=1;
float pi=0,xn=4;
void main()
{ while (fabs(xn)>1.0e-8)
cout<<"π="<
}
7. #include
void main()
{ int i,j,sum;
for(i=2;i<=1000;i++)
{ sum=0;
For (j=1;j
if (i%j==0) sum+=j;
if (sum==i)
{cout<
For (j=1;j
If (i%j==0) cout<
Cout<
}
}
}
8. #include
void main()
{ int x,y,z;
For (x=1;x<10;x++)
For (y=1;y<12;y++)
{ z=20-x-y;
If (5*x+4*y+2*z==50) Cout<<"公猴:"<
}
}
9. 见《教程》p60 例2.23
10. 见《实验教程》p32 5.习题三
七、选择题
1.B
2.B
5.D
⼋、填空题
1. 函数头省略能省略应加“;”函数头不加“;”
2. inline flat f(int,char)
3.函数体外外部内部(静态) static ⽂件位置 extern
4.⽣存期作⽤域作⽤域⽣存期作⽤域本⽂件
5.-22 100 -3
三、程序阅读题
17.S=40
18.y=129
19.max=8
20.S=29
a)程序设计题
1. #include
float add(int x,int y)
{ return (float)(x+y);
}
float fac(int n)
{ int i;
float s=1;
For (i=1;i<=n;i++) s*=i;
}
void main()
{ int m,n
cout<<"输⼊整数m n:"; cin>>m>>n;
cout<
2. #include
#include
int isprime(int n)
{ int i;
float k;
k=sqrt(n);
for (i=2;i
void main()
{ int s=0,i;
for (i=2;i<=100;i++)
if (isprime(i)) s+=i; cout<<"和:"<
}
3. ⾮递归:
float pow(float a,int n) { int i;
float s=1;
for (i=1;i<=n;i++)
s*=a;
return s;
}
递归:
float pow(float a,int n) { float s;
if (n==0)
return 1;
else
s=pow(a,n-1)*a; return s;
}
4.⾮递归:
float sum(int n)
{ float s;
int i;
for (i=1;i<=n;i++) s+=i; return s;
}
递归:
float sum(int n)
{ float s;
else
s=sum(n-1)+n;
return s;
}
5. #include
inline int ischar(char n)
{ if (n<=127) return 1;
return 0;
}
void main()
{ char a;
cout<<"输⼊字符:";
cin>>a;
if (ischar(a))
cout<
else
cout<<"输⼊的不是英⽂字符:" } 6.file1.cpp
float fac(int n)
{ int i;
float s=1;
For (i=1;i<=n;i++) s*=i;
}
File2.cpp
#include
float pow(float a,int n)
{ int i;
float s=1;
for (i=1;i<=n;i++)
s*=a;
return s;
}
void main()
cin>>a>>b>>n;
cout<
}
习题四
程序设计题:
1. #include
void main()
{ int a[10],i,j,k,tem;
for (i=0;i<10;i++)
{cout<<"输⼊第"<>a[i];} for (i=0;i<=8;i++) { k=i;
for (j=i+1;j<=9;j++)
if (a[k]
tem=a[i];a[i]=a[k];a[k]=tem;
cout<
}
}
2.设:数组的⼤⼩为n,插⼊函数如下:int insert(int a[],int n)
{ int b,i=0,k;
Cout<<"输⼊整数:";
cin>>b;
while (b>a[i] && i<=n) i++;
if (i<=n)
{ for (k=n;k>i;k--) a[k]=a[k-1];
a[i]=b;return 1;
}
else
cout<<"该数不能插⼊";
return 0;
}
3.#include
int a[100],i,,k,b;
while (i<=100)
{ cout<<"输⼊第"<>b;
for (k=0;k
if (a[k]==b) break;
if (k==i-1)
{ a[i++-1]=b;}
}
}
4. #include
#define lnum 10
#define cnum 10
void main()
{ float a[lnum][cnum],max,min;
int i,j,k,l,fb=1;
//输⼊数给数组
for (i=0;i
for(j=0;j
{cout<<"输⼊"<
cin>>a[i][j];
}
//找鞍点,先找出⼀⾏中的最⼤点,然后在同列中确定是否为最⼩点 for (i=0;i { l=0;
for(k=1;k
if (a[i][l]
for(k=0;k
if (a[i][l]>a[l][k]) break;
if (k==cnum)
{ cout<
fb=0;
}
else
if (fb) cout<<"该数组⽆鞍点";
}
{ int i,tem;
for (i=0;i
{tem=a[i];a[i]=a[n-1-i];a[n-1-i]=tem;} } 6.int f(char *s)
{ int n=1;
char *p,*p1;
n=strlen(s);
p=s;
p1=s+n-1;
while (p
{ if (*p!=*p1)
return 0;
else
{p++;p1--}
}
return 1;
}
7. #include
#include
void main()
{ char str1[100],str2[50],*p=str2;
int n;
Cout<<"输⼊字符串";
Cin.get(str1,100);
n=strlen(str1);
for (i=0;i
{*(str2+i/2)=str1[i];}
*(Str2+i/2)=null;
cout<<"str1:"<
cout<<"str2:"<
}
8. #include
using namespace std
char a[100];
cout<<”输⼊字串:”;
cin.get(a,100);
while (a[i])
{ { if (a[i]>=’A’ && a[i]<=’Z’) supercn++; else if (a[i]>=’a’ && a[i]<=’z’) lowcn++; else f (a[i]=’‘) spacecn++;
else if (a[i]>=’0’ & a[i]<=’9’) numbercn++; else othercn++;
}
}
cout<<”⼤写字母数:”<
cout<<”⼩写字母数:”<
cout<<”空格数:”<
cout<<”数字字母数:”<
cout<<”其它字母数:”<
}
9.#include
using namespace std
void main()
{ int i,lable=0,count=0;
char a[100];
cout<<”输⼊字串:”;
cin.get(a,100);
while (a[i])
{ if (a[i]==’‘ && lable)
{count++;label=0;}
else if(a[i]!=’’)
lable=1;
i++;
}
cout<<”单字个数:”<
}
10. #include
#include
using namespace std;
void main()
{ int i,maxn=0,maxxb,m=0;
char a[40][100];
cout<<"输⼊各⾏:"<
for (i=0;i<40;i++)
{ cin.getline(a[i],100);
m=strlen(a[i]);
if (m==0) break;
if (m>maxn) {maxxb=i;maxn=m;}
}
cout<
}
11.##include
#include
using namespace std;
void main()
{ int i,n,m,j,k;
char a[40][100],b[100];
cout<<"输⼊各国家名(⼀个国家⼀⾏):"<
for (i=0;i<40;i++)
{ cin.getline(a[i],100);
m=strlen(a[i]);
if (m==0) break else n++;
}
for (i=0;i
{ k=i;
for (j=i+1;j
if (strcpy(a[k],a[j])>0) k=j;
if (k!=i) {strcpy(b,a[i]);strcpy(a[i],a[k]);strcpy(a[k],b);)} } for (i=0;i
}
12.
int find(char *s,char *word)
{ char *p1,*p2,lable=1,firstspace=1;
while (*p1)
{ if (*p1==' ')
firstspace=1;
else if(firstspace==1)
{ lable=1;
while (*p1!=' ' && *p1 && *p2)
{if (*p1!=*p2) lable=0;
p1++;p2++;
}
if (lable && !*p2 && (*p1==' ' || !*p1)) return 1; if (!*p1) return 0;
if (*p1==' ') firstspace=1; else firstspace=0; p2=word;
}
p1++;
}
return 0;
习题五
九、选择题
1.A
2.D
3.C
4.A
5.D
⼗、填空题
1. struct
2.typedef
3.102
4.new delete ⼗⼀、程序阅读题
程序1:
65 A
65 a
四、程序设计题
1.#include
using namespace std;
struct date
{ int year;
int month;
};
struct student
{ long num;
char name[9];
char sex;
date birth;
float totalscore;
char hometown[20];
};
Void main()
{ student s[5],s1;
char i,j,m[5];
for (i=0;i<5;i++)
{ cout<<”输⼊第”<
cin>>s[i].num;
cout<<”姓名:”;
cin.get(s[i].name,9);
cin.readsome(m,5);
cout<<”性别:”;
cin>>s[i].sex;
cin.readsome(m,5);
cout<<”输⼊出⽣年⽉:”;cin>>s[i].birth.year>>s[i].birth.month; cout<<”输⼊总分:”;
cin>>s[i].totalscore;
cout<<”输⼊籍贯:”;
cin.get(s[i].hometown,20);
cin.readsome(m,5);
}
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if (s[i].totalscore
{s1=s[i];s[i]=s[j];s[j]=s1;}
for(i=0;i<5;i++)
{cout<<”学号\t姓名\t性别\t出⽣年⽉\t⼊学总分\t籍贯”<
cout<
cout<<””<
cout<
}
}
2.
3.链表就是把物理上不连续的存储块链接为逻辑上连续的存储块,每个存储块都包含⼀个指向下⼀个存储块的指针。
基本操作有建⽴链表,插⼊,删除,访问⼀个块。
习题六
⼗⼆、选择题
1.C
2.D
3.D
4.B
5.C
6.D
7.B
8.A
9.C 10.D
11.D 12.A
⼗三、填空题
1. 数据成员函数成员
2.类定义体内类定义体外
3.public protect private private
4.对象的初始化对象释放时的维护
5.3 3
6.⽣成B,并把A复制给B
7.public public friend
8.b[0].x b[i].x a,6
⼗四、程序阅读题
程序1:
a转换为A
b转换为B
程序2:
There are 1 points There are 6 points Thera are 6 points
程序3:
fun1:7
fun2:15
程序4:
97
习题⼗⼗五、选择题
1.C
2.A
3.C
⼗六、填空题
1. cerr clog
2.流
3.fstream.h
4.成员
⼗七、程序阅读题
程序1:
Jim 1.2e+000
Cindy 3.5e+001
Tidy 6.5e+002
Sam 4.4e+003
程序2:
空格:3 ⾏数:3 制表符:2程序3:
fg
123456。