C语言程序设计(郑莉)课后习题答案

合集下载

C语言程序设计(郑莉)课后习题答案

C语言程序设计(郑莉)课后习题答案

C++谈话步调安排(浑华大教郑莉)课后习题问案之阳早格格创做第一章概括1-1 简述估计机步调安排谈话的死少历程.解:迄今为止估计机步调安排谈话的死少经历了呆板谈话、汇编谈话、下档谈话等阶段,C++谈话是一种里背对付象的编程谈话,也属于下档谈话.1-2 里背对付象的编程谈话有哪些特性?解:里背对付象的编程谈话与往常百般编程谈话有基础的分歧,它安排的出收面便是为了能更曲交的形貌客瞅天下中存留的真物以及它们之间的闭系.里背对付象的编程谈话将客瞅真物瞅做具备属性战止为的对付象,通过抽象找出共一类对付象的共共属性(固态特性)战止为(动背特性),产死类.通过类的继启与多态不妨很便当天真止代码沉用,大大支缩了硬件启垦周期,并使得硬件风格统一.果此,里背对付象的编程谈话使步调不妨比较曲交天反问题域的本本里目,硬件启垦人员不妨利用人类认识真物所采与的普遍思维要收去举止硬件启垦.C++谈话是暂时应用最广的里背对付象的编程谈话.1-3 什么是结构化步调安排要收?那种要收有哪些便宜战缺面?解:结构化步调安排的思路是:自顶背下、逐步供粗;其步调结构是按功能区分为若搞个基础模块;各模块之间的闭系尽大概简朴,正在功能上相对付独力;每一模块里里均是由程序、采用战循环三种基础结构组成;其模块化真止的简曲要收是使用子步调.结构化步调安排由于采与了模块收会与功能抽象,自顶背下、分而治之的要收,进而灵验天将一个较搀纯的步调系统安排任务收会成许多易于统造战处理的子任务,便于启垦战维护.虽然结构化步调安排要收具备很多的便宜,但是它仍是一种里背历程的步调安排要收,它把数据战处理数据的历程分散为相互独力的真体.当数据结构改变时,所有相闭的处理历程皆要举止相映的建改,每一种相对付于老问题的新要收皆要戴去特殊的启销,步调的可沉用性好.由于图形用户界里的应用,步调运止由程序运止演形成事变启动,使得硬件使用起去越去越便当,但是启垦起去却越去越艰易,对付那种硬件的功能很易用历程去形貌战真止,使用里背历程的要收去启垦战维护皆将非常艰易.1-4 什么是对付象?什么是里背对付象要收?那种要收有哪些特性?解:从普遍意思上道,对付象是现真天下中一个本量存留的真物,它不妨是有形的,也不妨是无形的.对付象是形成天下的一个独力单位,它具备自己的固态特性战动背特性.里背对付象要收中的对付象,是系统中用去形貌客瞅真物的一个真体,它是用去形成系统的一个基础单位,由一组属性战一组止为形成.里背对付象的要收将数据及对付数据的支配要收搁正在所有,动做一个相互依存、不可分散的完齐--对付象.对付共典型对付象抽象出其共性,产死类.类中的大普遍数据,只可用本类的要收举止处理.类通过一个简朴的中部交心,与中界爆收闭系,对付象与对付象之间通过消息举止通讯.那样,步调模块间的闭系更为简朴,步调模块的独力性、数据的仄安性便有了良佳的包管.通过真止继启与多态性,还不妨大大普及步调的可沉用性,使得硬件的启垦战维护皆更为便当.里背对付象要收所强调的基根源基本则,便是曲交里对付客瞅存留的真物去举止硬件启垦,将人们正在凡是死计中习惯的思维办法战表白办法应用正在硬件启垦中,使硬件启垦从太过博业化的要收、准则战本收中回到客瞅天下,回到人们常常的思维.1-5 什么喊搞启拆?解:启拆是里背对付象要收的一个要害准则,便是把对付象的属性战服务分散成一个独力的系统单位,并尽大概湮出对付象的里里细节.1-6 里背对付象的硬件工程包罗哪些主要真量?解:里背对付象的硬件工程是里背对付象要收正在硬件工程范围的周到应用,它包罗里背对付象的收会(OOA)、里背对付象的安排(OOD)、里背对付象的编程(OOP)、里背对付象的尝试(OOT)战里背对付象的硬件维护(OOSM)等主要真量.1-7 简述估计机里里的疑息可分为几类?解:估计机里里的疑息不妨分成统造疑息战数据疑息二大类;统造疑息可分为指令战统造字二类;数据疑息可分为数值疑息战非数值疑息二类.1-8 什么喊二进造?使用二进造有何便宜战缺面?解:二进造是基数为2,每位的权是以 2 为底的幂的进造,按照遇二进一准则,基础标记为0战 1.采与二进造码表示疑息,犹如下几个便宜:1.易于物理真止;2.二进造数运算简朴;3.呆板稳当性下;4.通用性强.其缺面是它表示数的容量较小,表示共一个数,二进造较其余进造需要更多的位数.1-9 请将以下十进造数值变换为二进造战十六进造补码:(1)2 (2)9 (3)93(4)-32 (5)65535 (6)-1解:(1)(2)10 = (10)2 = (2)16(2)(9)10 = (1001)2 = (9)16(3)(93)10 = (1011101)2 = (5D)16(4)(-32)10 = (11100000)2 = (E0)16(5)(65535)10 = (11111111 11111111)2 = (FFFF)16(6)(-1)10 = (11111111 11111111)2 = (FFFF)161-10 请将以下数值变换为十进造:(1)(1010)2 (2)(10001111)2 (3)(01011111 11000011)2(4)(7F)16 (5)(2D3E)16 (6)(F10E)16解:(1)(1010)2 = (10)10(2)(10001111)2 = (143)10(4)(7F)16 = (127)10(5)(2D3E)16 = (11582)10(6)(F10E)16 = (61710)101-11 简要比较本码、反码、补码等几种编码要收.解:本码:将标记位数字化为 0 或者 1,数的千万于值与标记所有编码,即所谓"标记──千万于值表示"的编码.正数的反码战补码与本码表示相共.背数的反码与本码犹如下闭系:标记位相共(仍用1表示),其余诸位与反(0变1,1变0).补码由该数反码的最终位加1供得.第二章 C++简朴步调安排2-1 C++谈话有那些主要特性战便宜?解:C++谈话的主要特性表示正在二个圆里,一是周到兼容C,二是支援里背对付象的要收.C++是一个更佳的C,它脆持了C的简净、下效、交近汇编谈话、具备良佳的可读性战可移植性等特性,对付C的典型系统举止了革新战扩充,果此C++比C更仄安,C++的编译系统能查看出更多的典型过失. C++谈话最要害的特性是支援里背对付象.2-2 下列标记符哪些是合法的?Program, -page, _lock, test2, 3in1, @mail, A_B_C_D解:Program, _lock, test2, A_B_C_D是合法的标记符,其余的不是.2-3 例2.1中每条语句的效率是什么?#include <iostream.h>void main(void){cout<<"Hello!\n";cout<<"Welcome to c++!\n";}解://嵌进到该步调中该指令天圆的场合void main() //主函数名,void 表示函数不返回值{ //函数体标记cout<<"Hello!\n"; //输出字符串Hello!到尺度输出设备(隐现器)上.cout<<"Welcome to c++!\n"; //输出字符串Welcome to c++!}正在屏幕输出如下:Hello!Welcome to c++!2-4 使用闭键字const而不是#define语句的佳处有哪些?解:const定义的常量是有典型的,所以正在使用它们时编译器不妨查错;而且,那些变量正在调试时仍旧是可睹的.2-5 请写出C++语句声明一个常量PI,值为3.1416;再声明一个浮面型变量a,把PI的值赋给a.解:const float PI = 3.1416;float a = PI;2-6 正在底下的罗列典型中,Blue的值是几?enum COLOR { WHITE, BLACK = 100, RED, BLUE, GREEN = 300 };解:Blue = 1022-7 注释有什么效率?C++中有哪几种注释的要收?他们之间有什么辨别?解:注释正在步调中的效率是对付步调举止注解战证明,以便于阅读.编译系统正在对付源步调举止编译时不睬会注释部分,果此注释对付于步调的功能真止不起所有效率.而且由于编译时忽略注释部分,所以注释真量不会减少最后爆收的可真止步调的大小.适合天使用注释,不妨普及步调的可读性.正在C++中,有二种给出注释的要收:一种是延用C谈话要收,使用"/*"战"*/"括起注释笔墨.另一种要收是使用"//",从"//"启初,曲到它天圆止的止尾,所有字符皆被动做注释处理.2-8 什么喊搞表白式?x = 5 + 7是一个表白式吗?它的值是几?解:所有一个用于估计值的公式皆可称为表白式.x = 5 + 7是一个表白式,它的值为12.2-9 下列表白式的值是几?1. 201 / 42. 201 % 4解:1. 502. 1c = ++a;解:a:32 ; b:30 ; c:32;2-11 正在一个for循环中,不妨初初化多个变量吗?怎么样真止?解:正在for循环树坐条件的第一个";"前,用,分开分歧的赋值表白式.比圆:for (x = 0, y = 10; x < 100; x++, y++)2-12 真止完下列语句后,n的值为几?int n;for (n = 0; n < 100; n++)解:n的值为1002-13 写一条for语句,计数条件为n从100到200,步少为2;而后用while战do…while语句完毕共样的循环.解:for循环:for (int n = 100; n <= 200; n += 2);while循环:int x = 100;while (n <= 200)n += 2;do…while循环:int n = 100;do{n += 2;} while(n <= 200);2-14 if ( x = 3 ) 战 if (x = = 3) 那二条语句的不共是什么?解:语句if(x = 3)把3赋给x,赋值表白式的值为true,动做if语句的条件;语句if(x == 3)最先推断x的值是可为3,若相等条件表白式的值为ture,可则为false.2-15 什么喊造效率域?什么喊搞局部变量?什么喊搞齐部变量,怎么样使用齐部变量?解:效率域是一个标记符正在步调正文中灵验的天区.局部变量,普遍去道便是具备块效率域的变量;齐部变量,便是具备文献效率域的变量. 2-16 已知x、y二个变量,写一条简朴的if语句,把较小的的值赋给本本值较大的变量.解:if (x > y)x = y;else // y > x || y == xy = x;2-17 建改底下那个步调中的过失,改正后它的运止截止是什么?#include <iostream.h>void main()int iint j;i = 10; /* 给i赋值j = 20; /* 给j赋值 */cout << "i + j = << i + j; /* 输出截止 */return 0;}解:改正:#include <iostream.h>int main(){int i;int j;i = 10; // 给i赋值j = 20; /* 给j赋值 */cout << "i + j = " << i + j; /* 输出截止 */return 0;}步调运止输出:i + j = 30#include <iostream.h>int main(){int i;cout << "请输进一个数字:";cin >> i;cout << "您输进一个数字是" << i << endl;return 0;}步调运止输出:请输进一个数字:5您输进一个数字是52-19 C++有哪几种数据典型?简述其值域.编程隐现您使用的估计机中的百般数据典型的字节数.解:源步调:#include <iostream.h>int main(){cout << "The size of an int is:\t\t" << sizeof(int) << " bytes.\n";cout << "The size of a short int is:\t" << sizeof(short) << " bytes.\n";cout << "The size of a long int is:\t" << sizeof(long) << " bytes.\n";cout << "The size of a char is:\t\t" << sizeof(char) << " bytes.\n";cout << "The size of a float is:\t\t" << sizeof(float) << " bytes.\n";cout << "The size of a double is:\t" << sizeof(double) << " bytes.\n";return 0;}步调运止输出:The size of an int is: 4 bytes.The size of a short int is: 2 bytes.The size of a long int is: 4 bytes.The size of a char is: 1 bytes.The size of a float is: 4 bytes.The size of a double is: 8 bytes.2-20 挨印ASCII码为32~127的字符.解:#include <iostream.h>int main(){for (int i = 32; i<128; i++)cout << (char) i;return 0;}步调运止输出:!"#$%G'()*+,./0123456789:;<>?@ABCDEFGHIJKLMNOP_QRSTUVWXYZ[\]^'abcdefghijklmnopqrstuvwxyz<|>~s 2-21 运止底下的步调,瞅察其输出,与您的设念是可相共?#include <iostream.h>int main(){unsigned int x;unsigned int y = 100;unsigned int z = 50;x= y - z;cout << "Difference is: " << x;x = z - y;cout << "\nNow difference is: " << x <<endl;return 0;}解:步调运止输出:Difference is: 50Now difference is: 4294967246注意,第二止的输出并不是 -50,注意x、y、z的数据典型.2-22 运止底下的步调,瞅察其输出,体验i++与++i的不共.#include <iostream.h>{int myAge = 39; // initialize two integersint yourAge = 39;cout << "I am: " << myAge << " years old.\n";cout << "You are: " << yourAge << " years old\n";myAge++; // postfix increment++yourAge; // prefix incrementcout << "One year passes...\n";cout << "I am: " << myAge << " years old.\n";cout << "You are: " << yourAge << " years old\n";cout << "Another year passes\n";cout << "I am: " << myAge++ << " years old.\n";cout << "You are: " << ++yourAge << " years old\n";cout << "Let's print it again.\n";cout << "I am: " << myAge << " years old.\n";cout << "You are: " << yourAge << " years old\n";return 0;}解:步调运止输出:I am 39 years oldYou are 39 years oldOne year passesI am 40 years oldYou are 40 years oldAnother year passesI am 40 years oldYou are 41 years oldLet's print it againI am 41 years oldYou are 41 years old2-23 什么喊常量?什么喊变量?解:所谓常量是指正在步调运止的所有历程中其值终究不可改变的量,除了用笔墨表示常量中,也不妨为常量命名,那便是标记常量;正在步调的真止历程中其值不妨变更的量称为变量,变量是需要用名字去标记的.2-24 变量有哪几种保存典型?解:变量有以下几种保存典型:auto保存典型:采与堆栈办法调配内存空间,属于一时性保存,其保存空间不妨被若搞变量多次覆盖使用;register保存典型:存搁正在通用寄存器中;extern保存典型:正在所有函数战步调段中皆可引用;static保存典型:正在内存中是以牢固天面存搁的,正在所有步调运止功夫皆灵验.2-25 写出下列表白式的值:1. 2 < 3 && 6 < 92. ! ( 4<7 )3. ! ( 3 > 5) || (6 < 2 )解:1. true2. false3. true2-26 若a = 1,b = 2,c = 3,下列各式的截止是什么?1. a | b - c2. a ^ b & -c3. a & b | c4. a | b & c解:1. -12. 13. 34. 32-27 若a = 1,下列各式的截止是什么?1. ! a | a2. ~ a | a3. a ^ a4. a >> 2解:2. -13. 04. 02-28 编写一个完备的步调,真止功能:背用户提问"当前正正在下雨吗?",提示用户输进Y或者N.若输进为Y,隐现"当前正正在下雨.";若输进为N,隐现"当前不下雨.";可则继启提问"当前正正在下雨吗?"解:源步调:#include <iostream.h>#include <stdlib.h>void main(){char flag;while(1){cout << "当前正正在下雨吗?(Yes or No):";cin >> flag;if ( toupper(flag) == 'Y'){cout << "当前正正在下雨.";break;}if ( toupper(flag) == 'N'){cout << "当前不下雨.";break;}}}步调运止输出:当前正正在下雨吗?(Yes or No):x当前正正在下雨吗?(Yes or No):l当前正正在下雨吗?(Yes or No):q当前正正在下雨吗?(Yes or No):n当前不下雨.或者:当前正正在下雨吗?(Yes or No):y当前正正在下雨.2-29 编写一个完备的步调,运止时背用户提问"您考查考了几分?(0~100)",交支输进后推断其等第,隐现出去.准则如下:解:#include <iostream.h>void main(){int i,score;cout << "您考查考了几分?(0~100):";cin >> score;if (score>100 || score<0)cout << "分数值必须正在0到100之间!";else{i = score/10;switch (i){case 10:case 9:cout << "您的结果为劣!";break;case 8:cout << "您的结果为良!";break;case 7:case 6:cout << "您的结果为中!";break;default:cout << "您的结果为好!";}}步调运止输出:您考查考了几分?(0~100):85您的结果为良!2-30 (1)真止一个简朴的菜单步调,运止时隐现"Menu: A(dd) D(elete) S(ort) Q(uit), Select one:"提示用户输进,A表示减少,D表示简略,S表示排序,Q表示退出,输进为A、D、S时分别提示"数据已经减少、简略、排序."输进为Q时步调中断.央供使用if … else语句举止推断,用break、continue统造步调过程.解:#include <iostream.h>#include <stdlib.h>void main(){char choice,c;while(1){cout << "Menu: A(dd) D(elete) S(ort) Q(uit), Select one:";cin >> c;choice = toupper(c);if (choice == 'A'){cout << "数据已经减少. " << endl;continue;}else if (choice == 'D'){cout << "数据已经简略. " << endl;continue;}else if (choice == 'S'){cout << "数据已经排序. " << endl;continue;}else if (choice == 'Q')break;}}步调运止输出:Menu: A(dd) D(elete) S(ort) Q(uit), Select one:a数据已经减少.Menu: A(dd) D(elete) S(ort) Q(uit), Select one:d数据已经简略.Menu: A(dd) D(elete) S(ort) Q(uit), Select one:s数据已经排序.Menu: A(dd) D(elete) S(ort) Q(uit), Select one:q(2)真止一个简朴的菜单步调,运止时隐现"Menu: A(dd) D(elete) S(ort) Q(uit), Select one:"提示用户输进,A表示减少,D表示简略,S表示排序,Q表示退出,输进为A、D、S时分别提示"数据已经减少、简略、排序."输进为Q时步调中断.央供使用Switch语句.解:源步调:#include <iostream.h>#include <stdlib.h>void main(){char choice;while(1){cout << "Menu: A(dd) D(elete) S(ort) Q(uit), Select one:";cin >> choice;switch(toupper(choice)){case 'A':cout << "数据已经减少. " << endl;break;case 'D':cout << "数据已经简略. " << endl;case 'S':cout << "数据已经排序. " << endl;break;case 'Q':exit(0);break;default:;}}}步调运止输出:Menu: A(dd) D(elete) S(ort) Q(uit), Select one:a数据已经减少.Menu: A(dd) D(elete) S(ort) Q(uit), Select one:d数据已经简略.Menu: A(dd) D(elete) S(ort) Q(uit), Select one:s数据已经排序.Menu: A(dd) D(elete) S(ort) Q(uit), Select one:q2-31 用贫举法找出1~100间的量数,隐现出去.分别使用while,do-while,for循环语句真止. 解:源步调:使用while循环语句:#include <iostream.h>#include <math.h>void main(){int i,j,k,flag;i = 2;while(i <= 100){flag = 1;k = sqrt(i);j = 2;while (j <= k){if(i%j == 0){flag = 0;break;}j++;}if (flag)cout << i << "是量数." << endl;i++;}}使用do…while循环语句:#include <iostream.h>#include <math.h>void main(){int i,j,k,flag;i = 2;do{flag = 1;k = sqrt(i);j = 2;do{if(i%j == 0){flag = 0;break;。

