c++第3章习题讲解

合集下载

C语言程序设计 第3版 第3章 算法与流程图

C语言程序设计 第3版 第3章 算法与流程图

输入/输出框
处理框
流程图表示法一般包括三部分:
(1)表示相应操作的框; (2)带箭头的流程线; (3)框内外符
C语言程序设计
2. 流程图
符号表示 简单实例
用流程图表示下面的分段函数。
2x 1 y 0
3x 1
x0 x0 x0
C语言程序设计
3. 程序设计结构
顺序结构 选择结构 循环结构
(4)有零或多个输入:根据算法的不同,有的在实现过程中需要输入一些原始数据,而有 些算法可能不需要输入原始数据;
(5)有一个或多个输出:设计算法的最终目的是为了解决问题,为此,每个算法至少应有 一个输出结果,来反应问题的最终结果。
C语言程序设计
2. 流程图
符号表示 简单实例
流程图常用的符号:
起止框
顺序结构 选择结构 循环结构
循环结构流程图:
某学生在操场上跑步,一共要跑四圈,每一圈 都要跨过障碍,请画出该算法的流程图。
不成立 条件? 成立
A
圈数≤4? 成立
跨障碍
不成立
执行过程:
先判断条件,如果条件成立,执行A,再循环判断条件, 否则,跳出循环。
C语言程序设计
谢谢
C语言程序设计
第3章 算法与流程图
提纲
1.算法定义及特征 2. 流程图表示法 3. 程序设计结构
1. 算法
算法定义 算法特征
定义:
现实生活中解决问题时,一般都要制订一个针对具体问题的步骤和方法,以此为据去实现目标。 将为了解决问题所制订的步骤、方法称为算法(Algorithm)。
计算下面的分段函数。
特征:
(1)有穷性:算法中所包含的步骤必须是有限的,不能无穷无止,应该在一个人所能接受 的合理时间段内产生结果;

c语言程序设计第五版谭浩强习题答案第三章课后答案

c语言程序设计第五版谭浩强习题答案第三章课后答案

c语⾔程序设计第五版谭浩强习题答案第三章课后答案第三章最简单的C程序设计 ----顺序程序设计1、假如我国国民⽣产总值的年增长率为7%,计算10年后我国国民⽣产总值与现在相⽐增长多少百分⽐。

计算公式为$p = (1+r)^n$ ,其中r为年增长率,n为年数,p为与现在相⽐的倍数。

题⽬解析:此题的关键主要是利⽤数学库math中pow函数进⾏计算,若不熟悉可以查阅帮助⽂档,查看pow函数的⽤法。

代码⽰例:#include<stdio.h>#include <math.h>int main(){Cfloat p, r, n;r = 0.07;n = 10;p = pow(1 + r, n);printf("p=%f\n", p);return 0;}运⾏结果:2、存款利息的计算。

有1000元,想存5年,可按以下5种办法存:(1)⼀次存5年期(2)先存2年期,到期后将本息再存3年期(3)先存3年期,到期后将本息再存2年期(4)存1年期,到期后将本息再存1年期,连续存5次(5)存活期存款,活期利息每⼀季度结算⼀次2017年银⾏存款利息如下:1年期定期存款利息为1.5%;2年期定期存款利息为2.1%;3年期定期存款利息为2.75%;5年期定期存款利息为3%;活期存款利息为0.35%(活期存款每⼀-季度结算⼀-次利息)如果r为年利率,n为存款年数,则计算本息的公式如下:1年期本息和: P= 1000* (1+r);n年期本息和: P= 1000* (1+n* r);存n次1年期的本息和: $P=1000* (1+r)^n$;活期存款本息和: P= 1000 *(1+$\frac{r}{4}$)$^{4n}$;说明: 1000*(1+$\frac{r}{4}$)是⼀个季度的本息和。

题⽬解析:理解题意很关键,其次就是利⽤数学库math中pow函数进⾏幂次⽅计算代码⽰例:#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.C语言提供的合法的数据类型关键字是(B)。

(A)Double (B)short (C)integer (D)Char2.在C语言中,合法的长整型常数是(A )。

(A)0L(B)4962710 (C)0.054838743 (D)2.1869e103.若有说明和语句:int a=5;a++;此处表达式a++的值是( C)。

(A)7 (B)6 (C)5 (D)44.C语言中最简单的数据类型包括(B )。

(A)整型、实型、逻辑型 (B)整型、实型、字符型(C)整型、字符型、逻辑型 (D)整型、实型、逻辑型、字符型5.以下说法中正确的是( C)。

(A)C语言程序总是从第一个定义的函数开始执行(B)在C语言程序中,要调用的函数必须在main()函数中定义(C)C语言程序总是从main()函数开始执行(D)C语言程序中的main()函数必须放在程序的开始部分6.在C语言中,要求运算数必须是整型的运算符是(A)。

(A) % (B) /(C) < (D) !7.以下有4个用户标识符,其中合法的一个是(C )。

(A) for (B) 4d (C) f2_G3 (D) short8.假定x和y为double型,则表达式x=2,y=x+3/2的值是(D )。

(A) 3.500000 (B) 3 (C) 2.000000 (D) 3.0000009.下面程序的输出是(C)。

(A) 0 (B) 1 (C) 3 (D) 不确定的值main(){ int x=10,y=3;printf("%d\n",y=x/y);}10.执行下面程序中输出语句后,a的值是(C)。

