c++程序设计课后习题答案(杨长兴__刘卫国主编)1111
《C语言程序设计》课后习题答案(第四版)

第1章程序设计和C语言11.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例61.4.2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务141-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用N S流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3C语句573.3.1C语句的作用和分类573.3.2最基本的语句——赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。
C语言程序设计教程课后习题答案

C语言程序设计教程课后习题答案第一章C语言程序设计概述-习题答案1算法的描述有哪些基本方法?答1、自然语言2、专用工具2C语言程序的基本结构是怎样的?举一个例子说明。
答1、C语言程序由函数构成;2、“/*”与“*/”之间的内容构成C语言程序的注释部分;3、用预处理命令#include、#define可以包含有关文件或预定义信息;4、大小写字母在C语言中是有区别的;5、除main()函数和标准库函数外,用户也可以自己编写函数,应用程序一般由多个函数组成,这些函数指定实际所需要做的工作。
3C语言有什么特点?答1、具有结构语言的特点,程序之间很容易实现段的共享;2、主要结构成分为函数,函数可以在程序中被定义完成独立的任务,独立地编译代码,以实现程序的模块化;3、运算符丰富,包含的范围很广;4、数据类型丰富;5、允许直接访问物理地址,即可直接对硬件进行损伤,实现汇编语言的大部分功能;6、限制不太严格,程序设计自由度大,这样使C语言能够减少对程序员的束缚;7、生成的目标代码质量,程序执行效率高,同时C语言编写的程序的可移植性好。
4★指出合法与不合法的标识符命名。
答AB12--√ leed_3-- a*b2--× 8stu--× D.K.Jon--× EF3_3--√ PAS--√ if--×XYZ43K2--√ AVE#XY--× _762--√ #_DT5--× C.D--×5说明下列Turbo C热键的功能。
答F2:源文件存盘 F10:调用主菜单 F4:程序运行到光标所在行(用于调试程序)Ctrl+F9:编译并链接成可执行文件 Alt+F5:将窗口切换到 DOS 下,查看程序运行结果。
6说明下列Turbo C方式下输入并运行下列程序,记录下运行结果。
①main(){printf("********************\n");printf(" welcome you \n");printf(" very good \n);printf("********************\n");}②main(){ int a,b,c,t;printf("please input three numbers;");scanf("%d,%d,%d",&a,&b,&c); /*教材S是错误的*/t=max(max(a,b),c);printf("max number is:%d\n",t);}int max(int x, int y){ int z;if(x>y)z=x;else z=y;return(z);}答运行结果:********************welcome youvery good********************运行结果:please input three numbers;3,1,4 /*左侧下划线内容为键盘输入*/max number is:47一个C程序是由若干个函数构成的,其中有且只能有一个___函数。
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不是,因为+、!是运算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 6,2 3,3 5,5 6,c=37六、程序设计题1.#include#includeusing 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.#includevoid 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.见《实验教程》p285.5. #includeusing 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#includeusing namespace std;int n=1;float pi=0,xn=4;void main(){ while (fabs(xn)>1.0e-8)cout<<"π="<}7. #includevoid main(){ int i,j,sum;for(i=2;i<=1000;i++){ sum=0;For (j=1;jif (i%j==0) sum+=j;if (sum==i){cout<For (j=1;jIf (i%j==0) cout<Cout<}}}8. #includevoid 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.2310. 见《实验教程》p32 5.习题三七、选择题1.B2.B5.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. #includefloat 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<2. #include#includeint isprime(int n){ int i;float k;k=sqrt(n);for (i=2;ivoid 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;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;elses=sum(n-1)+n;return s;}5. #includeinline int ischar(char n){ if (n<=127) return 1;return 0;}void main(){ char a;cout<<"输⼊字符:";cin>>a;if (ischar(a))cout<elsecout<<"输⼊的不是英⽂字符:" } 6.file1.cppfloat fac(int n){ int i;float s=1;For (i=1;i<=n;i++) s*=i;}File2.cpp#includefloat 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. #includevoid 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;}elsecout<<"该数不能插⼊";return 0;}3.#includeint a[100],i,,k,b;while (i<=100){ cout<<"输⼊第"<>b;for (k=0;kif (a[k]==b) break;if (k==i-1){ a[i++-1]=b;}}}4. #include#define lnum 10#define cnum 10void main(){ float a[lnum][cnum],max,min;int i,j,k,l,fb=1;//输⼊数给数组for (i=0;ifor(j=0;j{cout<<"输⼊"<cin>>a[i][j];}//找鞍点,先找出⼀⾏中的最⼤点,然后在同列中确定是否为最⼩点 for (i=0;i { l=0;for(k=1;kif (a[i][l]for(k=0;kif (a[i][l]>a[l][k]) break;if (k==cnum){ cout<fb=0;}elseif (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#includevoid 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. #includeusing namespace stdchar 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.#includeusing 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<<”单字个数:”<}10. #include#includeusing 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#includeusing 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;jif (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.A2.D3.C4.A5.D⼗、填空题1. struct2.typedef3.1024.new delete ⼗⼀、程序阅读题程序1:65 A65 a四、程序设计题1.#includeusing 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.链表就是把物理上不连续的存储块链接为逻辑上连续的存储块,每个存储块都包含⼀个指向下⼀个存储块的指针。
《C 程序设计教程》课后习题答案

第1章C++及其开发环境概述一、问答题1.结构化程序设计主要有哪些劣势?【答案】(1)程序的开发效率低下(2)程序的可重用性差(3)程序的维护成本高(4)无法适应信息的快速膨胀和多样化2.面向对象的程序设计有哪些优点?【答案】(1)程序的开发效率高(2)程序代码的可重用性高(3)程序易于维护3.C++的发展经历了哪些阶段?【答案】C++语言起源于C语言。
1980年初期,美国贝尔实验室的Bjarne Stroustrup博士及其同事在C语言的基础上,从Simula67中引入面向对象的特征,开发出一种过程性与对象性相结合的程序设计语言,最初称为“带类的C”,1983年正式取名为C++。
后来,Stroustrup和他的同事陆续将运算符重载、继承、虚函数等特性引入C++,1989年后推出AT&T C++ 2.0版,并经过多次改进和完善,发展成为现在的C++。
4.C++主要有哪些特点?【答案】(1)C++可以被看成C语言的一个超集,是对C的增强和扩展。
因此,许多C代码可以不经修改即可为C++所用。
自然,也可以利用C++开发环境来开发C程序。
(2)C++几乎支持所有面向对象的程序设计特征,因此,利用C++不仅可以进行传统的结构化程序设计,而且可以较好地进行面向对象的程序开发。
(3)C++很好地保持了C的简洁、高效、灵活和接近汇编语言的特点,因此,C++程序的执行效率也很高。
5.一个C++程序一般由哪几部分构成?【答案】①预处理命令。
C++提供了三种预处理命令,即宏定义命令、文件包含命令和条件编译命令。
②全局声明部分。
此部分内容通常会给出用户自定义的数据类型声明,以及程序中所涉及变量的定义,例如类的声明。
数据结构③函数。
一个程序中可包含一个或多个函数,它们是执行用户指定操作的主要部分。
6.使用Visual C++ 开发C++程序时一般要经过哪几个步骤?每个步骤的作用是什么?相应地产生哪些文件?【答案】(1)编写程序C++是一种高级语言,所以用其编写的程序称为“源程序”,以.cpp做为后缀。
c程序设计第三版习题参考解答 全

C程序设计(第三版)课后习题参考解答第1章 C语言概述1.5 参照本章例题,编写一个C程序,输出以下信息:******************************Very Good!******************************解:main ( ){printf(“****************************** \n”);printf(“\n”);printf(“ Very Good! \n”);printf(“\n”);printf(“****************************** \n”);}1.6 写一个程序,输入a,b,c三个值,输出其中最大者。
解:main ( ){int a,b,c,max;printf(“请输入三个数a,b,c: \n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf(“最大数为:%d ”,max);}第2章程序的灵魂——算法2.1 什么叫结构化的算法?为什么要提倡结构化的算法?解:由一些基本结构顺序组成的算法称为结构化的算法。
由于在基本结构之间不存在非顺序的跳转,流程的转移只存在于一个基本结构范围之内,因而提高了算法的质量。
2.7 什么叫结构化程序设计?它的主要内容是什么?解:结构化程序就是用高级语言表示的结构化算法。
它的主要内容包括“自顶向下,逐步细化”的分析方法和“模块化设计”的解决方法,以及“结构化编码”的实现方法。
第3章数据类型、运算符与表达式3.4将以下三各整数分别赋给不同类型的变量,请画出赋值后数据在内存中的存储形式。
注:如果没有学过二进制和补码,此题可以不做。
解:各数据在内存中的存储形式如下表所示:其中int和short类型,其取值范围是-32768~32767。
32769在这两种类型中实际表示负数,它是一个负数的补码,对其再求一次补码可得其真值,即-(65536-32769)=-32767。
《C 程序设计教程》课后习题答案

第1章C++及其开发环境概述一、问答题1.结构化程序设计主要有哪些劣势?【答案】(1)程序的开发效率低下(2)程序的可重用性差(3)程序的维护成本高(4)无法适应信息的快速膨胀和多样化2.面向对象的程序设计有哪些优点?【答案】(1)程序的开发效率高(2)程序代码的可重用性高(3)程序易于维护3.C++的发展经历了哪些阶段?【答案】C++语言起源于C语言。
1980年初期,美国贝尔实验室的Bjarne Stroustrup博士及其同事在C语言的基础上,从Simula67中引入面向对象的特征,开发出一种过程性与对象性相结合的程序设计语言,最初称为“带类的C”,1983年正式取名为C++。
后来,Stroustrup和他的同事陆续将运算符重载、继承、虚函数等特性引入C++,1989年后推出AT&T C++ 2.0版,并经过多次改进和完善,发展成为现在的C++。
4.C++主要有哪些特点?【答案】(1)C++可以被看成C语言的一个超集,是对C的增强和扩展。
因此,许多C代码可以不经修改即可为C++所用。
自然,也可以利用C++开发环境来开发C程序。
(2)C++几乎支持所有面向对象的程序设计特征,因此,利用C++不仅可以进行传统的结构化程序设计,而且可以较好地进行面向对象的程序开发。
(3)C++很好地保持了C的简洁、高效、灵活和接近汇编语言的特点,因此,C++程序的执行效率也很高。
5.一个C++程序一般由哪几部分构成?【答案】①预处理命令。
C++提供了三种预处理命令,即宏定义命令、文件包含命令和条件编译命令。
②全局声明部分。
此部分内容通常会给出用户自定义的数据类型声明,以及程序中所涉及变量的定义,例如类的声明。
数据结构③函数。
一个程序中可包含一个或多个函数,它们是执行用户指定操作的主要部分。
6.使用Visual C++ 开发C++程序时一般要经过哪几个步骤?每个步骤的作用是什么?相应地产生哪些文件?【答案】(1)编写程序C++是一种高级语言,所以用其编写的程序称为“源程序”,以.cpp做为后缀。
c程序设计第三版习题参考解答(全)
if (max<b)
max=b;
if (max<c)
max=c;
printf(“最大数为:%d”,max);
}
第
2.1
解:由一些基本结构顺序组成的算法称为结构化的算法。由于在基本结构之间不存在非顺序的跳转,流程的转移只存在于一个基本结构范围之内,因而提高了算法的质量。
2.7
解:结构化程序就是用高级语言表示的结构化算法。它的主要内容包括“自顶向下,逐步细化”的分析方法和“模块化设计”的解决方法,以及“结构化编码”的实现方法。
设x=2.5,a=7,y=4..7
(2)(float)(a+b)/2+(int)x%(int)y
设a=2,b=3,x=3.5,y=2.5
解:
(1)2.5
(2)3.5
3
main ( )
{ inti, j, m, n;
i=8;
j=10;
m=++i;
n=j++;
printf (“%d, %d, %d, %d”, i, j, m, n);
此题可以这样考虑:带符号数在计算机中采用补码表示,正数的补码与原码相同,负数的补码=模+真值。若使用16位存储,模为216=65536。-617的补码为65536+(-167)=64919=(176627)8=(FD97)16
(5)(-111)10=(177621)8=(FF91)16
(6)(2483)10=(4663)8=(9B3)16
scanf(“%f %e”,&x , &y);
scanf(“%c %c”,&c1 , &c2);
}
解:
c程序设计第三版习题参考解答(全)
C程序设计(第三版)课后习题参考解答第1章C语言概述1.5 参照本章例题,编写一个C程序,输出以下信息:******************************Very Good!******************************解:main ( ){printf(“****************************** \n”);printf(“\n”);printf(“Very Good! \n”);printf(“\n”);printf(“****************************** \n”);}1.6 写一个程序,输入a,b,c三个值,输出其中最大者。
解:main ( ){int a,b,c,max;printf(“请输入三个数a,b,c: \n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf(“最大数为:%d ”,max);}第2章程序的灵魂——算法2.1 什么叫结构化的算法?为什么要提倡结构化的算法?解:由一些基本结构顺序组成的算法称为结构化的算法。
由于在基本结构之间不存在非顺序的跳转,流程的转移只存在于一个基本结构范围之内,因而提高了算法的质量。
2.7 什么叫结构化程序设计?它的主要内容是什么?解:结构化程序就是用高级语言表示的结构化算法。
它的主要内容包括“自顶向下,逐步细化”的分析方法和“模块化设计”的解决方法,以及“结构化编码”的实现方法。
第3章数据类型、运算符与表达式3.4将以下三各整数分别赋给不同类型的变量,请画出赋值后数据在内存中的存储形式。
注:如果没有学过二进制和补码,此题可以不做。
解:各数据在内存中的存储形式如下表所示:它是一个负数的补码,对其再求一次补码可得其真值,即-(65536-32769)=-32767。
c语言程序设计教程第二版课后习题答案
c语言程序设计教程第二版课后习题答案【篇一:c语言程序设计教程_李含光_郑关胜_清华大学出版社习题答案习题答案[完美打印版]】1.单项选择题(1)a (2)c(3)d (4)c (5)b 2.填空题(1)函数(2)主函数(main)(3)printf() , scanf()第2章习题参考答案1.单项选择题1-5 cbccc 6-10 cdcdc 11-13 dbb 2.填空题(1)1(2)26 (3)6 , 4 , 2 (4)10 , 6(5)3.000000 (6)双精度(double)(7)9 (8)字母,数字,下划线(9)13.700000 (10)11(11)((m/10)%10)*100+(m/100)*10+m%10(12)0 (13)10 ,9 ,11(15)(x0y0)||(x0z0)||(y0||z0)(16)double (17)x==0(18)sqrt(fabs(a-b))/(3*(a+b))(19)sqrt((x*x+y*y)/(a+b))第3章习题参考答案1.单项选择题1-5 cccdd 6-10 bcdbc11-15 bcbbb16 a 2.填空题(1)用;表示结束(2){ }(3)y=x0?1:x==0?0:-1(4)y%4==0y%100!=0||y%400==0(5)上面未配对(6)default 标号(7)while , do while , for(8)do while(9)本次(10)本层 3.阅读程序,指出结果(1)yes(2)*(3)abother(4)28 70(5)2,0(6)8(7)36 (8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12(11)i=6,k=4 (12)1,-2 4.程序填空(1)x:y , u:z(2)m=n , m!=0,m=m/10(3)teps , t*n/(2*n+1) , printf(“%lf\n”,2*s) (4)m%5==0 ,printf(“%d\n”,k) (5)cx=getchar() , cx!=front , cx(6)double s=0, 1.0/k , %lf (7)s=0 , sgmin, 5.编程题(1). #include stdio.h int main() {double x,y; scanf(%lf,x); if(x1) y=x;else if(x=1.0x10) y=2*x-11; elsey=3*x-11;printf(%lf\n,y); return 0; } (2).#include stdio.h int main() {double x,y,z,min;scanf(%lf%lf%lf,x,y,z); if(xy) min=y; else min=x; if(minz)min=z;printf(min=%lf\n,min); return 0; } (3).#include stdio.h int main() {int y,m,d,flag,s=0,w,i;scanf(%d%d%d,y,m,d);flag=(y%4==0y%100!=0||y%400==0);w=((y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400)%7;for(i=1;i=m;i++) {switch(i) {case 1:s=d;break; case 2:s=31+d;break; case 3:s=59+d;break; case 4:s=90+d;break; case 5:s=120+d;break; case6:s=151+d;break; case 7:s=181+d;break; case8:s=212+d;break; case 9:s=243+d;break; case10:s=273+d;break; case 11:s=304+d;break; case12:s=334+d;break;} }s=(w+s)%7; if(s==0)printf(星期日\n); elseprintf(星期%d\n,s); return 0; }(4).#include stdio.h int main() {float p,r;scanf(%f,p); if(p=10) r=p*0.1;else if(p10p=20) r=10*0.1+(p-10)*0.075; else if(p20p=40)r=10*0.1+10*0.075+(p-20)*0.05; else if(p40p=60)r=10*0.1+10*0.075+20*0.05+(p-40)*0.03;else if(p60p=100)r=10*0.1+10*0.075+20*0.05+20*0.03+(p-60)*0.015; else if(p100)r=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(p-100)*0.01; printf(%f\n,r); return 0; } (5).#include stdio.h int main() {char c;while((c=getchar())!=\n) {if(c=ac=z) c=c-32; putchar(c);}return 0; } (6).#includestdio.h int main() {int m,k=2;printf(输入一个正整数:\n); scanf(%d,m); while(km) if(m%k==0) {printf(%4d,k); m=m/k; } else k++;printf(%4d\n,m); return 0; } (7).#includestdio.h int main() {int a,n,s=0,p=0,i;scanf(%d %d,n,a); for(i=1;i=n;i++) {p=p*10+a; s=s+p; }printf(%d\n,s); return 0; } (8).#includestdio.h int main(){int i,j,k;for(i=1;i=9;i++) for(j=0;j=9;j++) for(k=0;k=9;k++)printf(%5d,100*i+10*j+k); return 0; }(9).#includestdio.h #includemath.h int main() {float a=-10,b=10,x,f1,f2,f; f1=(((2*a-4)*a+3)*a)-6; f2=(((2*b-4)*b+3)*b)-6; do {x=(a+b)/2;f=(((2*x-4)*x+3)*x)-6; if(f*f10) { b=x; f2=f; } else { a=x;f1=f; }}while(fabs(f)=1e-6); printf(%6.2f\n,x); return 0; }(10).#includestdio.h#includemath.h int main() {int n=2;double eps,t,s=0,x;scanf(%lf %lf,x,eps); t=x; s=t;while(fabs(t)=eps) {t=-t*(2*n-3)*x*x/(2*n-2); s=s+t/(2*n); n++; }printf(%d,%lf\n,n,s); return 0; }(11).#includestdio.h int main() {unsigned long s,t=0,p=1; scanf(%u,s); while(s!=0) {if((s%10)%2!=0) {t=t+(s%10)*p; p=p*10; }s=s/10; }printf(%u\n,t); return 0; }第4章习题参考答案1.单项选择题1-5 dddbd 6-10 badcd 11-14 bdab 2.填空题(1)2(2)嵌套,递归(3)全局变量,局部变量,静态变量,动态变量(4)auto , static , register , extern (5)外部变量(6)编译,运行 3.阅读程序,指出结果(1)15(2)5(3)5,4,3 (4)i=5 i=2 i=2 i=4 i=2(5)求水仙花数(6)-5*5*5(7)30 (8)0 10 1 11 2 124.程序填空(1)float fun(float , float) , x+y,x-y, z+y,z-y (2)x , x*x+1 (3)s=0 , a=a+b 5.编程题(1).while(s!=0) #includestdio.h { unsigned int fun(unsigned int);p=p+s%10; int main() s=s/10; { } unsigned int s; return p; scanf(%u,s); } printf(%u\n,fun(s)); (2). return 0;#includestdio.h } #includestdlib.h unsigned int fun(unsignedint s) #includemath.h { void f1(float,float,float,float); unsigned int p=0; void f2(float,float,float,float);【篇二:《c语言程序设计》课后习题答案(第四版)谭浩强】t>1.1什么是计算机程序11.2什么是计算机语言11.3c语言的发展及其特点31.4最简单的c语言程序51.4.1最简单的c语言程序举例61.4.2c语言程序的结构101.5运行c程序的步骤与方法121.6程序设计的任务141-5 #include stdio.hint main ( ){ printf (**************************\n\n);printf( very good!\n\n);printf (**************************\n);return 0;}1-6#include stdio.hint main(){int a,b,c,max;printf(please input a,b,c:\n);scanf(%d,%d,%d,a,b,c);max=a;if (maxb)max=b;if (maxc)max=c;printf(the largest number is %d\n,max);return 0;}第2章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用n?s流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的c程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3c语句573.3.1c语句的作用和分类573.3.2最基本的语句——赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1 #include stdio.h#include math.hint main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf(p=%f\n,p);return 0;}3-2-1#include stdio.h#include math.hint main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5);// 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。
(完整版)C语言程序设计课后习题答案
C语言程序设计(第2版)课后习题答案第一章1.请参照本章例题,编写一个C程序,输出以下信息:**************************Very good!**************************解:#include<stdio.h>void main(){printf(“**************************”);printf(“\n”);printf(“Very good!\n”);printf(“\n”);printf(“**************************”);}2.编写一个C程序,输入a、b、c三个值,输出其中最大值。
解:#include<stdio.h>void main(){int a,b,c,max;printf(“请输入三个数a,b,c:\n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(max<b) max=b;if(max<c) max=c;printf(“最大数为: %d”,max);}第二章1.假如我国国民生产总值的年增长率为10%,计算10年后我国国民生产总值与现在相比增长多少百分比。
计算公式为P=(1+r)^n,r为年增长率;n为年数;P为与现在相比的百分比。
解:#include<stdio.h>#include<math.h>void main(){double P, r=0.1, n=10;P=pow((1+r), n);printf(“%lf\n”, P);}3.请编程序将“China”译成密码,译码规律是用原来字母后面的第4个字母代替原来的字母。
例如,字母“A”后面第4个字母是“E”,“E”代替“A”。
因此,“China”应译为“Glmre”。
请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题一一、选择题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.链表就是把物理上不连续的存储块链接为逻辑上连续的存储块,每个存储块都包含一个指向下一个存储块的指针。