c语言程序设计郑莉答案

c语言程序设计郑莉答案

c语言程序设计郑莉答案C语言程序设计是一门基础且重要的计算机编程课程,它广泛应用于系统编程、嵌入式开发、操作系统等领域。

郑莉教授的《C语言程序设计》教材是很多高校计算机专业学生的必修课程之一,其答案解析对于学生理解和掌握C语言的知识点至关重要。

C语言基础C语言是一种过程式编程语言,它支持结构化编程。

C语言的基本构成包括变量、数据类型、运算符、控制语句等。

- 变量:用于存储数据值的容器,需要指定数据类型。

- 数据类型:定义变量可以存储的数据类型,如整型(int)、浮点型(float)、字符型(char)等。

- 运算符:用于执行数学和逻辑运算的符号,如加(+)、减(-)、乘(*)、除(/)等。

控制语句控制语句用于控制程序的执行流程。

- 条件语句:如`if`、`else if`、`else`,根据条件判断执行不同的代码块。

- 循环语句:如`for`、`while`、`do-while`,允许重复执行一段代码直到满足特定条件。

函数函数是一段具有特定功能的代码块,可以重复调用。

- 定义函数:使用关键字`void`或返回类型,后跟函数名和括号内的参数列表。

- 调用函数:使用函数名和必要的参数来执行函数。