(A) 65 (B) 20 (C) 15 (D) 10main(){int a;printf("%d\n",(a=3*5,a*4,a+5));}11.C语言提供的合法的关键字是(D)。

(A)Switch (B)cher(C)Case(D)default12.在C语言中,合法的字符常量是(B)。

C语言程序设计(第3版)第3章习题参考答案

C语言程序设计(第3版)第3章习题参考答案

习题三参考答案(1)从键盘输入一个年份值,判断是否闰年。

设iYear为某一年份,iYear为闰年的条件为:iYear可以被4整除且不可以被100整除,或者iYear可以被400整除。

#include "Stdio.h"#include "Conio.h"int main(void){int iYear;printf("please input the year:");scanf("%d",&iYear);if(iYear%400==0||(iYear%4==0&&iYear%100!=0))printf("%d is leap",iYear);elseprintf("%d is not leap",iYear);getch();return 0;}(2)从键盘输入三个整数,按由小到大的顺序输出。

#include "stdio.h"main(){int i,j,k,max;scanf("%d%d%d",&i,&j,&k);max=i>j?i:j;max=max>k?max:k;printf("max=%d",max);getch();}(3)假设星期一至星期五每工作一小时的工资是20元,星期六和星期日每工作一小时的工资是平时的3倍,其中工资的4.5%是税金。

试编一程序从键盘输入星期序号(1,2,3,4,5,6,7,分别表示星期一至星期天)和工作小时数,计算该日的工资及应交税金。

#include "Stdio.h"#include "Conio.h"int main(void){int iWeek,iHours ;float fSalary,fTaxes;printf("please input the week number(1-7):");scanf("%d",&iWeek);printf("please input the work hours(1-12):");scanf("%d",&iHours);switch(iWeek){case 1:case 2:case 3:case 4:case 5:fSalary=20*iHours;fTaxes=fSalary*0.045;break;case 6:case 7:fSalary=3*20*iHours;fTaxes=fSalary*0.045;break;}printf("the salary is %f ,the taxes is %f",fSalary,fTaxes);getch();return 0;}(4)从键盘输入三角形的三条边长,判断是否构成三角形,如能则求出三角形的周长和面积并输出;如不能,输出不能构成三角形的信息。

C语言程序设计(第3版)第3章补充习题及答案

