c程序设计第五版第3章
C程序设计(第五版)-第3章最简单的C程序设计—顺序程序设计课后习题答案

C程序设计(第五版)-第3章最简单的C程序设计—顺序程序设计课后习题答案1.假如我国国民⽣产总值的年增长率为7%,计算10年后我国国民⽣产总值与现在相⽐增长多少百分⽐。
计算公式为p = ( 1 + r ) n次⽅,其中 r为年增长率,n为年数,p为与现在相⽐的倍数。
#include <stdio.h>#include <math.h>/*** @brief* 假如我国国民⽣产总值的年增长率为7%,计算10年后我国国民⽣产总值与现在相⽐增长多少百分⽐。
* 计算公式为p = ( 1 + r ) n次⽅,其中 r为年增长率,n为年数,p为与现在相⽐的倍数。
** @return int*/int main(){float r, p, n;r = 0.07;n = 10;p = pow(1 + r, n);printf("p=%f\n", p);system("pause");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+r/4) ^{4n};说明: 1000 *(1+r/4)是⼀个季度的本息和。
C语言顺序结构程序设计

printf(“vol=%7.2f\n”,vol);
/*输出求出旳体积*/
}
[程序演示]
[案例3.7] 已知圆柱体旳底半径为radius,高为high,求其体积。
/*案例代码文件名:AL3_7.C。*/
/*功能:阐明函数scanf()旳格式及作用。*/
main()
{float radius,high,vol,pi=3.1415926;
例如,scanf("%3c%3c",&ch1,&ch2);
printf("ch1=%c,ch2=%c\n",ch1,ch2);
假设输入“abcdefg”,则系统将读取旳 “abc”中旳“a”赋给变量ch1;将读取旳 “def”中旳“d”赋给变量ch2,所以printf() 函数旳输出成果为:ch1=a,ch2=d。
3.1.2 格式指示符
输出不同类型旳数据,要使用不同旳类型转换字符。
1.类型转换字符d──以带符号旳十进制整数形式输出。
[案例3.2] 类型转换字符d旳使用。
/*案例代码文件名:AL3_2.C。*/
main( )
{int num1=123;
long num2=123456;
/*用3种不同格式,输出int型数据num1旳值*/
第3章 顺序构造程序设计
为了让计算机处理多种数据,首先就应该把源数据输 入到计算机中;计算机处理结束后,再将目旳数据信息 以人能够辨认旳方式输出。C语言中旳输入输出操作,是 由C语言编译系统提供旳库函数来实现。
3.1 格式化输出——printf( )函数 3.2 格式化输入——scanf( )函数 3.3 字符型数据 3.4 单个字符输入输出——getchar( )和putchar( )函数 3.5 顺序构造程序设计 良好旳源程序书写风格──顺序程序段左对齐
03C程序的流程设计

示例: 示例:
请点击… 请点击 if结构 if结构 if结构嵌套 if结构嵌套 switch结构 switch结构
选择结构应用
第3章 C程序的流程设计 章 程序的流程设计
3.2 选择型程序设计
示例: 示例: 问题: 问题:已知
选择结构含义 if结构 if结构 if结构嵌套 if结构嵌套 switch结构 switch结构
选择结构含义 if结构 if结构 if结构嵌套 if结构嵌套 switch结构 switch结构
执行流程: 执行流程:
请点击… 请点击
说明: 说明:
选择结构应用
表达式可以是整型、 字符型和枚举类型。 1 . 表达式可以是整型 、 字符型和枚举类型 。 case后的 常量表达式” 后的“ 2 . case 后的 “ 常量表达式 ” 只起语句标号的 作用, 不进行条件判断, 故在执行完某个case 作用 , 不进行条件判断 , 故在执行完某个 case 后的语句块后, 将自动执行以后各语句块。 后的语句块后 , 将自动执行以后各语句块 。
第3章 C程序的流程设计 章 程序的流程设计
3.2 选择型程序设计
{ case case case case case case case case case case case case 0:d=0;break: 1:d=2;break; 2: 3:d=5;break; 4: 5: 6: 7:d=8;break; 9: 10: 11:d=10;break; 12:d=15;break;
3.2 选择型程序设计
选择结构含义 if结构 if结构 if结构嵌套 if结构嵌套 switch结构 switch结构
根据不同条件有选择地执行不同后 续命令集合的程序结构。 续命令集合的程序结构。 在C中,选择结构主要有 结构和 中 选择结构主要有if switch结构。 结构。 结构
操作系统教程第5版第3章【PV】

1
while(free); free=true;
临界区
3
free=false;
临界区 free=false;
……
……
Step3: Q下CPU,P上CPU;此时两个进程都在临界区!
该方法有问题。
30
软件方法1
free:临界区空闲标志 true:有进程在临界区;false:无进程在临界区
初值:free为false
27
软件方法1 free:临界区空闲标志
true:有进程在临界区;false:无进程在临界区 初值:free为false
P:
Q:
……
……
while(free); CPU free=true;
1
while(free); free=true;
临界区
临界区
free=false;
free=false;
……
……
Step1: P先上CPU
28
软件方法1
free:临界区空闲标志 true:有进程在临界区;false:无进程在临界区 初值:free为false
P:
Q:
……
…… CPU 2
while(free); CPU free=true;
1
while(free); free=true;
临界区
P: …… while(not turn); 临界区 turn=false; ……
Q: …… while(turn); 临界区 turn=ture; ……
若P想进临界区,由于turn=false;进不了; 同时Q进程始终不准备进临界区,即使临界区一直没有进程, 但P一直无法进入临界区 该方法,违反了使用临界区的原则
第3章顺序结构程序设计

第3章顺序结构程序设计第3章最简单的C程序设计——顺序程序设计本章要求1、掌握程序的三种基本结构特点及其控制语句的使⽤。
2、重点掌握数据输⼊、输出函数及其格式控制。
3、熟悉Turbo C环境的使⽤,头⽂件,帮助系统的使⽤(Ctrl+F1)。
3.1程序的三种基础结构顺序、选择、循环。
3.2 C语句概述C程序结构如图:⼀个C程序可以由多个源程序⽂件构成,Turbo C⽤“⼯程⽂件”(prj:Project)来描述该程序由那些源程序⽂件构成。
所有这些源程序⽂件经过分别编译后形成各⾃的⽬标⽂件,经连接程序LINK后形成⼀个EXE⽂件。
⼀个源程序⽂件由若⼲函数和“预编译命令”构成。
函数包括数据定义部分(变量定义)和执⾏部分,执⾏部分是C语⾔语句,完成对数据的操作。
C语句有以下五类:1、控制语句,完成程序流程控制。
if()~else~条件语句for()~循环语句while()~循环语句do~while() 循环语句continue 结束本次循环语句break 中⽌switch或循环语句switch 多分⽀选择语句goto 转向语句return 从函数返回语句( )表⽰条件,~表⽰内嵌的语句,若有多个语句既复合语句⽤{}括起来。
2、函数调⽤语句。
例、printf("This is a C statement."); /* 该语句调⽤函数printf() */3、表达式语句:在表达式后⾯加分号构成。
例:a = 3 /* 后⾯⽆分号,是表达式 */a = 3; /* 后⾯有分号,是语句 */i++; /* 语句 */4、空语句:仅包含⼀个分号的语句,例、;5、复合语句:由⼤括号{ }括起来的语句序列。
例、{ z = x + y;t = z / 100;printf("%f",t);}注:C语⾔允许⼀⾏写多个语句,也允许⼀个语句写多⾏。
3.3 赋值表达式和赋值语句⼀、赋值表达式1。
c语言详解(第五版)第三章程序设计项目答案

c语言详解(第五版)第三章程序设计项目答案1.假设买一辆车首付为500dollar。
请计算月供。
#include<stdio.h>#include<math.h>#include<stdlib.h>int main(void){double capital_sum,monthly_interest_rate,initial_payment,temp,payment,terms; printf("Please enter the price of the car>>");scanf("%lf",&capital_sum);printf("Please enter the monthly interest rate>>");scanf("%lf",&monthly_interest_rate);printf("Please enter the terms duration of loan>>");scanf("%lf",&terms);printf("Please enter the initial_payment>>");scanf("%lf",&initial_payment);temp=1+monthly_interest_rate;payment=(capital_sum-500)*monthly_interest_rate/(1-pow(temp,-terms));printf("The monthly contribution is %.2f dollars.",payment);printf("The capital sum is %.2f dollars.",capital_sum);system("pause");return 0;}2.编写两个函数,一个显示三角形,另一个显示矩形。
第3章 选择&循环结构程序设计
switch语句的语义
switch语句的语义如下:
计算整型表达式; 将整型表达式的值顺序地与各个case后的整常量 相比较,若与某个整常量相等,则从对应的case 之后的语句组开始往下执行,若与所有整常量均 不等,在有default的情况下,只执行语句组n。
以上语义中隐含着:
每个分支中可以有多个语句,而且不必复合。 一旦找到匹配 (或defaulte),就会一直往下执行 而非执行单个分支。若想在执行单个分支后退出, 则必须让每个语句组的最后一条语句是 break;。
与人类擅长解析和符号运算等特点不同, 计算机必须从具体数据出发,按照人为其 设计好的程序机械地进行运算。另一方面, 由于计算机的运算速度很快,因此最擅长 完成那些计算工作量很大的重复性运算。 这种重复是指运算步骤,数据则在重复中 不断地改变,每当执行这组步骤时,程序 都从变量的原值推出它的一个新值,这一 过程称为“迭代” ,是计算机得以发展的 关键因素。循环则是实现迭代的必要条件。
3.3.2 while语句
while语句的语法 while语句的语义 while语句程序实例
while语句的语法
while语句的语法是:
while (表达式) 语句
其中:
“while (表达式)”为循环控制,其中“表达式” 可以为任意类型,但其值将当作逻辑值使用。 “语句 ”为循环体,它可以是一个语句、一个由 花括弧括起来的复合语句或另一个控制结构。
如果表达式的初值为false,则一次循环也不执行 表达式的值必须在循环体中改变,否则为死循环
while语句程序实例
// 从键盘输入一组整数(以0作为输入结束的标志),打印其最大值 #include <stdio.h> int main() { int x, max; printf("输入一个整数:"); scanf("%d", &x); max = x; while (x != 0) { printf("输入一个整数:"); scanf("%d", &x); if (x > max) max = x; } printf("最大值 max = %d\n", max); return 0;
c程序设计第五版第3章
if
return static union while
数据类型
所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度(占多少字节)以及数据的 存储形式。不同的类型分配不同的长度和存储形式。
基本整型 int 短整型 short int 长整型 long int *双长整型 long long int 字符型 char *布尔型 bool 单精度浮点型 float 浮点类型 指针类型 * 派生类型 数组类型 [ ] 结构体类型 union 函数类型 双精度浮点型 double 复数浮点型 float_complex,double_complex,long long _complex
第
最简单的C程序设计 ——顺序程序设计
3章
顺序程序设计举例
【例3.2】有人用温度计测量出用华氏法表示的温度(如64°F), 今要求把它转换为以摄氏法表示的温度(如17.8℃)。
N-S流程图
输入f的值
输出c的值
#include <stdio.h> int main() { float f,c; //定义f和c为单精度浮点型变量 f=64.0; //指定f的值 c=(5.0/9)*(f-32); //利用公式计算c的值 printf("f=%f\nc=%f\n",f,c); //输出c的值 return 0; }
4 9 3 2 -
~ 1 . 1 * 1 0
4 9 3 2
常量的类型
'n'——字符常量
23——整型常量 3.14159——浮点型常量
• 从常量的表示形式即可以判定其类型。 • 不带小数点的数值是整型常量,但应注意其有效范围。 • 在一个整数的末尾加大写字母L或小写字母l,表示它是长整型(long int)。 • 凡以小数形式或指数形式出现的实数均是浮点型常量,在内存中都以指数形式存储。 • C编译系统把浮点型常量都按双精度处理,分配8个字节。
c语言程序设计第五版
C语言程序设计第五版1. 简介C语言是一种通用的编程语言,具有高效、灵活和可移植等特点。
C语言程序设计第五版是由谭浩强编写的经典教材,广泛应用于计算机科学与技术相关专业的教学中。
本文档将概述C语言程序设计第五版的主要内容和结构。
2. 内容概述C语言程序设计第五版共分为16个章节,涵盖了C语言的基本知识、控制结构、函数、数组、指针、字符串、文件操作等内容。
每个章节都包含大量的示例代码和练习题,帮助读者加深对C语言的理解和掌握。
具体章节内容包括:2.1 第一章:概述本章主要介绍了C语言的发展历史、基本特点和应用领域,以及C语言程序的基本结构和运行过程。
2.2 第二章:数据类型、运算符和表达式本章讲解了C语言中常用的数据类型,如整型、浮点型、字符型等,以及常见的运算符和表达式的使用方法。
2.3 第三章:顺序结构程序设计本章介绍了C语言中的顺序结构,包括输入输出函数、赋值语句、条件语句、循环语句等,通过大量的示例代码帮助读者理解和掌握顺序结构程序设计的技巧。
2.4 第四章:分支结构程序设计本章讲解了C语言中的分支结构,包括if语句、switch语句等,通过实例演示了如何使用分支结构来实现条件判断。
2.5 第五章:循环结构程序设计本章详细介绍了C语言中的循环结构,包括while循环、do-while循环和for 循环等,通过示例代码演示了不同类型的循环的使用方法和注意事项。
2.6 第六章:函数本章主要讲解了C语言中函数的定义与调用、参数传递和返回值等概念,并通过示例代码演示了如何编写和使用函数。
2.7 第七章:数组本章详细介绍了C语言中的数组,包括一维数组和多维数组的定义、初始化和操作方法,通过示例代码演示了如何利用数组解决实际问题。
2.8 第八章:指针本章讲解了C语言中的指针概念、指针变量的定义和操作,以及指针与数组的关系。
并通过示例代码展示了指针在函数传递参数、动态内存分配等方面的应用。
2.9 第九章:字符串本章详细介绍了C语言中字符串的概念、定义和常见操作,如字符串的输入输出、比较、连接等。
c语言程序设计第五版习题答案
int a=6;b=8;
int c;
c=a*b;
printf(‘%d’,c);
}
【答案】错误的地方有3处:(1)第2行关键字应该小写;(2)定义b时前面应该用逗号;(3)打印语句的格式应该用双引号括起来。
正确的程序如下:
#include <stdio.h>
void main()
{
int a=6,b=8;
4.简述指针、变量的指针、变量的值、指针变量与指针变量的值的含义是什么?
【解答】C语言中将地址又称为“指针”。一个变量所分配的内存空间首字节地址,称为该变量的指针(地址),变量的值就被放入所分配的地址单元中。地址一旦被分配,就不会再改变,所以,指针是一个常量。既然是常量就可以把它赋给一个变量。用来存放指针的变量,被称为指针变量。一个指针变量的值是变量的地址,一个指针变量可以被赋予不同的指针值。
②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。
③注意显示的信息有三行,所以要用到换行符“\n”。
参考代码:
#include <stdio.h>
main()
{
printf("************************\n");
3.C语言中的常量包括哪几类?各自是如何构成的?
【解答】C语言中的常量是一些其值预先定的量,并且在程序执行过程中其值不再发生变化。常量的分类遵循基本数据类型分类原则,C语言编译系统自动将其存放在于类型相应的内存单元中。其类别包含整形常量、浮点常量、字符常量、字符串常量和枚举常量。整形常量又分为十进制整形常量、八进制整形常量、十六进制整形常量。浮点常量分成十进制形式和指数形式。C语言中的,字符常量是用单括号括起来的一个字符或是字符序列,而字符串常量是用一对双括号括起来的零个或者多个字符组成的序列。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字符变量
字符变量是用类型符char定义字符变量。 char c='?'; //定义c为字符型变量并使初值为字符′?′。′?′的ASCII代码是63,系统把整数63赋给变量c。
printf("%d %c\n",c,c);
//用“%d”格式输出十进制整数63,用“%c”格式输出字符′?′
浮点型数据
3.14159=3.14159*10 0 =0.314159*10 1 =314.159*10 -2
可以在常量的末尾加专用字符,强制指定常量的类型: float a=3.14159f; //把此3.14159按单精度浮点常量处理,编译时不出现 “警告” long double a = 1.23L; //把此1.23作为long double型处理 类型是变量的一个重要的属性。变量是具体存在的实体,占用存储单元,可以存放数据。而类
第
最简单的C程序设计 ——顺序程序设计
3章
顺序程序设计举例
【例3.2】有人用温度计测量出用华氏法表示的温度(如64°F), 今要求把它转换为以摄氏法表示的温度(如17.8℃)。
N-S流程图
输入f的值
输出c的值
#include <stdio.h> int main() { float f,c; //定义f和c为单精度浮点型变量 f=64.0; //指定f的值 c=(5.0/9)*(f-32); //利用公式计算c的值 printf("f=%f\nc=%f\n",f,c); //输出c的值 return 0; }
整型数据
整型数据类型 [signed ]int unsigned [int] [signed] short [int] unsigned short [int] [signed ]long [int] unsigned long [int] [signed ]long long [int] int Unsigned short unsigned short long unsigned long long long 缺省形式的 整型数据类型 字节数 4 4 2 2 4 4 8 取值范围 -2147483648~2147483647(-231~231-1) 0~4294967295(0~232-1) -32768~32767(-215~215-1) 0~65535(0~216-1) -2147483648~2147483647(-231~231-1) 0~4294967295(0~232-1) -9223372036854775808~9223372036854775807(263~263-1)
unsigned long long [int]
unsigned long long
8
0~18446744073709551615(0~264-1)
说明: C标准没有具体规定各种类型数据所占用存储单元的长度,只要求 sizeof(short)≤sizeof(int)≤sizeof(long)≤sizeof(long long),具体由各编译系统自行决定的。 sizeof是测量类型或变量长度的运算符。
整型数据
(1) 只有整型(包括字符型)数据可以加signed或unsigned修饰符,实型数据不能加。
(2) 对无符号整型数据用“%u”格式输出。%u表示用无符号十进制数的格式输出。
unsigned short price=50; 如 :
printf("%u\n",price); 出
//定义price为无符号短整型变量 //指定用无符号十进制数的格式输
顺序程序设计举例
【例3.2】计算存款利息。有1000元,想存一年。有3种方法可选: (1)活期,年利率为r1;
N-S流程图
输入p0,r1,r2,r3的值
(2)一年期定期,年利率为r2;
(3)存两次半年定期,年利率为r3。 请分别计算出一年后按3种方法所得到的本息和。
输出p1,p2,p3
#include <stdio.h> int main () 在定义实型变量的同时,对部分变量赋予初值 { float p0=1000, r1=0.0036, r2=0.0225, r3=0.0198, p1, p2, p3; //定义变量 p1=p0*(1+r1); //计算活期本息和 p2=p0*(1+r2); //计算一年定期本息和 p3=p0*(1+r3/2)*(1+r3/2); //计算存两次半年定期的本息和 printf("p1=%f\np2=%f\np3=%f\n",p1, p2, p3);//输出结果 在输出p1,p2和p3的值之后,用\n使输出换 行 return 0; }
转义字符
变量
变量代表一个有名字的、具有特定属性的一个存储单元。 变量用来存放数据,也就是存放变量的值。 在程序运行期间,变量的值是可以改变的。
a
3
变量名 变量值 存储单元
变量必须先定义,后使用。
常变量
Const int a=3
定义 a 为一个整型变量,指定其值为 3 ,而且在变量存在期间其值不能改变 常变量与常量的异同是: 常变量具有变量的基本属性: 有类型,占存储单元,只是不允许改变其值。可以说, 常变量是有名字的不变量,而常量是没有名字的不变量。有名字就便于在程序中被引用。
ASCII码表
注意
字符′1′和整数1是不同的概念。 字符′1′只是代表一个形状为′1′的符号, 在需要时按原样输出,在内存中以 ASCII码形式存储,占1个字节。 0 0 1 1 0 0 0 1 而整数1是以整数存储方式(二进制补码 方式)存储的,占2个或4个字节。 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 整数运算1+1等于整数2,而字符 ′1′+′1′并不等于整数2或字符′2′。
常量、变量与类型
float a=3.14159; //3.14159为双精度浮点常量,分配8个字节;a为float变量,分配4个字节 编译时系统会发出警告(warning: truncation from ′const double′ to′float′),提醒用户注意 这种转换可能损失精度 一般不影响结果的正确性,但会影响结果的精度。
说明: 有些编译系统还未实现C 99的功能,因此不能使用常变量。
标识符
注意 • 变量名中区分大小写
标识符就是一个对象的名字。用于标识变量、符号常量、函数、
数组、类型等
标识符只能由字母、数字和下划线3种字符组成,且第1个字符 必须为字母或下划线
字母 • 不能使用关键字作为 变量名 • 变量的名字应该尽量 反映变量在程序中的 作用与含义
C语言中的关键字
Auto const double break continue else case default enum char do extern
float
int short struct unsigned
for
long signed switch void
goto
register sizeof typedef volatile
整型类型
基本类型 枚举类型 enum 数据类型 空类型 void
计算机中带符号整型数的表示:补码
正整数的补码就是此数的二进制形式,5的补码: 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
负整数的补码是①将此数绝对值的二进制形式;②除最高位符号位外其他数取反;③加1。 -5的补码: 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 0 0 1 1 1 0 1
if
return static union while
数据类型
所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度(占多少字节)以及数据的 存储形式。不同的类型分配不同的长度和存储形式。
基本整型 int 短整型 short int 长整型 long int *双长整型 long long int 字符型 char *布尔型 bool 单精度浮点型 float 浮点类型 指针类型 * 派生类型 数组类型 [ ] 结构体类型 union 函数类型 双精度浮点型 double 复数浮点型 float_complex,double_complex,long long _complex
型是变量的共性,是抽象的,不占用存储单元,不能用来存放数据。 int a; a=3; int=3; //正确。对整型变量a赋值 //错误。不能对类型赋值
由于小数点位置可以浮动,所以实数的指数形式称为浮点数。 浮点数类型包括float(单精度浮点型)、double(双精度浮点型)、long double(长双精度浮点 型)。 + .314159 1
数符 + 小数部分 .314159 指数 101 3.14159
注意
由于用二进制形式表示一个实数以及存
储单元的长度是有限的,因此不可能得 到完全精确的值,只能存储成有限的精 确度。小数部分占的位(bit)数愈多, 数的有效数字愈多,精度也就愈高。指 数部分占的位数愈多,则能表示的数值 范围愈大。
4 9 3 2 -
~ 1 . 1 * 1 0
4 9 3 2
常量的类型
'n'——字符常量
23——整型常量 3.14159——浮点型常量
• 从常量的表示形式即可以判定其类型。 • 不带小数点的数值是整型常量,但应注意其有效范围。 • 在一个整数的末尾加大写字母L或小写字母l,表示它是长整型(long int)。 • 凡以小数形式或指数形式出现的实数均是浮点型常量,在内存中都以指数形式存储。 • C编译系统把浮点型常量都按双精度处理,分配8个字节。