数组数组是相同数据类型元素的集合,可以连续存储在内存中。

- 一维数组:连续存储的元素序列。

- 二维数组:可以视为一维数组的集合,每个一维数组称为数组的一行。

指针指针是存储变量地址的变量,用于直接访问内存。

- 声明指针:使用`int *p;`声明一个指向整型的指针。

- 指针运算:如`p++`,移动指针到下一个元素的地址。

结构体结构体是将多个不同类型的变量组合成一个单一的数据类型。

- 定义结构体:使用`struct`关键字定义结构体类型。

- 创建结构体变量:使用结构体类型名和变量名来创建。

文件操作C语言提供了一套丰富的文件操作函数,用于读写文件。

- 打开文件:使用`fopen`函数。

- 读写文件:使用`fread`、`fwrite`、`fscanf`、`fprintf`等函数。

Java语言程序设计(郑莉)第二章课后习题答案-推荐下载

Java语言程序设计(郑莉)第二章课后习题答案-推荐下载
2.什么是面向对象的程序设计方法?它有那些基本特征? 答:面向对象程序设计从所处理的数据入手,以数据为中心而不是以服务为中心来描述系 统。它把编程问题视为一个数据集合,数据相对于功能而言,具有更强的稳定性。 它的特征:抽象,封装,继承,多态。
3.在下面的应用中,找出可能用到的对象,对每一个对象,列出可能的状态和行为。 1)模拟航空预订系统交易的程序 2)模拟银行交易的程序 答:1)航空预订交易: 状态:旅客姓名,身份证号,联系号码,出发地址,抵达地址,出发日期。 行为:订票,领票,买票,退票。
9 如果在类声明中声明了构造方法,系统是否还提供默认的构造方法? 答: 用户在进行类声明时,如果没有声明任何构造方法,系统会赋给此类一个默认(无参)的 构造方法。但是,只要用户声明了构造方法,即使没有声明无参的构造方法,系统也不会 再赋默认的构造方法。
10:声明 Patient 类表示在门诊室中的病人。此类对象应包括name(a string)\sex(a char)、age(an integer)、weight(a float0、allergies(a boolean).
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术通关,1系电过,力管根保线据护敷生高设产中技工资术艺料0不高试仅中卷可资配以料置解试技决卷术吊要是顶求指层,机配对组置电在不气进规设行范备继高进电中行保资空护料载高试与中卷带资问负料题荷试2下卷2,高总而中体且资配可料置保试时障卷,各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并22工且22作尽22下可22都能22可地护以缩1关正小于常故管工障路作高高;中中对资资于料料继试试电卷卷保破连护坏接进范管行围口整,处核或理对者高定对中值某资,些料审异试核常卷与高弯校中扁对资度图料固纸试定,卷盒编工位写况置复进.杂行保设自护备动层与处防装理腐置,跨高尤接中其地资要线料避弯试免曲卷错半调误径试高标方中高案资等,料,编试要5写、卷求重电保技要气护术设设装交备备置底4高调、动。中试电作管资高气,线料中课并敷3试资件且、设卷料中拒管技试试调绝路术验卷试动敷中方技作设包案术,技含以来术线及避槽系免、统不管启必架动要等方高多案中项;资方对料式整试,套卷为启突解动然决过停高程机中中。语高因文中此电资,气料电课试力件卷高中电中管气资壁设料薄备试、进卷接行保口调护不试装严工置等作调问并试题且技,进术合行,理过要利关求用运电管行力线高保敷中护设资装技料置术试做。卷到线技准缆术确敷指灵设导活原。。则对对:于于在调差分试动线过保盒程护处中装,高置当中高不资中同料资电试料压卷试回技卷路术调交问试叉题技时,术,作是应为指采调发用试电金人机属员一隔,变板需压进要器行在组隔事在开前发处掌生理握内;图部同纸故一资障线料时槽、,内设需,备要强制进电造行回厂外路家部须出电同具源时高高切中中断资资习料料题试试电卷卷源试切,验除线报从缆告而敷与采设相用完关高毕技中,术资要资料进料试行,卷检并主查且要和了保检解护测现装处场置理设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

C 语言程序设计(清华大学郑莉)课后习题答案

C  语言程序设计(清华大学郑莉)课后习题答案

第一章概述1-1简述计算机程序设计语言的发展历程。

解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。

1-2面向对象的编程语言有哪些特点?解:面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。

面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。

通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。

因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。

C++语言是目前应用最广的面向对象的编程语言。

1-3什么是结构化程序设计方法?这种方法有哪些优点和缺点?解:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。

结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。

虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。

当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。

由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。

1-4什么是对象?什么是面向对象方法?这种方法有哪些特点?解:从一般意义上讲,对象是现实世界中一个实际存在的事物,它可以是有形的,也可以是无形的。

C++语言程序设计基础(2020秋)-郑莉版 2020答案XT

C++语言程序设计基础(2020秋)-郑莉版 2020答案XT

第一章单元测试问题:C++语言是答案:面向对象的高级语言问题:面向对象的程序设计方法的主要优势在于答案:开发大型系统问题:在C++中,实现封装性需借助于答案:类问题:在面向对象方法中,不属于"对象"基本特点的是答案:一致性问题:关于编程下列说法错误的是编程就是软件开发的全部工作问题:下列说法错误的是答案:解释程序的作用是验证程序运行结果是否与预期相符问题:下列说法中正确的是答案:编译器的主要任务是测试程序运行时的错误问题:计算机最小的存储单位是bit答案:对问题:255(10)转换为二进制为____答案:11111111问题:0.101(2)转化为十进制为______0.625问题:写出-56(10)的答案:八位二进制原码:_00111000___八位二进制补码:__11001000__第二章单元测试问题:以下字符串可以作为标识符的是(多选)答案:coutDefine_问题:以下属于c++语言的特点是:(多选)支持面向对象程序设计支持泛型程序设计支持面向过程程序设计问题:C风格字符串”C++”在内存中占用的字节数是()答案:4问题:符号常量在定义时一定要初始化()答案:True问题:以下哪个属于算术运算符答案:%问题:n=n+3也可以写成____答案:n+=3请写出以下表达式的运算类型:请填写以下答案之一(逗号、关系、逻辑、条件)a<b:__关系__a<b?1:0:__条件__A=3*5,a*4:_逗号___(a>=b)&&(x<=y):__逻辑__问题:sizeof(short)的结果为____答案:2问题:3&5的结果为____答案:1问题:表达式的值为a=0 || sizeof(int):答案:true第二章单元测试问题:控制格式的标志位中,转换为十六进制形式的标志位是答案:hex问题:控制格式输入输出的操纵符中,设置域宽的是()答案:setw()问题:为了避免嵌套的if … else 语句的二义性,C 语言规定else 总是与__ 组成配对关系。

c语言程序设计课后习题及答案

c语言程序设计课后习题及答案

c语言程序设计课后习题及答案C语言程序设计是计算机科学与技术专业的核心课程之一,它不仅教授了编程语言的基本知识,还培养了学生的逻辑思维能力和问题解决能力。

课后习题是巩固课堂学习内容的重要手段,以下是一些C语言程序设计的典型课后习题及答案。

习题1:基本数据类型编写一个程序,输入一个整数和一个浮点数,然后输出它们的和。

```c#include <stdio.h>int main() {int a;float b, sum;printf("请输入一个整数:");scanf("%d", &a);printf("请输入一个浮点数:");scanf("%f", &b);sum = a + b;printf("它们的和是:%f\n", sum);return 0;}```习题2:条件语句编写一个程序,根据输入的成绩判断学生的等级。

```c#include <stdio.h>int main() {float score;printf("请输入学生的成绩:");scanf("%f", &score);if (score >= 90) {printf("等级:A\n");} else if (score >= 80) {printf("等级:B\n");} else if (score >= 70) {printf("等级:C\n");} else if (score >= 60) {printf("等级:D\n");} else {printf("等级:F\n");}return 0;}```习题3:循环结构编写一个程序,计算1到100的整数之和。

C语言程序设计(郑莉)课后习题答案

C语言程序设计(郑莉)课后习题答案

C++语言程序设计(清华大学莉)课后习题答案第一章概述1-1 简述计算机程序设计语言的发展历程。

解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。

1-2 面向对象的编程语言有哪些特点?解:面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。

面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。

通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。

因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。

C++语言是目前应用最广的面向对象的编程语言。

1-3 什么是结构化程序设计方法?这种方法有哪些优点和缺点?解:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。

结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。

虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。

当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。

由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。

C语言程序设计(第2版) 课后题答案

C语言程序设计(第2版) 课后题答案

C语言程序设计(第2版) 课后题答案C语言程序设计(第2版) 课后题答案一、基本概念与语言规则1. C语言的特点和用途C语言是一种通用的高级程序设计语言,具有简洁、高效、灵活和可移植等特点。

它广泛应用于系统软件、应用软件和嵌入式系统开发等领域。

2. 标识符的规则标识符是程序中用来标识变量、函数、数组等各种对象的名称。

标识符需要遵守以下规则:- 由字母、数字和下划线组成,首字符必须是字母或下划线。

- 大小写敏感,即大写字母和小写字母被认为是不同的字符。

- 不能使用C语言的关键字作为标识符。

3. 变量和常量变量是用来存储数据的内存单元,而常量是不可改变的数据值。

在C语言中,变量需要先声明后使用,而常量可以直接使用。

4. 数据类型和类型转换C语言提供了多种数据类型,包括整型、浮点型、字符型等。

不同的数据类型可以存储不同范围和精度的数据。

在需要的时候,可以进行数据类型的转换。

5. 运算符和表达式C语言支持多种运算符,包括算术运算符、逻辑运算符、比较运算符等。

表达式是由运算符和操作数组成的式子,可以进行各种计算和逻辑判断。

6. 控制结构C语言提供了多种控制结构,包括顺序结构、条件结构和循环结构。

通过这些结构可以实现程序的分支和循环操作。

二、函数和数组1. 函数的定义和调用函数是C语言程序的基本模块,可以完成特定的任务。

函数的定义包括函数名、参数列表、返回值类型和函数体。

函数的调用通过函数名和实参来完成。

2. 数组的定义和使用数组是一组相同类型的数据元素的集合。

在C语言中,数组可以用来存储多个同类型的数据,并通过下标来访问和操作数组元素。

三、指针和字符串1. 指针的概念和使用指针是C语言中的一个重要概念,它代表一个内存地址。

通过指针可以直接访问内存中的数据,可以用来提高程序的效率和灵活性。

2. 字符串的概念和操作字符串是由字符组成的数组,以空字符'\0'结尾。

C语言提供了多种操作字符串的函数,如字符串的复制、连接、比较等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++语言程序设计(清华大学郑莉)课后习题答案第一章概述1-1 简述计算机程序设计语言的发展历程。

解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的编程语言,也属于高级语言。

1-2 面向对象的编程语言有哪些特点?解:面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。

面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。

通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。

因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。

C++语言是目前应用最广的面向对象的编程语言。

1-3 什么是结构化程序设计方法?这种方法有哪些优点和缺点?解:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。

结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。

虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。

当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。

由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。

1-4 什么是对象?什么是面向对象方法?这种方法有哪些特点?解:从一般意义上讲,对象是现实世界中一个实际存在的事物,它可以是有形的,也可以是无形的。

对象是构成世界的一个独立单位,它具有自己的静态特征和动态特征。

面向对象方法中的对象,是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位,由一组属性和一组行为构成。

面向对象的方法将数据及对数据的操作方法放在一起,作为一个相互依存、不可分离的整体--对象。

对同类型对象抽象出其共性,形成类。

类中的大多数数据,只能用本类的方法进行处理。

类通过一个简单的外部接口,与外界发生关系,对象与对象之间通过消息进行通讯。

这样,程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。

通过实现继承与多态性,还可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。

面向对象方法所强调的基本原则,就是直接面对客观存在的事物来进行软件开发,将人们在日常生活中习惯的思维方式和表达方式应用在软件开发中,使软件开发从过分专业化的方法、规则和技巧中回到客观世界,回到人们通常的思维。

1-5 什么叫做封装?解:封装是面向对象方法的一个重要原则,就是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。

1-6 面向对象的软件工程包括哪些主要内容?解:面向对象的软件工程是面向对象方法在软件工程领域的全面应用,它包括面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)、面向对象的测试(OOT)和面向对象的软件维护(OOSM)等主要内容。

