钱能--C++程序设计教程(第二版)第二章
- 格式:doc
- 大小:93.50 KB
- 文档页数:13
c语言程序设计教程第二版课后习题答案C语言程序设计教程第二版课后习题答案在学习编程的过程中,课后习题是检验自己理解和掌握程度的重要方式。
对于C语言程序设计教程第二版的学习者来说,课后习题的答案是必不可少的。
本文将为大家提供C语言程序设计教程第二版课后习题的答案,希望能够帮助大家更好地学习和理解C语言编程。
第一章:C语言概述1. C语言的起源可以追溯到1972年,由丹尼斯·里奇(Dennis Ritchie)在贝尔实验室开发。
2. C语言的特点包括语法简洁、执行效率高、可移植性强等。
3. C语言的应用领域广泛,包括操作系统、嵌入式系统、游戏开发等。
第二章:C语言基础1. C语言的基本数据类型包括整型、浮点型、字符型和指针型。
2. 整型数据可以分为有符号整型和无符号整型。
3. C语言中的运算符包括算术运算符、关系运算符、逻辑运算符等。
第三章:控制结构1. C语言中的控制结构包括顺序结构、选择结构和循环结构。
2. 选择结构包括if语句、switch语句等。
3. 循环结构包括while循环、do-while循环和for循环等。
第四章:数组和字符串1. 数组是一种存储相同类型数据的集合。
2. 字符串是由字符组成的字符数组。
3. C语言中的字符串处理函数包括strcpy、strcmp、strlen等。
第五章:函数1. 函数是一段完成特定任务的代码块。
2. 函数可以返回值,也可以不返回值。
3. 函数的参数可以是值传递或地址传递。
第六章:指针1. 指针是一个变量,存储的是内存地址。
2. 指针变量可以指向其他变量或函数。
3. 指针的运算包括指针的加法、减法和比较等。
第七章:结构体和共用体1. 结构体是一种自定义的数据类型,可以包含多个不同类型的成员变量。
2. 共用体是一种特殊的结构体,所有成员变量共用同一块内存空间。
3. 结构体和共用体可以嵌套使用。
第八章:文件操作1. 文件操作包括打开文件、读写文件和关闭文件等步骤。
c程序设计(第二版)C程序设计是一门基础而重要的计算机科学课程,它为学习者提供了一种高效、灵活的编程工具。
在《C程序设计(第二版)》这本书中,我们将深入探讨C语言的基本概念、语法结构、编程技巧以及实际应用。
这本书适合初学者和有一定编程基础的读者,旨在帮助他们掌握C语言编程的精髓。
第一章:C语言概述C语言是一种通用的、过程式的编程语言,由Dennis Ritchie在20世纪70年代初期开发。
它以其高效性、灵活性和广泛的应用领域而闻名。
C语言是许多现代编程语言的基石,包括C++、Java和Python等。
第二章:C语言基础本章将介绍C语言的基本元素,包括变量、数据类型、运算符和表达式。
我们还将学习如何编写简单的C程序,包括程序的结构和基本的输入输出操作。
第三章:控制结构控制结构是程序设计中的核心概念之一。
本章将介绍C语言中的三种基本控制结构:顺序结构、选择结构(if语句和switch语句)和循环结构(while循环、do-while循环和for循环)。
第四章:数组数组是存储一系列相同类型数据的集合。
本章将讨论一维数组和二维数组的声明、初始化和操作,以及如何使用数组处理更复杂的数据结构。
第五章:函数函数是C语言中实现代码复用的重要机制。
本章将介绍如何定义函数、调用函数、传递参数以及返回值的使用。
此外,还将讨论递归函数和函数指针的概念。
第六章:指针指针是C语言中一个强大的特性,它允许程序员直接操作内存地址。
本章将解释指针的基本概念,包括指针的声明、指针与数组的关系以及指针在函数中的应用。
第七章:结构体和联合体结构体和联合体是C语言中用于创建复杂数据类型的方式。
本章将介绍如何定义和使用结构体和联合体,以及它们在实际编程中的应用。
第八章:预处理器预处理器是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); // 存活期存款。
1 【C语言】《C语言程序设计教程(第二版)》习题答案说明1. 本文所指的《C语言程序设计教程(第二版)》是李凤霞主编、北京理工大学出版社出版的,绿皮。
2 第1章程序设计基础知识一、单项选择题(第23页)1-4.CBBC 5-8.DACA二、填空题(第24页)1.判断条件2.面向过程编程3.结构化4.程序5.面向对象的程序设计语言7.有穷性8.直到型循环9.算法10.可读性11.模块化12.对问题的分析和模块的划分三、应用题(第24页)2.源程序:main(){int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */printf("cock hen chick\n");for(i=1;i<=20;i++)for(j=1;j<=33;j++)for(k=1;k<=33;k++)if (i+j+k*3==100&&i*5+j*3+k==100)printf(" %d %d %d\n",i,j,k*3);}执行结果:cock hen chick4 18 788 11 8112 4 843.现计算斐波那契数列的前20项。
递推法源程序:main(){long a,b;int i;a=b=1;for(i=1;i<=10;i++) /*要计算前30项,把10改为15。
*/{printf("%8ld%8ld",a,b);a=a+b;b=b+a;}}递归法源程序:main(){int i;for(i=0;i<=19;i++)printf("%8d",fib(i));}fib(int i){return(i<=1?1:fib(i-1)+fib(i-2));}执行结果:1 123 5 8 13 21 34 5589 144 233 377 610 987 1597 2584 4181 6765 4.源程序:#include "math.h";main(){double x,x0,deltax;x=1.5;do {x0=pow(x+1,1./3);deltax=fabs(x0-x);x=x0;}while(deltax>1e-12);printf("%.10f\n",x);}执行结果:1.32471795725.源程序略。
第二章1、#include <iostream>#include <cmath>#include <iomanip>int main(){using namespace std;double sum=1.0;double x,stephan;int n=1;cout<<"Input a value:";cin>>x;stephan=x;while(abs(stephan)>1e-8){sum+=stephan;n++;stephan=(-1)*stephan*x/n;}cout<<setiosflags(ios::fixed);cout<<setprecision(8)<<sum<<endl;return 0;}or#include <iostream>#include <cmath>#include <iomanip>int main(){double sum=1.0 ,double x, stephan;cout<<"Input a value:";cin>>x;stephan=x;for(int n=2;abs(stephan)>1e-8;n++){sum+=stephan; //求和stephan*=(-1)*x/n; //每项值}cout<<setiosflags(ios::fixed)<<setprecision(8)<<sum<<endl; return 0;2、#include <iostream>using namespace std;int main(){ long value,sum;sum=0;value=1;for(int i=1;i<=12;i++){value*=i;sum+=value;}cout<<sum<<endl;return 0;}3、#include <iostream>using namespace std;int main(){int sum;int value1,value2;for(int i=1;i<=10000;i++){sum=0;value2=i;while(value2!=0){value1=value2;sum+=value1*value1*value1; value2=value2/10;}if(sum==i)cout<<i<<endl;}system("pause");return 0;4、#include <iostream>int main(){using namespace std;int sum;for(int i=1;i<=1000;i++) {sum=0;for(int j=1;j<i;j++){if(i%j==0)sum+=j;}if(sum==i)cout<<i<<endl;}system("pause");return 0;}5、#include <iostream>int main(){using namespace std;int sum,value,count;for(int i=100;i<=1000;i++) {count=0;for(int j=1;j<=i;j++) {if(i%j==0)count++;}if(count<3)value=i;sum=0;sum+=(value)*100; value=value/10;sum+=(value)*10;value=value/10;sum+=(value);if(sum==i)cout<<i<<endl;}system("pause");return 0;}6、#include <iostream>int main(){using namespace std;int num=1;for(int i=1;i<10;i++)num=(num+1)*2;cout<<"The number of peaches that the monkey picked at the first day is "<<num<<endl;system("pause");return 0;}7、#include <iostream>int main(){using namespace std;for(int i=1;i<=10;i++){for(int j=10-i;j>=1;j--)cout<<" ";for(int k=1;k<=2*i-1;k++)cout<<"%";cout<<endl;}for(int i=9;i>=1;i--){for(int j=10-i;j>=1;j--)cout<<" ";for(int k=1;k<=2*i-1;k++)cout<<"%";cout<<endl;}system("pause");return 0;}。
学习资料收集于网络,仅供参考1-1#include<iostream>using namespace std;void main(){cout<<I'm a student<<endl;}1-2#include<iostream>using namespace std;int i,j;void main(){for(i=1;i<=4;i++){for(j=1;j<=4-i;j++){cout<< ;}for(j=1;j<=2*i-1;j++){cout<<*;}cout<<endl<<endl; }for(i=1;i<=3;i++){for(j=1;j<=i;j++){cout<< ;学习资料.学习资料收集于网络,仅供参考for(j=1;j<=(7-2*i);j++){cout<<*;}cout<<endl<<endl; }}2-13#include<iostream>using namespace std;int i,j;void main(){for(i=1;i<=9;i++)cout<<i<<\ ;for(i=1;i<=9;i++)cout<<-<<\ ;cout<<endl<<endl;for(i=1;i<=9;i++) // 下三角形式{for(j=1;j<=i;j++)//{cout<<i*j<<\ ;//}cout<<endl;}cout<<endl<<endl;学习资料.学习资料收集于网络,仅供参考for(i=1;i<=9;i++) //shang三角形式cout<<\ <<i;for(i=0;i<9;i++)cout<<\ <<-;cout<<endl<<endl;for (i=1;i<=9;i++){for(j=1;j<=i;j++)cout<<\ ;for(j=i;j<=9;j++)//{cout<<i*j<<\ ;//}cout<<endl; }}3-3#include<iostream>#include<vector>#include<cmath>using namespace std;void main(){int a[11]={6,3,7,1,4,8,2,9,11,5};vector<int> ve(a,a+10);int he=0;int sum=0;学习资料.学习资料收集于网络,仅供参考float average;float s;for(int i=0;i<ve.size();i++){sum+=ve[i];}average=sum/ve.size();for( i=0;i<ve.size();i++){he+=(ve[i]-average)*(ve[i]-average);}s=sqrt(he/ve.size());cout<<s=<<s<<endl;}4-6#include<iostream>#include<fstream>#include<sstream>using namespace std;void main(){int a=0;ifstream in(D:\\aaa.txt);for(string s;getline(in,s);)for(istringstream sin(s);sin>>a;){if((a%3==0)&&(a%5==0)&&(a%7==0))挠畯?愼?能同时被3 5 7整除<<endl;else if((a%3==0)&&(a%5)&&(a%7)) 学习资料.学习资料收集于网络,仅供参考挠畯?愼?能被3整除不能被5整除也不能被7整除<<endl; else if((a%3)&&(a%5==0)&&(a%7))挠畯?愼?能被5整除不能被3整除也不能被7整除<<endl;else if((a%3)&&(a%5)&&(a%7==0))?挠畯?愼?能被7整除不能被3整除也不能被5整除<<endl;else if((a%3)&&(a%5)&&(a%7))??潣瑵??尼不能被3 5 7 任意一个整除<<endl;}}4-8#include<iostream>using namespace std;void transform(int );int n;void main() //十进制数转换为二进制数{潣瑵?输入要转换的十进制整数:<<endl;int num;cin>>num;transform(num);}void transform(int n){if (n<2)cout<<n;else if(n>=2){学习资料.学习资料收集于网络,仅供参考transform(n/2);cout<<n%2;}5-5#include<iostream>#include<fstream>#include<sstream>#include<vector>#include<algorithm>using namespace std;typedef vector<vector<int> > vii;//---------------------------------------------------------------vector<int> read(){vector<int>a;ifstream in(D:\\aaa.txt);for(string s;getline(in,s);){int c;for(istringstream sin(s);sin>>c;)a.push_back (c);}if(a.empty())cout<<NO ELement!<<endl;else<<endl; 从磁盘中读取数据输出结果是:潣瑵?for(int i=0;i<a.size();i++) 学习资料.学习资料收集于网络,仅供参考cout<<a[i]<< ; //输出读取的数据cout<<endl<<endl;return a;}//---------------------------------------------------------------int bit_twice_sum(int a){int sum=0;for(int x=a;x;x/=10)sum+=(x_x0010_)*(x_x0010_);return sum;}//-----------------------------------------------------------------------bool compare(int sum1,int sum2){return bit_twice_sum(sum1)<bit_twice_sum(sum2);}//----------------------------------------------------------------------- void insert_cout(vector<int>ve){<<endl; 请输入你想插入的数:?潣瑵? int num;cin>>num;ve.push_back(num);sort(ve.begin(),ve.end(),compare);挠畯?攼摮?尼插入数之后,再按各位数字平方之和的大小输出:<<endl;for(int i=0;i<ve.size();i++)cout<<ve[i]<< ;学习资料.学习资料收集于网络,仅供参考cout<<endl;}//-----------------------------------------------------------------------void main(){vector<int>v0=read();sort(v0.begin(),v0.end(),compare);挠畯?攼摮?尼按各位数字平方之和的大小输出:<<endl;for(int i=0;i<v0.size();i++)cout<<v0[i]<< ;cout<<endl;insert_cout(v0);//----------------------------------------------------------------------- 8-1#include<iostream>#include<cmath>using namespace std;//------------------------------------class Point{protected:double x,y; //x y 轴分量public:void set(double ix,double iy)// 设置坐标{x=ix;y=iy;}学习资料.学习资料收集于网络,仅供参考//------------------------------------------double xoffset()//取y轴坐标分量{return x;}//------------------------------------------轴坐标分量double yoffset()//取x{return y;}//----------------------------------------@ 取点的极坐标double angle()//{return (180/3.14159)*atan2(y,x);}//--------------------------------------double radius()//取点的极坐标半径{return sqrt(x*x+y*y);void Point:: add(){x+=5;y+=6;潣瑵?硜尽??攼摮?尼??礼?湥汤※}};void main(){Point p;double x,y;学习资料.学习资料收集于网络,仅供参考cout<<Enter x and y:<<endl;cin>>x>>y;p.set(x,y);潣瑵?慜杮敬尽??湡汧??攼摮?尼慲楤獵尽??慲楤獵?湥汤?硜offset=<<p.xoffset()<<endl<<y offset=<<p.yoffset()<<endl; p.add();}8-3#include<iostream>#include<iomanip>using namespace std;class Date{private:int year,month,day;public:void set(int d,int m,int y);void add();void print();};void Date::set(int d,int m,int y){year=y;month=m;day=d;void Date::add(){day=day+1;<<day<<endl; ??潣瑵?加一天之后日期是:学习资料.学习资料收集于网络,仅供参考}void Date::print(){cout<<setfill('0');cout<<setw(2)<<day<<'/'<<setw(2)<<month<<'/'<<setw(4)<<year<<en dl;//cout<<setfill(' ');}void main(){Date d1,d2;d1.set(10,4,2012);d1.print();d2.set(10,4,2012);d2.add();d2.print();}8-4/**多文件结构*///Time.cpp#includeTime.hvoid Time::set(int h,int m,int s){hour=h;minite=m;学习资料.学习资料收集于网络,仅供参考second=s;}void Time::print(){setfill('0');cout<<setw(2)<<hour<<':'<<setw(2)<<minite<<':'<<setw(2)<<second<<endl; }#includeTime.h//主函数void main(){Time t;t.set(14,47,39);t.print();}9-1#include<iostream>using namespace std;class MyClass{int number;public:MyClass();MyClass(int);~MyClass();void Display();};//--------------------------------------------------MyClass::MyClass(){cout<<Constructing normally.\n;}学习资料.学习资料收集于网络,仅供参考//------------------------------------------------------MyClass::MyClass(int m):number(m){cout<<Constructing with a number:<<number<<endl;}//-----------------------------------------------------void MyClass::Display(){cout<<Display s number:<<number<<endl;}//-----------------------------------------------------------------MyClass ::~MyClass(){cout<<Destructing.\n;}//---------------------------------------------------void main(){MyClass obj1;MyClass obj2(20);obj1.Display();obj2.Display();}//--------------------------------------------------------------- 9-3#include<iostream>using namespace std;//----------------------------class CAT{int *itsAge;public:CAT():itsAge(new int(5)){}~CAT(){delete itsAge;}学习资料.学习资料收集于网络,仅供参考int GetAge() const {return *itsAge;}void SetAge(int age){*itsAge=age;}};//-------------------------------------------void main(){CAT friskey;cout<<\n; cout<<Setting friskey to 6……friskey.SetAge(6);cout<<Creating boots from friskey\n;CAT boot(friskey);cout<<cout<<oot's age: <<boot.GetAge()<<endl; \n; cout<<setting friskey to 7……friskey.SetAge(7);cout<<cout<<oot's age: <<boot.GetAge()<<endl; }学习资料.。
c 程序设计(第2版)课后习题答案C 程序设计(第2版)是一本经典的计算机编程教材,被广泛应用于计算机科学与技术专业的教学中。
该教材的每一章都附带了一系列的习题,这些习题在巩固学生对于 C 语言的理解和掌握方面起到了重要的作用。
然而,很多学生在自学或者课后复习的过程中常常会遇到习题解答的困扰。
因此,本文将为大家提供一些 C 程序设计(第2版)课后习题的答案,希望能够对大家的学习有所帮助。
第一章:C 程序设计概述1.1 习题解答:1) C 程序设计的特点包括高效性、可移植性、灵活性和可扩展性。
2) C 程序设计的基本结构包括预处理指令、函数定义和主函数。
3) C 程序设计的编译过程包括预处理、编译、汇编和链接四个阶段。
第二章:C 语言基础2.1 习题解答:1) C 语言中的标识符是指用于标识变量、函数、数组等各种程序实体的名称。
标识符的命名规则包括:只能由字母、数字和下划线组成,且不能以数字开头;不能使用 C 语言的关键字作为标识符;标识符区分大小写。
2) C 语言中的常量是指在程序中直接使用的固定值,包括整型常量、实型常量、字符常量和字符串常量。
3) C 语言中的变量是指用于存储数据的内存空间,包括整型变量、实型变量、字符变量和字符串变量。
第三章:运算符和表达式3.1 习题解答:1) C 语言中的算术运算符包括加法运算符(+)、减法运算符(-)、乘法运算符(*)、除法运算符(/)和取模运算符(%)等。
2) C 语言中的关系运算符包括大于运算符(>)、小于运算符(<)、等于运算符(==)、不等于运算符(!=)等。
3) C 语言中的逻辑运算符包括与运算符(&&)、或运算符(||)和非运算符(!)等。
第四章:选择结构4.1 习题解答:1) C 语言中的 if 语句用于实现单一条件的判断,格式为:if (条件表达式) {语句块}。
2) C 语言中的 if-else 语句用于实现两个条件的判断,格式为:if (条件表达式) {语句块1} else {语句块2}。
本人在大连理工大学读研需要C++,以前只学过C,根据网评,找了国内的钱能老师写的《c++程序设计教程(第二版)》,书上的例子比较不错,但是在网上一直没有下到完整的包括例子和习题的解答,于是我就突发奇想,一方面也是督促自己学习C++,想把书上和习题上的所有编程题目的答案都写出来,供正在学习C++的同学参考。
现在看到第二章,以后会经常的更新答案,我也是新手,可能在编程风格和思路上有待提高,也有一些题目不知道该如何下手,路过的朋友知道的可以告诉我,我的邮箱是*******************,可以督促我继续写以后的答案。
第二章第一部分(例题)//2.1.1--1 球表面积#include<iostream>using namespace std;int main(){double radius;cout<<"please input the radius:"<<endl;cin>>radius;double result=radius*radius*3.14*4;cout<<"the result is :"<<result<<endl;}//2.1.2—球表面积函数实现#include<iostream>using namespace std;void mianji();int main(){mianji();}void mianji(){double r;cout<<"please input the radius:"<<endl;cin>>r;if(r<0) return;cout<<"the result is :"<<r*r*3.14*4<<endl; }//2.4.1—梯形M#include<iostream>using namespace std;int main(){for(int i=1;i<=10;i++){for(int j=1;j<=i;j++)cout<<"M";cout<<endl;}}//2.41--例2-2倒三角M#include<iostream>using namespace std;int main(){for(int i=1;i<=10;++i){for(int j=0;j<i-1;++j)cout<<" ";for(int j=2*(10-i)+1;j>0;j--)cout<<"M";cout<<endl;}}//2.41--例2-3正三角字母//省略部分和不省略部分都能执行,一个是数字判断,一个是字母判断。
c程序设计第二版习题答案C程序设计第二版习题答案第一章:C语言概述1. 描述C语言的特点。
- C语言是一种结构化编程语言,以其高效性、灵活性和可移植性而闻名。
它支持过程式编程和低级内存操作,适合编写系统软件、操作系统和嵌入式系统。
2. 解释C语言的编译过程。
- C语言的编译过程通常包括预处理、编译、汇编和链接四个步骤。
预处理阶段处理宏定义和条件编译指令,编译阶段将源代码转换为汇编代码,汇编阶段将汇编代码转换为目标代码,链接阶段将目标代码与库函数链接生成可执行文件。
第二章:数据类型、运算符和表达式1. 列举C语言的基本数据类型。
- C语言的基本数据类型包括整型(int)、字符型(char)、浮点型(float和double)以及枚举型(enum)。
2. 说明赋值运算符的用法。
- 赋值运算符(=)用于将一个值赋给一个变量。
例如,`a = 5;`表示将整数5赋给变量a。
第三章:控制语句1. 描述if语句的语法结构。
- if语句的基本语法是:`if (条件) { 语句; }`。
如果条件为真,则执行花括号内的语句。
2. 解释while循环的工作原理。
- while循环在每次迭代之前都会检查条件是否为真。
如果条件为真,循环体内的语句将被执行,然后再次检查条件。
这个过程会一直重复,直到条件为假。
第四章:函数1. 函数的定义和声明。
- 函数定义是创建函数的主体,包括函数名、参数列表和函数体。
函数声明是告诉编译器函数的原型,包括函数名、返回类型和参数列表。
2. 函数的调用过程。
- 函数调用包括函数名和参数列表。
调用时,实际参数的值将传递给形式参数,函数执行完毕后,返回值(如果有的话)将返回给调用者。
第五章:数组和指针1. 数组的基本概念。
- 数组是一种数据结构,可以存储固定大小的同类型元素的集合。
数组的元素可以通过索引访问。
2. 指针的用途。
- 指针用于存储内存地址,可以直接操作内存。
指针可以指向基本数据类型、数组、结构体等。
c 语言程序设计教程第二版课后习题答案C语言程序设计教程第二版课后习题答案在学习C语言程序设计的过程中,课后习题是巩固知识、提高编程能力的重要环节。
本文将为大家总结C语言程序设计教程第二版课后习题的答案,希望对大家的学习有所帮助。
第一章课后习题答案1.1 编写一个C程序,输出"Hello, World!"。
```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```1.2 编写一个C程序,计算并输出5的阶乘。
```c#include <stdio.h>int main() {int i, fact = 1;for (i = 1; i <= 5; i++) {fact *= i;}printf("5的阶乘为%d\n", fact);return 0;}```1.3 编写一个C程序,输入一个整数n,计算并输出1到n的和。
```c#include <stdio.h>int main() {int n, sum = 0, i;printf("请输入一个整数:");scanf("%d", &n);for (i = 1; i <= n; i++) {sum += i;}printf("1到%d的和为%d\n", n, sum);return 0;}```第二章课后习题答案2.1 编写一个C程序,输入一个整数n,计算并输出n的平方。
```c#include <stdio.h>int main() {int n;printf("请输入一个整数:");scanf("%d", &n);printf("%d的平方为%d\n", n, n * n);return 0;}```2.2 编写一个C程序,输入一个整数n,判断并输出n是奇数还是偶数。
本人在大连理工大学读研需要C++,以前只学过C,根据网评,找了国内的钱能老师写的《c++程序设计教程(第二版)》,书上的例子比较不错,但是在网上一直没有下到完整的包括例子和习题的解答,于是我就突发奇想,一方面也是督促自己学习C++,想把书上和习题上的所有编程题目的答案都写出来,供正在学习C++的同学参考。
现在看到第二章,以后会经常的更新答案,我也是新手,可能在编程风格和思路上有待提高,也有一些题目不知道该如何下手,路过的朋友知道的可以告诉我,我的邮箱是*******************,可以督促我继续写以后的答案。
第二章第一部分(例题)//2.1.1--1 球表面积#include<iostream>using namespace std;int main(){double radius;cout<<"please input the radius:"<<endl;cin>>radius;double result=radius*radius*3.14*4;cout<<"the result is :"<<result<<endl;}//2.1.2—球表面积函数实现#include<iostream>using namespace std;void mianji();int main(){mianji();}void mianji(){double r;cout<<"please input the radius:"<<endl;cin>>r;if(r<0) return;cout<<"the result is :"<<r*r*3.14*4<<endl; }//2.4.1—梯形M#include<iostream>using namespace std;int main(){for(int i=1;i<=10;i++){for(int j=1;j<=i;j++)cout<<"M";cout<<endl;}}//2.41--例2-2倒三角M#include<iostream>using namespace std;int main(){for(int i=1;i<=10;++i){for(int j=0;j<i-1;++j)cout<<" ";for(int j=2*(10-i)+1;j>0;j--)cout<<"M";cout<<endl;}}//2.41--例2-3正三角字母//省略部分和不省略部分都能执行,一个是数字判断,一个是字母判断。
#include<iostream>using namespace std;int main(){for(int i=1;i<=10;++i){for(int j=0;j<=10-i;++j)cout<<" ";// for(int j=1;j<=2*i-1;++j)// {// char ch='A'-1+j;// cout<<ch;// }for(char j='A';j-'A'<2*i-1;++j)cout<<j;cout<<endl;}}//2.42—素数判定1#include<iostream>using namespace std;int main(){int number;cout<<"please input a number:"<<endl;cin>>number;for(int i=2;i<number;++i){if(number%i==0){cout<<"this number is not a prime"<<endl;return 1;}}cout<<"this number is a prime"<<endl;}//2.4.2—素数判定2#include<iostream>#include<cmath>using namespace std;int main(){cout<<"please input a number:"<<endl;int number;cin>>number;double a=sqrt(number*1.0);for(int i=2;i<a;++i){if(number%i==0){cout<<"this number is not a prime"<<endl;return 1;}}cout<<"this number is a prime"<<endl;}//2.5.2—输出流控制—倒三角M#include<iostream>#include<iomanip>using namespace std;int main(){for(int i=9;i>0;i--){cout<<setw(10-i)<<setfill(' ')<<" ";cout<<setw(2*i-1)<<setfill('M')<<'M'<<endl;}}//2.5.2—输出流控制—string版本—倒三角M#include<iostream>#include<string>using namespace std;int main(){for(int i=0;i<10;++i)cout<<string(i,' ')+string(2*10-1-2*i,'M')<<endl;}//2.5.3—文件流复制#include<fstream>#include<iostream>#include<string>using namespace std;int main(){ifstream fin("original.txt");ofstream fout("copy.txt");for(string str;getline(fin,str);)fout<<str<<endl;}//2.5.3—文件流+素数判断#include<iostream>#include<fstream>#include<vector>using namespace std;int main(){vector<int> prime(10000,1);for(int i=2;i<10000;++i){if(prime[i]){for(int j=i;j*i<10000;j++)prime[i*j]=0;}}ifstream in("original.txt");for(int a;in>>a&&a>1&&a<10000;)cout<<a<<" is "<<(prime[a]?"":" not ")<<"a prime."<<endl; }//2.7.1—百钱买百鸡+文件流#include<iostream>#include<fstream>using namespace std;int main(){ofstream fout("original.txt");fout<<"百钱买百鸡问题"<<endl;for(int i=1;i<=100/7;i++)for(int j=1;j<=(100-i*7)/5;j++)for(int k=1;k<98;k++){if(k%3!=0) continue;if(i+j+k==100&&i*7+j*5+k/3==100)fout<<"coocks:"<<i<<","<<"hens:"<<j<<","<<"chicks:"<<k<<endl;}}//2.7.2—函数逼近π#include<iostream>#include<cmath>using namespace std;int main(){double s=0,item=1;for(int i=1,sign=1;abs(item)>1e-6;i+=2,sign*=-1){item=sign/double(i);s+=item;}cout<<s*4<<endl;}第二部分//1—函数逼近—方法1#include<iostream>#include<cmath>using namespace std;int main(){cout<<"please input a number:"<<endl;double x,s=1,item=1;cin>>x;s+=x;//解决首项问题for(int i=1,sign=-1,p=1;abs(item)>1e-8;i++,sign*=-1) //p是记录分母阶乘{x*=x; //x各阶p*=(p+1);item=sign*x/double(p);s+=item;}cout<<"the result is "<<s<<endl;}//1—函数逼近—方法2—少了几行,看不看都行。