当前位置:文档之家› c++程序设计课后习题答案(杨长兴__刘卫国主编)1111

c++程序设计课后习题答案(杨长兴__刘卫国主编)1111

习题一一、选择题1.C2. C3.B4.C5.C6.D7.C8.A9.B10.D二、填空题1. 算法2. main3. ;4. cpp obj exe5. 符号定义6. 是10 是117. d ouble 18. -2649. 是410. m-m/n*n11. a为6 b为4 c为212. 为1三、问答题1.有点。

计算机程序设计语言模型是更规则、无二意性的语言模型。

2.书P33..dsw 、.dsp、.ncp、.cpp4.提高程序的可读性、可维护性。

在行注释前加“//”。

段注释放入“/*”和“*/”之间。

注释对原程序的编译和运行没影响。

5.设置符号常量主要提高源程序的可读性、维护性。

区别:1.识别时,主要看符号的定义;2.运行时,符号常量不能改变值而变量可改变。

6.字符常量通常指一个字符,存储单元为一个字节;字符串可包含多个字符,存储单元为字符数加1个字节。

7. 1.0 、1.1e2 类型:double; 1L、65536 类型:long8.int、new 不是,因为是关键字;abc、lxyz、a_0、Hello、aaaaa、_a是合法的标识符;a+b、!A不是,因为+、!是运算符。

0_abc不是是因为数字开头;d$a不是是因为标识符不应包含$。

9.合法:(1)、(5)、(6)10.全部都是。