1-7 简述计算机内部的信息可分为几类?解:计算机内部的信息可以分成控制信息和数据信息二大类;控制信息可分为指令和控制字两类;数据信息可分为数值信息和非数值信息两类。

1-8 什么叫二进制?使用二进制有何优点和缺点?解:二进制是基数为2,每位的权是以2 为底的幂的进制,遵循逢二进一原则,基本符号为0和1。

采用二进制码表示信息,有如下几个优点:1.易于物理实现;2.二进制数运算简单;3.机器可靠性高;4.通用性强。

其缺点是它表示数的容量较小,表示同一个数,二进制较其他进制需要更多的位数。

1-9 请将以下十进制数值转换为二进制和十六进制补码:(1)2 (2)9 (3)93(4)-32 (5)65535 (6)-1解:(1)(2)10 = (10)2 = (2)16(2)(9)10 = (1001)2 = (9)16(3)(93)10 = (1011101)2 = (5D)16(4)(-32)10 = (11100000)2 = (E0)16(5)(65535)10 = (11111111 11111111)2 = (FFFF)16(6)(-1)10 = (11111111 11111111)2 = (FFFF)161-10 请将以下数值转换为十进制:(1)(1010)2 (2)(10001111)2 (3)(01011111 11000011)2(4)(7F)16 (5)(2D3E)16 (6)(F10E)16解:(1)(1010)2 = (10)10(2)(10001111)2 = (143)10(3)(01011111 11000011)2 = (24515)10 (4)(7F)16 = (127)10(5)(2D3E)16 = (11582)10(6)(F10E)16 = (61710)101-11 简要比较原码、反码、补码等几种编码方法。