C语言程序设计(第3版)第3章补充习题及答案
char c=’A’;
x=(a&&b)&&(c<’B’);
执行该程序段后,x的值为( )
AtureB falseC 0D 1
(9)以下程序的输出结果是( )
main()
{
int a=0,i=1;
switch(i)
{
case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
(2)下面程序的输出结果是
iX=3
iX>3

#include "stdio.h"
main()
{intiX=3;
switch(iX)
{case 1:
case 2:printf("iX<3\n");
case 3:printf("iX=3\n");
case 4:
case 5:printf("iX>3\n");
}
}
(3)以下程序的运行结果是iM=3,iN=4,iT=3。
#include "stdio.h"
main()
{int iM,iN,iT,iA=2,iB=3;
iM=(++iA==--iB)?––iA:++iB;
iN=++iA;
iT=iB;
printf("iM=%d,iN=%d,iT=%d\n",iM,iN,iT);
(4)对switch后括号内的表达式,叙述正确的是C。
A.只能是数字B.可以是浮点数
C.只能是整型数据或字符型数据D.以上叙述都不对

C语言第1-3章习题答案

C语言第1-3章习题答案

《新编C语言程序设计教程》习题答案第1章程序设计概述一、填空题1.高级语言2.顺序结构选择结构循环结构3.算法4.有穷性5.完全符合结构化程序设计的要求二、问答题1.什么是程序设计?结构化程序设计的基本思想是什么?所谓程序,就是用计算机语言对所要解决问题中的数据以及处理步骤做出的完整而准确的描述,而得到这个描述的过程就称为程序设计。

结构化程序设计是实现程序清晰易懂的关键技术。

其基本思想是规定几种基本结构,然后由这些基本结构按一定规律组成程序,如同用一些基本构件搭建房屋一样。

整个程序的结构是由各个基本结构自上而下顺序排列组成的。

2.算法的描述工具主要有哪些?各有什么优缺点?算法的描述工具主要有自然语言、程序流程图、N-S图和伪代码等。

自然语言就是人们日常使用的语言。

用自然语言描述算法具有通俗易懂的优点,但往往文字冗长,表示的含义不太严格,容易产生歧义性。

程序流程图采用一组特定的图形、流程线以及文字说明来表示算法中的基本操作和控制流程,具有形象直观、简单易懂等特点。

但程序流程图所使用的符号不够规范,常常使用一些习惯性画法,特别是对流程线的使用没有严格的限制,可以不受约束,随意转移控制。

用程序流程图设计出来的算法不一定满足结构化程序设计的要求。

N-S图的基本单元是矩形框,程序的三种基本结构分别用不同的矩形框表示。

在矩形框内还可以包含其他从属于它的矩形框,即N-S图是由矩形框组合嵌套而成。

用N-S图描述的算法杜绝了流程的无条件转移,结构清晰,容易理解,完全符合结构化程序设计的要求。

伪代码使用介于自然语言和计算机语言之间的文字和符号来描述算法,既通俗易懂又避免了歧义性。

语言的正文用基本控制结构进行分割,具体操作用自然语言来表示。

与图形化描述工具相比,更容易修改。

第2章C语言概述一、填空题1.函数,main2.主/main3.主/main ,主/main4.函数首部,函数体, {}5.分号(;)6./* ,*/7.字母,下划线8.scanf,printf9..obj ,.exe10.库函数二、单项选择题1~5 B B C D B6~8 B B D第三章数据类型、运算符和表达式一、选择题1~5 A A A B D6~10 D B A A C11~15 A C B C C16~20 C B C A D21~25 C A B A D26~30 C C C B B二、填空题1.#define PRICE 30.52.63 209 41 1713.01111101 10000000000000014.077270 7EB85.97 65 69 486.17.beginabDghi jlm\865 899 2 4 8 110整数 31127.00000012 213sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))148.015m/10%10*100+m/100*10+m%1016 4 10 6 417 6 3 918019-162011 19 10 192110 62225 5 4231040120302410225 3.526 1 027ch>=’a’&&ch<=’z’ || ch>=’A’&&ch<=’Z’28 329 2308 8 10。

C++面向对象程序设计第三章习题答案解析

C++面向对象程序设计第三章习题答案解析

C++⾯向对象程序设计第三章习题答案解析整理⼀下⾃⼰写的作业,供考试前复习⽤,哈哈进⼊正题题⽬:2.分析下⾯的程序,写出其运⾏时的输出结果这⾥就不展⽰课本源代码,直接给出修改后的代码,错误部分代码已给出具体的注释1 #include<iostream>2//原题的#include<iostream.h>写法错误3 #include<stdlib.h>4//⽤于解决闪屏的头⽂件5using namespace std;6//原题缺少该⾏代码,⽤于输⼊cin和输出cout7class Date{8public:9 Date(int,int,int);10 Date(int,int);11 Date(int);12 Date();1314void display();15private:16int month;17int day;18int year;1920 };2122 Date::Date(int m,int d,int y):month(m),day(d),year(y){}2324 Date::Date(int m,int d):month(m),day(d)25 {year=2005;}2627 Date::Date(int m):month(m)28 {day=1;year=2005;}2930 Date::Date()31 {month=1;day=1;year=2005;}3233void Date::display()34 {35 cout<<month<<"/"<<day<<"/"<<year<<endl;36 }3738int main()39 {40 Date d1(10,13,2005);41 Date d2(12,30);42 Date d3(10);43 Date d4;44 d1.display();45 d2.display();46 d3.display();47 d4.display();48 system("pause");49//解决闪屏的代码50return0;51 }运⾏结果:3.如果将第2题中程序的第四⾏改为⽤默认参数,即Date(int =1,int =1,int =2005);分析程序有⽆问题。

《明解C语言》第3章 分支结构程序练习题答案

《明解C语言》第3章 分支结构程序练习题答案

【个人观点】练习3-1#include<stdio.h>int main(void){int vx,vy;printf("请输入两个数vx、vy:");scanf("%d%d",&vx,&vy);if(vx % vy)puts("vy不是vx的约数\n");elseputs("vy是vx的约数\n");return (0);}练习3-2#include<stdio.h>int main(void){int vx,vy;puts("请输入两个整数:");printf("整数:");scanf("%d",&vx);printf("整数:");scanf("%d",&vy);if(vx == vy)printf("它们相等");elseprintf("它们不相等");printf("\n");return (0);}#include<stdio.h>int main(void){int vx,vy;puts("请输入两个整数:");printf("整数:");scanf("%d",&vx);printf("整数:");scanf("%d",&vy);if(vx > vy)printf("前者大于后者");elseprintf("前者不大于后者");printf("\n");return (0);}练习3-3#include<stdio.h>#include<math.h>int main(void){int vx,vy;puts("请输入一个整数:\n");printf("整数:");scanf("%d",&vx);vy = fabs(vx);printf("它的绝对值是%d",vy);printf("\n");return (0);}【注】:用数学函数时,加上头文件#include<math.h> 练习3-4#include<stdio.h>#include<math.h>int main(void){int vx,vy;puts("请输入两个整数:\n");printf("整数A:");scanf("%d",&vx);printf("整数B:");scanf("%d",&vy);if(vx == vy)puts("A等于B\n");elseif(vx > vy)puts("A大于B\n");elseputs("A小于B\n");printf("\n");return (0);}【注】这个三分支结构要掌握练习3-5#include<stdio.h>#include<math.h>int main(void){int vx,vy,vz,min;puts("请输入三个整数:\n");printf("整数A:");scanf("%d",&vx);printf("整数B:");scanf("%d",&vy);printf("整数C:");scanf("%d",&vz);min = vx;if(vy < min)min = vy;if(vz < min)min = vz;printf("最小的数是%d:\n",min);printf("\n");return (0);}练习3-6#include<stdio.h>#include<math.h>int main(void){int vx,vy,vz,w,max;puts("请输入三个整数:\n");printf("整数A:");scanf("%d",&vx);printf("整数B:");scanf("%d",&vy);printf("整数C:");scanf("%d",&vz);printf("整数D:");scanf("%d",&w);max = vx;if(vy > max)max = vy;if(vz > max)max = vz;if(w > max)max = w;printf("最大的数是%d:\n",max);printf("\n");return (0);}练习3-7#include<stdio.h>int main(void){int vx,vy;puts("请输入两个整数:\n");printf("整数A:");scanf("%d",&vx);printf("整数B:");scanf("%d",&vy);if(vx > vy)printf("它们的差是%d:\n",vx - vy);elseif(vx < vy)printf("它们的差是%d:\n",vy - vx);elseprintf("它们的差是");printf("\n");return (0);}练习3-8#include<stdio.h>int main(void){int vx;puts("请输入一个整数:\n");scanf("%d",&vx);printf((vx != 0)?"该整数不是":"该整数是");printf("\n");return (0);}练习3-9#include<stdio.h>int main(void){int vx,vy,vz;puts("请输入三个整数:\n");printf("整数A:");scanf("%d",&vx);printf("整数B:");scanf("%d",&vy);printf("整数C:");scanf("%d",&vz);if(vx == vy == vz)printf("三个值都相等");elseif(vx == vy || vx == vz || vy == vz) printf("有两个值相等");elseprintf("三个值各不相同");printf("\n");return (0);}练习3-10#include<stdio.h>int main(void){int vx,vy,r1;puts("请输入两个整数:\n");printf("整数A:");scanf("%d",&vx);printf("整数B:");scanf("%d",&vy);r1 = ((vx > vy)?vx - vy:vy - vx);if(r1 <= 10)printf("它们的差值小于等于");elseprintf("它们的差值大于等于");printf("\n");return (0);}练习3-11#include<stdio.h>int main(void){int vx;puts("请输入一个整数:\n");scanf("%d",&vx);switch(vx % 2) {case 1:puts("该整数是奇数"); break;case 0:puts("该整数是偶数"); break;}printf("\n");return (0);}练习3-12#include<stdio.h>int main(void){int month;puts("请输入月份:\n");scanf("%d",&month);switch(month) {case 3:puts("是春天"); break;case 4:puts("是春天"); break;case 5:puts("是春天"); break;case 6:puts("是夏天"); break;case 7:puts("是夏天"); break;case 8:puts("是夏天"); break;case 9:puts("是秋天"); break;case 10:puts("是秋天"); break;case 11:puts("是秋天"); break;case 12:puts("是冬天"); break;case 1:puts("是冬天"); break;case 2:puts("是冬天"); break;default:puts("输入月份不存在!\a\a"); break;}printf("\n");return (0);}。

C程序设计题目集答案之第3章

C程序设计题目集答案之第3章

判断题1-1在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。

(1分)1-2在switch语句中,每一个的case常量表达式的值可以相同。

(1分)1-3case语句后如没有break,顺序向下执行。

(1分)1-4if(a=5) 是允许的。

(1分)1-5在switch语句中,可以根据需要使用或不使用break语句。

(1分)1-6(1分)1-7if-else语句的一般形式如下,若表达式的值为“真”,则执行语句1;否则,就执行语句2。

(1分)1-8if-else语句的一般形式如下,其中的语句1、语句2只能是一条语句。

(1分)1-9为了检查以下else-if语句的三个分支是否正确,至少需要设计5组测试用例,即x的取值至少有五组(小于0的数、0、大于0且小于15的数、15和大于15的数)。

(1分)1-10(1分)1-11在switch语句中,必须使用default。

(1分)1-12为了检查以下嵌套的if语句的三个分支是否正确,至少需要设计3组测试用例,即(1分)1-13在if语句中,必须出现else。

(1分)1-14if(a>b) {t=a;a=b;b=t;}是3条c语句。

(1分)1-15switch语句中多个case标号可以共用一组语句。

(1分)单选题2-1为了避免嵌套的条件分支语句if~else二义性,C语言规定,C程序中的else 总是与( )组成配对关系。

(2分)A.缩排位置相同的ifB.在其之前未配对的ifC.在其之前未配对的最近的ifD.同一行上的if下列叙述中正确的是()。

(2分)A.break语句只能用于switch语句B.在switch语句中必须使用defaultC.break语句必须与switch语句中的case配对使用D.在switch语句中,不一定使用break语句下列程序段的输出结果是()。

(2分)A.0B.1C.2D.3下列程序段的输出结果是()。

C++程序设计(第2版)第三章习题解答

C++程序设计(第2版)第三章习题解答

第三章函数习题一.基本概念与基础知识自测题3.1 填空题3.1.1 被定义为形参的是在函数中起(1)作用的变量,形参只能用(2)表示。

实参的作用是(3),实参可以用(4)、(5)、(6)表示。

答案:(1)自变量(2)变量名(3)将实际参数的值传递给形参(4)具有值的变量(5)常量(6)表达式3.1.2 局部域包括(1)、(2)和(3)。

使用局部变量的意义在于(4)。

答案:(1)块域(2)函数域(3)函数原型域(4)局部变量具有局部作用域使得程序在不同块中可以使用同名变量3.1.3 静态局部变量存储在(1)区,在(2)时候建立,生存期为(3),如定义时未显式初始化,则其初值为(4)。

答案:(1)全局数据区(2)编译(3)全局生存期(4)全03.1.4局部变量存储在(1)区,在(2)时候建立,生存期为(3),如定义时未显式初始化,则其初值为(4)。

答案:(1)栈(2)在函数或块开始执行时(3)函数或块的执行期(4)随机值3.1.5 编译预处理的作用是(1),预处理指令的标志是(2)。

多文件系统中,程序由(3)来管理,用户自定义头文件中通常定义一些(4)。

答案:(1)将源程序文件进行处理,生成一个中间文件,编译系统对此中间文件进行编译并生成目标代码(2)#(3)工程文件(4)用户构造的数据类型(如枚举类型),外部变量,外部函数、常量和内联函数等具有一定通用性或常用的量3.1.6设有函数说明如下:int f(int x, int y){ return x%y+1; }假定a=10,b=4,c=5,下列语句的执行结果分别是(1)和(2)。

(1) cout<<f(a,b)+f(a,c); (2) cout<<f(f(a+c,b),f(b,c));解答:(1)答案:4(2)答案:53.1.7下列程序的输出结果分别为(1)和(2)。

(1)#include<iostream>using namespace std;int a,b;void f(int j){static int i=a; //注意静态局部变量int m,n;m=i+j; i++; j++; n=i*j; a++;cout<<"i="<<i<<'\t'<<"j="<<j<<'\t';cout<<"m="<<m<<'\t'<<"n="<<n<<endl;}int main(){a=1; b=2;f(b); f(a);cout<<"a="<<a<<'\t'<<"b="<<b<<endl;return 0;}解:答案:i=2 j=3 m=3 n=6 (对应蓝色)i=3 j=3 m=4 n=9 (对应绿色)a=3 b=2(2)#include<iostream>using namespace std;float sqr(float a){return a*a;}float p(float x,int n){cout<<"in-process:"<<"x="<<x<<'\t'<<"n="<<n<<endl;if(n==0) return 1;else if(n%2!=0) return x*sqr(p(x,n/2));else return sqr(p(x,n/2));}int main(){cout<<p(2.0,13)<<endl;return 0;}图解递归,共五层,返回值是回归时产生:答案:in-process:x=2 n=13in-process:x=2 n=6in-process:x=2 n=3in-process:x=2 n=1in-process:x=2 n=081923.2 简答题3.2.1 函数的实参和形参怎样对应?实参和形参数目必须一致吗?什么情况下可以不同?答:实参和形参的个数和排列顺序应一一对应,并且对应参数应类型匹配(赋值兼容),当有缺省参数时可以不同。

c语言程序设计第三章答案

c语言程序设计第三章答案

c语言程序设计第三章答案第三章:运算符与表达式一、算术运算符在C语言中,算术运算符用于在表达式中执行各种数学运算。

常见的算术运算符有加法运算符(+)、减法运算符(-)、乘法运算符(*)和除法运算符(/)等。

1. 加法运算符(+)加法运算符用于将两个操作数相加,并返回它们的和。

例如,表达式a + b将返回a和b的和。

2. 减法运算符(-)减法运算符用于从第一个操作数中减去第二个操作数,并返回它们的差。

例如,表达式a - b将返回a和b的差。

3. 乘法运算符(*)乘法运算符用于将两个操作数相乘,并返回它们的积。

例如,表达式a * b将返回a和b的积。

4. 除法运算符(/)除法运算符用于将第一个操作数除以第二个操作数,并返回它们的商。

例如,表达式a / b将返回a除以b的商。

二、关系运算符关系运算符用于比较两个操作数并返回一个布尔值(真或假)。

常见的关系运算符有大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)和不等于(!=)等。

1. 大于运算符(>)大于运算符用于检查第一个操作数是否大于第二个操作数。

如果是,则返回真(1),否则返回假(0)。

例如,表达式a > b将返回真或假。

2. 小于运算符(<)小于运算符用于检查第一个操作数是否小于第二个操作数。

如果是,则返回真(1),否则返回假(0)。

例如,表达式a < b将返回真或假。

3. 大于等于运算符(>=)大于等于运算符用于检查第一个操作数是否大于或等于第二个操作数。

如果是,则返回真(1),否则返回假(0)。

例如,表达式a >= b 将返回真或假。

4. 小于等于运算符(<=)小于等于运算符用于检查第一个操作数是否小于或等于第二个操作数。

如果是,则返回真(1),否则返回假(0)。

例如,表达式a <= b 将返回真或假。

5. 等于运算符(==)等于运算符用于检查两个操作数是否相等。

c语言答案第三章

c语言答案第三章

第三章计习题解答3.1 用C语言描述下列命题。

(1) a小于b或小于c。

(2) a和b都大于c。

(3) a和b中有一个小于c。

(4) a是非正整数。

(5) a是奇数。

(6) a不能被b整除。

(7) 角A在第一或第三象限。

(8) a是一个带小数的正数,而b是一个带小数的负数。

[解答](1)a<b || a<c(2)a>c && b>c(3)a<c && b>=c || a>=c && b<c(4)a==(int)a && a<=0(5)a%2==1(6)a%b!=0(7)0<fmod(A,2*PI) && fmod(A,2*PI)<PI/2 || PI<fmod(A,2*PI) && fmod(A,2*PI)<3*PI/2(其中PI=3.14159265为圆周率)(8)a-(int)a>0 && b-(int)b<03.2 写出下列表达式的值。

(1) 1<4 && 4<7(2) 1<4 && 7<4(3) !(2<=5)(4) !(1<3)||(2<5)(5) !(4<=6) && (3<=7)[解答](1) 1 (2) 0 (3) 0 (4) 1 (5) 03.3 若x=3,y=z=4,求下列表达式的值。

(1) (z>=y>=x)? 1:0(2) z>=y && y>=x[解答](1) 0 (2) 13.4 若x=3,y=2,z=1,求下列表达式的值。

(1) x<y? y:x(2) x<y? x++:y++(3) z+=(x<y?x++:y++)[解答](1) 3 (2) 2 (3) 33.5 写出下面程序段的输出结果。

算法与数据结构C语言版课后习题答案(机械工业出版社)第3,4章 习题参考答案

算法与数据结构C语言版课后习题答案(机械工业出版社)第3,4章 习题参考答案

第3章栈和队列一、基础知识题3.1有五个数依次进栈:1,2,3,4,5。

在各种出栈的序列中,以3,4先出的序列有哪几个。

(3在4之前出栈)。

【解答】34215 ,34251,345213.2铁路进行列车调度时,常把站台设计成栈式结构,若进站的六辆列车顺序为:1,2,3,4,5,6,那么是否能够得到435612, 325641, 154623和135426的出站序列,如果不能,说明为什么不能;如果能,说明如何得到(即写出"进栈"或"出栈"的序列)。

【解答】输入序列为123456,不能得出435612和154623。

不能得到435612的理由是,输出序列最后两元素是12,前面4个元素(4356)得到后,栈中元素剩12,且2在栈顶,不可能让栈底元素1在栈顶元素2之前出栈。

不能得到154623的理由类似,当栈中元素只剩23,且3在栈顶,2不可能先于3出栈。

得到325641的过程如下:1 2 3顺序入栈,32出栈,得到部分输出序列32;然后45入栈,5出栈,部分输出序列变为325;接着6入栈并退栈,部分输出序列变为3256;最后41退栈,得最终结果325641。

得到135426的过程如下:1入栈并出栈,得到部分输出序列1;然后2和3入栈,3出栈,部分输出序列变为13;接着4和5入栈,5,4和2依次出栈,部分输出序列变为13542;最后6入栈并退栈,得最终结果135426。

3.3若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?【解答】2和43.4设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e3,e5,e4,e6,e2,e1,则栈S的容量至少应该是多少?【解答】43.5循环队列的优点是什么,如何判断“空”和“满”。

谭浩强 C语言 第3章 数据类型

谭浩强 C语言 第3章 数据类型

补码 00000111 11111001 00000000 00000000 01111111~ 10000000 (-128~+127)
00000111 10000111 00000000 10000000 01111111~ 11111111 (-127~+127)
负数补码转换成十进制数:最高位不动,其余位取反加1
数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作
8
基本数据类型
类型 符号 关键字 (signed)int 整 型 (signed)short (signed)long unsigned int unsigned short 实 型 字 符 型 unsigned long float double char unsigned char :数据类型所占字 数 所占位数 16 16 32 16 16 32 32 64 8 8 数的表示范围 -32768~32767 -32768~32767 -2147483648~2147483647 0~65535 0~65535 0~4294967295 3.4e-38~3.4e38 1.7e-308~1.7e308 -128~127 0~255 , 表 IBM PC
16
(2)整型变量的分类 (2)整型变量的分类
共六种
有符号基本整型 有符号短整型 有符号长整型 无符号基本整型 无符号短整型 无符号长整型
(signed)int (signed)short (int ) (signed) long (int) unsigned int unsigned short (int) unsigned long (int)
例 (1101001)2=(001,101,001)2=(151)8

C语言2-3章习题参考解答

C语言2-3章习题参考解答

第二章C语言的基本数据类型及运算2.1C语言中的标识符可以由哪些字符组成?一个合法的C语言标识符应遵循那些规定?解:略。

2.2C语言有哪些数据类型?各种基本数据类型所占存储空间长度如何?解:略。

2.3若有定义int a=7; float x=2.5, y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值为多少?解:2.52.4假设所有变量均为整型,则表达式(a=2, b=5, b++, a+b)的值是什么?解:82.5若int x=1, y=2; 则表达式1.0+x/y的值是什么?解:1.02.6找出下列程序中的几处错误并改正。

Main(){ int a=1, b=c=5, t=326845;int d; char ch='A' ;d=b*c;printf("ch=%c, d=%d, t=%ld\n", ch, d, t);}解:错误(1)b=c=5(初始化错误)应该为:b=5,c=5错误(2)t=326845(给基本整型变量t赋值超过最大值32768,会导致执行结果错误)2.7写出下列程序的运行结果。

(1) main(){ int a, b, c, d;a=28; b=8;c=a/b; d=a%b;printf("%d/ %d=%d, %d%%d=%d\n", a, b, c, a, b, d);}(2) main(){ char x='a', y=98;printf("%d\t\b%c", x, y);}(3) main(){ int a=5, b=12, x, y;x=a*=4; y=b- -;printf("%d, %d, %d, %d\n", a, b, x, y);}(4) main(){ int m, n=4;float x=21.7, y=7.0;++n;m=x/y+n;printf("%d, %d\n", m, n);}解:(1)28/8=3, 28%8=4(2)97 b(3)20, 11, 20, 12(4)8, 5第三章C语言程序设计初步3.1什么是输入输出格式说明符?它与转义字符的区别是什么?解:略。

c程序设计第三版习题参考解答(全)

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将以下三各整数分别赋给不同类型的变量,请画出赋值后数据在内存中的存储形式。

注:如果没有学过二进制和补码,此题可以不做。

解:各数据在内存中的存储形式如下表所示:变量的类型25 -2 32769int型00 (000011001)8 位111111111111111015100 … 001(溢出)14long型00 (000011001)24 11 (1110)3100... 0100 (001)16 14short型100 (000011001)8 111111111111111015100 … 001(溢出)14signed char(8位)100011001 11111110 00000001(溢出)unsigned int型00 (000011001)8 11 (110)15100 (001)14unsigned long型00 (000011001)24 11 (110)3100... 0100 (001)16 14unsigned short型00 (000011001)8 11 (110)15100 (001)8unsigned char型00011001 11111110 00000001其中int和short类型,其取值范围是-32768~32767。

何钦铭版C语言第3章答案

何钦铭版C语言第3章答案

3.3.2 习题参考答案
一.选择题
1.能正确表示逻辑关系:“a≥10 或 a≤0”的 C 语言表达式是 D 。
A.a >= 10 or a <= 0
B.a >= amp;& a <= 0
D.a >= 10 || a <= 0
2.在嵌套使用if 语句时,C 语言规定else 总是 C 。
else c++;
printf("%d\n",c);
return 0;
}
A.0
B.1
C.2
D.3
6.下列程序段的输出结果是 A 。
int main(void)
{
int x = 1,a = 0,b = 0;
switch(x) {
case 0: b++;
case 1: a++
case 2: a++;b++;
练习 3-9 请读者重新编写例 3-4 的程序,要求使用嵌套的 if - else 语句,并上机运行。 解答: #include <stdio.h> int main(void) {
double x, y; scanf("%lf", &x); if (x >15){
y = 2.5 * x - 10.5; } else {
s = 1; t = 1;
if(a > 0) s = s + 1;
if(a > b) t = s + t;
else if(a == b) t = 5;
int year; printf("Enter year: "); scanf("%d", &year); if( (year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0)

c语言第三章题库及详解答案

c语言第三章题库及详解答案

c语言第三章题库及详解答案1. 以下哪个是C语言中的合法标识符?A. 3variableB. variable3C. _variableD. variable#答案:B, C2. C语言中,哪个关键字用于定义变量的存储类型?A. staticB. registerC. autoD. all of the above答案:D3. 以下哪个语句可以正确声明一个整型变量?A. int var;B. var int;C. int var=;D. int = var;答案:A4. 在C语言中,哪个运算符用于计算两个数的乘积?A. *B. /C. +D. -答案:A5. 以下哪个表达式的结果是非零的?A. 5 % 3B. 5 / 3C. 5 + 3D. 5 - 3答案:A6. 以下哪个选项是C语言中的逻辑运算符?A. &&B. ||C. !D. all of the above答案:D7. C语言中,哪个关键字用于定义函数?A. functionB. defC. voidD. int答案:D8. 以下哪个是C语言中的条件语句?A. ifB. switchC. caseD. default答案:A9. 在C语言中,哪个关键字用于实现循环?A. whileB. doC. forD. all of the above答案:D10. 以下哪个是C语言中的数组声明?A. int array[10];B. int [10] array;C. both A and BD. neither A nor B答案:C11. C语言中,哪个函数用于输入?A. printf()B. scanf()C. getchar()D. gets()答案:B12. 以下哪个是C语言中的字符串常量?A. "Hello World"B. 'Hello World'C. hello worldD. Hello World答案:A13. 在C语言中,哪个函数用于输出?A. printf()B. scanf()C. puts()D. sprintf()答案:A14. 以下哪个是C语言中的递归函数调用?A. func();B. func(func());C. func(1);D. func(func);答案:B15. C语言中,哪个关键字用于定义结构体?A. structB. unionC. enumD. typedef答案:A16. 以下哪个是C语言中的位运算符?A. &B. |C. ^D. all of the above答案:D17. 在C语言中,哪个关键字用于定义枚举类型?A. enumB. structC. unionD. typedef答案:A18. 以下哪个是C语言中的指针变量?A. int *ptr;B. int ptr;C. ptr int;D. int (*ptr)();答案:A19. C语言中,哪个函数用于计算数组的长度?A. sizeof()B. length()C. size()D. count()答案:A20. 在C语言中,哪个关键字用于定义联合体?A. unionB. structC. enumD. typedef问题及答案到此结束。

C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第三章 课后答案

C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第三章 课后答案
if(score>=60)num++;
total=total+score;
}
printf("The average score is %.2f.\n",total/n);
printf("The numbers of passing is %d.\n",num);
}
练习3-10
#include <stdio.h>
ch=getchar();
switch(ch){
case 'A':printf("The score is between 90--100.\n");break;
case 'B':printf("The score is between 80-- 89.\n");break;
case 'C':printf("The score is between 70-- 79.\n");break;
printf("The numbers of grade C(70~79) is %d.\n",numc);
printf("The numbers of grade D(60~69) is %d.\n",numd);
printf("The numbers of grade E(0~59) is %d.\n",nume);
else if(score<=100)numa++;
total=total+score;
}
printf("The average score is %.2f.\n",total/n);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3-2#include <iostream>#include <iomanip>#define PI 3.141526using namespace std;int main (){float h,r,l,s,sq,vq,vz;cout<<"请输入圆半径∶";cin>>r;cout<<"请输入高h∶";cin>>h;l=2*PI*r; //计算圆周长ls=r*r*PI; //计算圆面积ssq=4*PI*r*r; //计算圆球表面积sqvq=3.0/4.0*PI*r*r*r; //计算圆球体积vqvz=PI*r*r*h; //计算圆柱体积vzcout<<setiosflags(ios::fixed)<<setprecision(2);cout<<"圆周长为: "<<l<<" \n";cout<<"圆面积为: "<<s<<" \n";cout<<"圆球表面积为: "<<sq<<" \n";cout<<"圆球体积为: "<<vq<<" \n";cout<<"圆柱体积为: "<<vz<<" \n";return 0;}3-3#include <iostream>#include <iomanip>using namespace std;int main ( ){float f,c;cout<<"请输入华氏温度:";cin>>f;c=(5.0/9)*(f-32);cout<<setiosflags(ios::fixed)<<setprecision(2);cout<<"华氏温度:"<<f<<"\n转换为摄氏温度为:"<<c<<endl;return 0;}3-8(1)0(2)1(4)0(5)13-9方法1:#include <iostream>using namespace std;int main(){int a,b,c,max;cout<<"请输入三个整数:";cin>>a>>b>>c;if (a<b)max=a;elsemax=b;if(max<c)max=c;cout<<"三个整数的最大数是:"<<max<<endl;return 0;}方法2:#include <iostream>using namespace std;int main(){int a,b,c,temp,max;cout<<"请输入三个整数:";cin>>a>>b>>c;temp=(a>b)?a:b; //将a和b中的大者存入temp中max=(temp>c)?temp:c; //将a和b中的大者与c比较,取最大者cout<<"三个整数的最大数是:"<<max<<endl;return 0;}3-10#include <iostream>using namespace std;int main(){int x,y;cout<<"输入x:";if(x<1)y=x;elseif(x<10)y=2*x-1;elsey=3*x-11;cout<<"x=”<<x<<” y=”<<y<<endl;return 0;}3-11方案1:(用if语句)#include <iostream>using namespace std;int main(){float score;char grade;cout<<"请输入学生成绩:";cin>>score;while (score>100||score<0){cout<<"\n输入有误,请重输";cin>>score;}if(score>=90)grade='A';elseif(score>=80)grade='B';elseif(score>70)grade='C';elseif(score>60)grade='D';elsegrade='E';cout<<"百分制成绩:"<<score<<"的等级是:"<<grade<<endl;;return 0;}方案1:(用switch语句)#include <iostream>using namespace std;int main(){float score;char grade;cout<<"请输入学生成绩:";cin>>score;while (score>100||score<0){cout<<"\n 输入有误,请重输";cin>>score;}switch( (int)(score/10) ){case 10:case 9: grade='A';break;case 8: grade='B';break;case 7: grade='C';break;case 6: grade='D';break;case 5:case 4:case 3:case 2:case 1:case 0: grade='E';}cout<<”百分制成绩:”<<score<<”的等级是:”<<grade<<endl;;return 0;}3-15方法1:#include <iostream>using namespace std;int main(){int n,m,temp;cout<<"请输入两个正整数n,m:";cin>>m>>n;if (n<m)temp=n;elsetemp=m;while(temp>=1){if(m%temp==0&&n%temp==0) break;temp--;}cout<<"它们的最大公约数为:"<<temp<<endl; cout<<"它们的最小公约数为:"<< m*n/temp<<endl; return 0;}方法2:#include <iostream>using namespace std;int main(){int p,r,n,m,temp;cout<<"请输入两个正整数n,m:";cin>>m>>n;if (n<m){temp=n;n=m;m=temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}cout<<"它们的最大公约数为:"<<n<<endl;cout<<"它们的最小公约数为:"<< p/n <<endl; return 0;}3-18#include <iostream>#include <iomanip>using namespace std;int main(){int n;double k=1,s=0;for (n=1;n<=20;n++){k=k*n;cout<<setiosflags(ios::fixed)<<setprecision(0)<<k<<endl; //加一句验证每个数的阶乘s=s+k;}cout<<"1!+2!+........20!= "<<setiosflags(ios::fixed)<<setprecision(0)<<s<<endl; return 0;}3-19#include <iostream>#include <iomanip>using namespace std;int main(){int i,j,k,n,num=0;cout<<"parcissus numbers are \n";for (n=100;n<1000;n++){i=n/100;j=n/10-i*10;k=n%10;if (n==i*i*i + j*j*j + k*k*k){cout<<setw(10)<<n;num++;if(num%2==0) cout<<endl;}}cout<<endl;return 0;}3-20#include <iostream>using namespace std;int main(){int m,s,i;for (m=1;m<1000;m++){s=0;for (i=1;i<m;i++)if ((m%i)==0) s=s+i;if(s==m){cout<<m<<”,its factors are ";for (i=1;i<m;i++)if (m%i==0) cout<<i<<”,”;cout<<"\b \n";}}return 0;}3-21#include <iostream>using namespace std;int main(){int i,n=20;double a=2,b=1,s=0,t;for (i=1;i<=n;i++){s=s+a/b;t=a,a=a+b,b=t;}cout<<"sum=”<<s<<endl;;return 0;}3-23#include <iostream>#include <cmath>using namespace std;int main(){float a,x0,x1;cout<<"请输入一个正数:";cin>>a;while (a<0){cout<<"\n 输入有误,请重输";cin>>a;}x0=a; //最好:x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"The square root of “<<a<<” is”<<x1<<endl;return 0;}。

相关文档
最新文档