11.a=2;b=112.2;-2;6、4、40、-3、313.(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=414.(1) (float) k (2)x-int(x) (3)m/10%10(4)(ch>=’A’ && ch<=’Z’)?(ch=’a’+ch-‘A’):ch习题二四、选择题1.B2. C3.A4.B5.B五、填空题1. if2. do while和for3.循环体循环体4. 1 n+1 n5. 5,4,6三、程序阅读题15.m=516. 1 4,2 2 6,3,3 5,5 6,c=37六、程序设计题1.#include <iostream>#include <cmath>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<<"面积="<<sqrt(s*(s-a)*(s-b)*(s-c));} elsecout<<"输入的不是三角形的三条边";}2.见《实验教程》p27 4.3.#include <iostream.h>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<<"优惠款为:"<<y<<endl;}4.见《实验教程》p285.5. #include <iostream>using namespace std;int i,n;long js=1;void main(){cout<<"输入n:"; cin>>n;for (i=1;i<=n;i++)js*=i;cout<<n<<"!="<<js;}6. #include <iostream>#include <cmath>using namespace std;int n=1;float pi=0,xn=4;void main(){ while (fabs(xn)>1.0e-8){ pi+=xn;n++;xn=-4.0*sign(xn)/(2*n-1);}cout<<"π="<<pi;}7. #include <iostream.h>void main(){ int i,j,sum;for(i=2;i<=1000;i++){ sum=0;For (j=1;j<i;j++)if (i%j==0) sum+=j;if (sum==i){cout<<i<<" ";For (j=1;j<i;j++)If (i%j==0) cout<<j<<",";Cout<<endl;}}}8. #include <iostream.h>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<<"公猴:"<<x<<"母猴:"<<y<<"小猴:"<<z;}}9. 见《教程》p60 例2.2310. 见《实验教程》p32 5.习题三七、选择题1.B2.B3.C4.D5.D八、填空题1. 函数头省略能省略应加“;”函数头不加“;”2. inline flat f(int,char)3.函数体外外部内部(静态) static 文件位置 extern4.生存期作用域作用域生存期作用域本文件5.-22 100 -3三、程序阅读题17.S=4018.y=12919.max=820.S=29a)程序设计题1. #include <iostream.h>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,ncout<<"输入整数m n:"; cin>>m>>n;cout<<m<<"!+"<<n<<"!="<<add(fac(m),fac(n))<<endl; }2. #include <iostream.h>#include <math.h>int isprime(int n){ int i;float k;k=sqrt(n);for (i=2;i<k;i++) if (n%i==0) return 0;return 1;}void main(){ int s=0,i;for (i=2;i<=100;i++)if (isprime(i)) s+=i;cout<<"和:"<<s<<endl;}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;elses=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;if (n==1)retrun 1;elses=sum(n-1)+n;return s;}5. #include <iostream.h>inline int ischar(char n){ if (n<=127) return 1;return 0;}void main(){ char a;cout<<"输入字符:";cin>>a;if (ischar(a))cout<<a<<endl;elsecout<<"输入的不是英文字符:" }6.file1.cppfloat fac(int n){ int i;float s=1;For (i=1;i<=n;i++) s*=i;}File2.cpp#include <iostream.h>float pow(float a,int n){ int i;float s=1;for (i=1;i<=n;i++)s*=a;return s;}void main(){ int a,b,n;cout<<"输入a b n:";cin>>a>>b>>n;cout<<fac(a)/pow(b,n);}习题四程序设计题:1. #include <iostream.h>void main(){ int a[10],i,j,k,tem;for (i=0;i<10;i++){cout<<"输入第"<<i+1<<"个整数:"; cin>>a[i];} for (i=0;i<=8;i++){ k=i;for (j=i+1;j<=9;j++)if (a[k]<a[j]) k=j;tem=a[i];a[i]=a[k];a[k]=tem;cout<<a[i]<<"\t";}}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;}elsecout<<"该数不能插入";return 0;}3.#include <iostream.h>int a[100],i,,k,b;void main(){ i=1;while (i<=100){ cout<<"输入第"<<i<<"个整数:";cin>>b;for (k=0;k<i-1;k++)if (a[k]==b) break;if (k==i-1){ a[i++-1]=b;}}}4. #include <iostream.h>#define lnum 10#define cnum 10void main(){ float a[lnum][cnum],max,min;int i,j,k,l,fb=1;//输入数给数组for (i=0;i<lnum;i++)for(j=0;j<cnum;j++){cout<<"输入"<<i<<"行"<<j<<"列数:";cin>>a[i][j];}//找鞍点,先找出一行中的最大点,然后在同列中确定是否为最小点 for (i=0;i<lnum;i++){ l=0;for(k=1;k<cnum;k++)if (a[i][l]<a[i][k]) l=k;for(k=0;k<cnum;k++)if (a[i][l]>a[l][k]) break;if (k==cnum){ cout<<i<<"行"<<l<<"列元素为鞍点:";fb=0;}elseif (fb) cout<<"该数组无鞍点";}}5. void f(int a[],int n){ int i,tem;for (i=0;i<n/2;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<p1){ if (*p!=*p1)return 0;else{p++;p1--}}return 1;}7. #include <iostream.h>#include <string.h>void main(){ char str1[100],str2[50],*p=str2;int n;Cout<<"输入字符串";Cin.get(str1,100);n=strlen(str1);for (i=0;i<n;i=i+2){*(str2+i/2)=str1[i];}*(Str2+i/2)=null;cout<<"str1:"<<str1<<endl;cout<<"str2:"<<str2<<endl;}8. #include <iostream>using namespace stdvoid main(){ int i,supercn=0,lowcn=0,spacecn=0,numbercn=0,othercn=0;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<<”大写字母数:”<<supercn<<endl;cout<<”小写字母数:”<<lowcn<<endl;cout<<”空格数:”<<spacecn<<endl;cout<<”数字字母数:”<<numbercn<<endl;cout<<”其它字母数:”<<supercn<<endl;}9.#include <iostream>using namespace stdvoid 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<<”单字个数:”<<count<<endl;}10. #include <iostream>#include <string>using namespace std;void main(){ int i,maxn=0,maxxb,m=0;char a[40][100];cout<<"输入各行:"<<endl;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<<a[maxxb]<<endl;}11.##include <iostream>#include <string>using namespace std;void main(){ int i,n,m,j,k;char a[40][100],b[100];cout<<"输入各国家名(一个国家一行):"<<endl;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<n-2;i++){ k=i;for (j=i+1;j<n-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<n;i++) {cout<<a[i]<<endl;}}12.int find(char *s,char *word){ char *p1,*p2,lable=1,firstspace=1;p1=s;p2=word;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.A2.D3.C4.A5.D十、填空题1. struct2.typedef3.1024.new delete 十一、程序阅读题程序1:65 A65 a程序2:10,20,7,9四、程序设计题1.#include <iostream>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<<”输入第”<<int(i+1)<<”个学生的学号:”;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<s[j].totalscore){s1=s[i];s[i]=s[j];s[j]=s1;}for(i=0;i<5;i++){cout<<”学号\t姓名\t性别\t出生年月\t入学总分\t籍贯”<<endl;cout<<s[i].num<<”\t”<<s[i].name<<””<<s[i].sex<<”\t”<<s[i].birth.year;cout<<””<<s[i].birth.month<<”\t”<<s[i].score<<”\t”<<s[i].hometown;cout<<endl;}}2.3.链表就是把物理上不连续的存储块链接为逻辑上连续的存储块,每个存储块都包含一个指向下一个存储块的指针。

相关主题