解:原码:将符号位数字化为 0 或 1,数的绝对值与符号一起编码,即所谓"符号──绝对值表示"的编码。

正数的反码和补码与原码表示相同。

负数的反码与原码有如下关系:符号位相同(仍用1表示),其余各位取反(0变1,1变0)。

补码由该数反码的最末位加1求得。

第二章 C++简单程序设计2-1 C++语言有那些主要特点和优点?解:C++语言的主要特点表现在两个方面,一是全面兼容C,二是支持面向对象的方法。

C++是一个更好的C,它保持了C的简洁、高效、接近汇编语言、具有良好的可读性和可移植性等特点,对C的类型系统进行了改革和扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误。

C++语言最重要的特点是支持面向对象。

2-2 下列标识符哪些是合法的?Program, -page, _lock, test2, 3in1, @mail, A_B_C_D解:Program, _lock, test2, A_B_C_D是合法的标识符,其它的不是。

2-3 例2.1中每条语句的作用是什么?#include <iostream.h>void main(void){cout<<"Hello!\n";cout<<"Welcome to c++!\n";}解:#include <iostream.h> //指示编译器将文件iostream.h中的代码//嵌入到该程序中该指令所在的地方void main() //主函数名,void 表示函数没有返回值{ //函数体标志cout<<"Hello!\n"; //输出字符串Hello!到标准输出设备(显示器)上。

cout<<"Welcome to c++!\n"; //输出字符串Welcome to c++!}在屏幕输出如下:Hello!Welcome to c++!2-4 使用关键字const而不是#define语句的好处有哪些?解:const定义的常量是有类型的,所以在使用它们时编译器可以查错;而且,这些变量在调试时仍然是可见的。

2-5 请写出C++语句声明一个常量PI,值为3.1416;再声明一个浮点型变量a,把PI的值赋给a。

解:const float PI = 3.1416;float a = PI;2-6 在下面的枚举类型中,Blue的值是多少?enum COLOR { WHITE, BLACK = 100, RED, BLUE, GREEN = 300 };解:Blue = 1022-7 注释有什么作用?C++中有哪几种注释的方法?他们之间有什么区别? 解:注释在程序中的作用是对程序进行注解和说明,以便于阅读。

编译系统在对源程序进行编译时不理会注释部分,因此注释对于程序的功能实现不起任何作用。

而且由于编译时忽略注释部分,所以注释内容不会增加最终产生的可执行程序的大小。

适当地使用注释,能够提高程序的可读性。

在C++中,有两种给出注释的方法:一种是延用C语言方法,使用"/*"和"*/"括起注释文字。

另一种方法是使用"//",从"//"开始,直到它所在行的行尾,所有字符都被作为注释处理。

2-8 什么叫做表达式?x = 5 + 7是一个表达式吗?它的值是多少?解:任何一个用于计算值的公式都可称为表达式。

x = 5 + 7是一个表达式,它的值为12。

2-9 下列表达式的值是多少?1. 201 / 42. 201 % 43. 201 /4.0解:1. 502. 13. 50.252-10 执行完下列语句后,a、b、c三个变量的值为多少?a = 30;b = a++;c = ++a;解:a:32 ; b:30 ; c:32;2-11 在一个for循环中,可以初始化多个变量吗?如何实现?解:在for循环设置条件的第一个";"前,用,分隔不同的赋值表达式。

例如:for (x = 0, y = 10; x < 100; x++, y++)2-12 执行完下列语句后,n的值为多少?int n;for (n = 0; n < 100; n++)解:n的值为1002-13 写一条for语句,计数条件为n从100到200,步长为2;然后用while和do…while语句完成同样的循环。

解:for循环:for (int n = 100; n <= 200; n += 2);while循环:int x = 100;while (n <= 200)n += 2;do…while循环:int n = 100;do{n += 2;} while(n <= 200);2-14 if ( x = 3 ) 和 if (x = = 3) 这两条语句的差别是什么?解:语句if(x = 3)把3赋给x,赋值表达式的值为true,作为if 语句的条件;语句if(x == 3)首先判断x的值是否为3,若相等条件表达式的值为ture,否则为false。

相关文档
最新文档