C语言程序设计(第3版)何钦铭 颜 晖 第3章 分支结构
C语言程序设计第3版何钦铭-颜-晖--循环结构
第4章循环结构【练习 4-1】在例 4-1 程序中,如果对 item 赋初值 0,运行结果是什么?为什么?如果将精度改为 10-3,运行结果有变化吗?为什么?解答:如果对item赋初值0,则程序运行结果是pi=0,因为item为0时不满足while 循环的执行条件,即不执行循环,故 pi 值为 0。
如果将精度改为 10-3,运行结果会有变化,因为精度改变意味着 while 循环的条件改变,精度变大使得while循环次数减少,必然影响到n的值。
【练习 4-2】运行例 4-2程序时,如果将最后一个输入数据改为-2,运行结果有变化吗?如果第一个输入数据是 -1,运行结果是什么?为什么?解答:如果将最后一个输入数据改为-2,运行结果没有变化,因为最后一个负数是一结束标志,不进行统计,故任意一个负数都可以。
如果第一个输入数据是-1,运行结果是:Grade averageis 0,因为第一个输入就是-1,则while循环条件不成立,不执行循环体。
【练习4-3】序列求和(1-1/4+1/7-1/10+1/13-1/16+…):输入一个正实数eps, 计算序列1-1/4+1/7-1/10+1/13-1/16+…的值,精确到最后一项的绝对值小于eps (保留6位小数)。
试编写相应程序。
解答:#include <stdio.h>#include <math.h>int main(void){int denominator, flag;double item, s,eps;printf(“Input eps:”);scanf(“%lf”,&eps);flag = 1;denominator = 1 ;item = 1.0;s = 0;while(fabs (item) >= eps) {item = flag * 1.0 / denominator;s = s + item;flag = -flag;denominator = denominator +3;}printf ( “s = %f\n”, s);return 0;}【练习4-4】如果将例4-3程序中的do-while语句改为下列while语句,会影响程序的功能吗?为什么?再增加一条什么语句,就可以实现同样的功能?while(number != 0){number = number / 10; count ++;}解答:会有影响,因为当输入数据 number 为 0时,上述 while 循环将不执行,count 值仍为 0,故输出为 0,不符合题目要求。
C语言程序设计(第3版)-参考答案
C语言程序设计(第3版)-参考答案C语言程序设计(第3版) - 参考答案C语言是一种广泛应用于软件开发领域的编程语言,它具有高效、简洁、灵活等特点。
《C语言程序设计(第3版)》是一本经典的教材,本文将提供一些参考答案,帮助读者更好地理解和掌握C语言程序设计。
一、基础知识1. 什么是C语言?C语言是一种通用的编程语言,由贝尔实验室的Dennis Ritchie开发,在20世纪70年代广泛流行起来。
它被设计为一种低级语言,可以直接操作计算机硬件,并提供了足够的抽象层次来方便高级程序设计。
2. 如何输出“Hello, World!”?在C语言中,使用printf函数可以输出文本信息。
要输出“Hello, World!”,可以使用以下代码:```#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```3. 如何定义和使用变量?在C语言中,可以使用关键字`int`、`float`、`char`等定义变量。
例如:```int age = 20;float weight = 60.5;char grade = 'A';```定义后的变量可以用于存储不同类型的值,并在程序中进行操作和输出。
二、控制流程1. 什么是条件语句?条件语句允许程序通过判断条件来选择性地执行不同的代码块。
在C语言中,常用的条件语句是`if`语句。
例如:```if (score >= 60) {printf("Pass\n");} else {printf("Fail\n");}```根据变量`score`的值,判断学生是否及格并输出相应结果。
2. 什么是循环语句?循环语句可以重复执行一段代码块,以达到多次执行的目的。
在C 语言中,常用的循环语句有`for`、`while`和`do while`。
C语言程序设计(第3版)何钦铭 颜 晖 第3章 分支结构
第3章分支结构【练习 3-1】例 3-4 中使用 else-if 语句求解多分段函数,为了检查 else-if 语句的三个分支是否正确,已经设计了三组测试用例,请问还需要增加测试用例吗?为什么?如果要增加,请给出具体的测试用例并运行程序。
解答:最好再增加两组测试用例,因为尚未对分段函数参数的边界值进行测试。
可再给出 x=0和 x=15 时的两种情况。
【练习 3-2】计算符号函数的值:输入一个整数 x,计算并输出下列分段函数sign(x)的值。
-1 x<0y=sign(x)= 0 x=01 x>0解答:#include <stdio.h>int main(void){int x, y;printf("Enter x: " );scanf("%d",&x);if(x>0) y=1;else if (x==0) y=0;else y=-1;printf("sign( %d ) = %d\n",x,y);return 0;}【练习 3-3】统计学生平均成绩与及格人数:输入一个正整数 n,再输入 n 个学生的成绩,计算平均成绩,并统计所有及格学生的人数。
试编写相应程序。
解答:# include <stdio.h>int main(void){int count, i, n;double grade, total;printf("Enter n: ");scanf("%d", &n);total = 0;count = 0;for(i = 1; i <= n; i++){printf("Enter grade #%d: ", i);scanf ("%lf", &grade);total = total + grade;if(grade >= 60) count++;}printf("Grade average = %.2f\n", total / n);printf("Number of pass = %d\n", count);return 0;}【练习 3-4】统计字符:输入 10 个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。
C语言高教版第3版第三章三种基本控制结构上课件
„a‟<‘b‟ <‘c‟
关系表达式的值是一个逻辑值,即 【例2.18】判断以下关系表达式的值。 • “真”或“假”。 当 a = 3, b = 2, c = 1,请判断表达式的值 C语言没有逻辑型数据,以1代表“真”, 1. a > b 以“0”代表“假”。 1
2. (a > b) == c
只在a为假时,才判别b的值; 只在a、b都为假时,才判别 c的值
例 a=1;b=2;c=3;d=4;m=1;n=1; (m=a>b)&&(n=c>d)
结果m=0,n=1
【例】逻辑表达式的短路特性。例
复杂逻辑条件的表述
• 判断某一年year是否为闰年 1. 闰年 (year%4==0 && year%100!=0)||(year%400==0)
! 优先级:第2级 结合方向:自右向左
&&
||
优先级:第11级 结合方向:自左向右
优先级:第12级 结合方向:自左向右 /* 等价于(a<=x) && (x<=b)*/ /* 等价于(a>b)&&(x>y) */ /* 等价于 (a==b)||(x==y) */ /* 等价于(!a)||(a>b) */
有一个或多个输出
二、算法的描述工具
自然语言
(通俗易懂, 文字冗长, 容易有“歧义性”)
流程图
(灵活, 自由, 形象, 直观, 易理解, 占篇幅大)
N-S图
(新型流程图, 简洁)
伪代码
(介于自然语言和计算机语言之间, 中英文皆可,格式 自由, 易修改, 不直观, 不容易发现逻辑错误)
计算机语言
(用计算机实现算法, 可以执行出结果, 比如 C 语言)
C语言程序设计(何钦铭_颜晖_主编)ppt课件
printf("%d, %x\n", 012, 012);
return 0;
}
0……01010
精选ppt课件2021
32
例6-2(2) 输入整型数据
# include <stdio.h> int main(void) {
int a, b;
input a, b: 17 17 15 17 f, 17
printf("input a, b:");
'\n' '\101' '\x41' 'A'
所有字符都可以用转义字符表示
精选ppt课件2021
26
6.2.2 变量
在程序运行过程中,其值可以被改变的量。
变量必须先定义,后使用 定义变量时要指定变量名和数据类型 变量应该先赋值,后引用
精选ppt课件2021
27
变量名:合法的标识符
变量的定义
整型、实型、字符型数据的存储
6.1.2 基本数据类型
整型、实型、字符型
精选ppt课件2021
4
6.1.1 数据的存储-整型数据
设整数在内存中用2个字节存储
1 000 0001 1000 0001 0 000 0001 1000 0001
符号位 1:负数 0:正数
精选ppt课件2021
5
数值的表示方法-原码 反码 补码
16或32位
short [int] unsigned short [int] 16位
long [int] unsigned long [int]
32位
有符号 short
1 000 0000 0000 0000 -32768 -215
精品课件-C程序设计(第三版)(荣政)-第3章
第三章 C程序设计初步 3.1 结构化程序设计思想 3.2 C语句概述 3.3 赋值语句 3.4 数据输出 3.5 数据输入 3.6 程序设计举例 习题
第三章 C程序设计初步
3.1 结构化出好的程序,必须先搞懂什么样的程序才是好程序? 在计算机发展初期,由于计算机硬件价格比较贵,内存容量和运 算速度都受到一定的限制,当时程序质量的高低取决于程序所占 内存容量的大小和运行时间的长短。但是现在计算机经过迅猛的 发展,除了一些特殊场合,计算机内存容量和运算速度在编写一 般程序时,已不成问题。现在已没有必要为了节约很少的内存和 运算时间而采取使人难以理解的技巧了。一个难以理解的程序, 如果作为“产品”推广出去,所有的用户都要花费大量的时间、 精力去理解和消化它。而且在一个软件产品的使用期间往往需要 修改和维护它(例如发现程序中的某些错误; 增加一些新的功能; 或者将程序移植到不同的计算机系统上……),这时程序的可读性 和可维护性就变得越来越重要了。
第三章 C程序设计初步
结构化程序设计方法的核心有二: (1) 一个大的程序开发应当采取“自顶向下,逐步细化, 模块化”的方法。 (2) 任何程序均由具有良好特性的三种基本模块(顺序、 分支、循环)“堆积”搭成,即由基本小单元顺序组成一个大 结构,从而避免了使用goto语句的缺点。goto语句的随意跳转, 使程序转来转去难以理解。goto语句非常容易使程序脱离结构 化程序设计的轨道,故goto语句是结构化程序设计的大敌,除 一些特殊情况外应尽可能少用。 采用结构化程序设计方法设计程序时,是一个结构一个结 构地写下来,整个程序结构如同一串珠子一样次序清楚,层次 分明。在修改程序时,可以将某一基本结构单独取出来进行修 改,而不致于过大地影响到其余部分。
完整word版,C语言程序设计(第3版)何钦铭 颜 晖 第2章 C语言编写程序
第2章C语言编写程序【练习2-1】输出短句(Programming in C is fun!):在屏幕上显示一个短句“Programming in C is fun!”。
试编写相应程序。
解答:#include <stdio.h>int main(void){printf("Programming in C is fun!\n");return 0;}【练习2-2】下列语句的运行结果是什么?与例 2-2 的运行结果有何不同?为什么?printf("Programming is fun. And Programming in C is even more fun!\n"); 解答:运行结果:Programming is fun. And Programming in C is even more fun! 例 2-2 的运行结果分 2 行显示。
原因在于,例 2-2 中在每条输出语句的结尾都采用了‘\n’换行。
【练习2-3】输出倒三角图案:在屏幕上显示如下倒三角图案。
试编写相应程序。
* * * ** * ** **解答:#include<stdio.h>int main(void){printf("* * * *\n * * * \n * * \n * \n");return 0;}【练习2-4】温度转换:求华氏温度150°F 对应的摄氏温度(计算公式同例 2-3)。
试编写相应程序。
解答:#include<stdio.h>int main(void){double celsius,fahr;printf("Enter fahr:\n");scanf("%lf",&fahr);celsius=5.0*(fahr-32)/9;printf("celsius=%.2lf\n",celsius);return 0;}【练习2-5】算术表达式5*(fahr-32)/9 能改写成5(fahr-32)/9 吗?为什么?如果将其改写为5/9*(fahr-32),会影响运算结果吗?解答:5(fahr-32)/9 不是合法的 C 表达式,因为不能省略运算符*;5/9*(fahr-32)的值为 0。
《C语言程序设计(第3版)》电子教案 项目三 设计顺序结构程序
任务一 了解程序算法
二、了解算法的特征
通常,一个算法必须具备以下五个基本特征: 1.有穷性。一个算法必须在它所涉及的每一种情形下,都能在执行有
限次的操作之后结束; 2.确定性。算法的每一步,其顺序和内容都必须严格定义,而不能有
任何的歧义; 3.有零个或多个输入。输入是算法实施前需要从外界取得的信息,有
goto, return
下一页 返回
任务二 掌握格式化输出/输入
2. 函数调用语句 函数调用语句由一次函数调用加一个分号(语句结束标志)构
成。例如: printf(“This is a C Program.”); 3.表达式语句
表达式语句由表达式后加一个分号构成。 表达式能构成语句,是C语言的一大特色,最典型的表达式语 句是在赋值表达式后加一个分号构成的赋值语句。例如, “num=5”是一个赋值表达式,而“num=5;”却是一个赋值语句。
下一页 返回
任务二 掌握格式化输出/输入
(一)printf()函数的一般格式 printf("格式字符串", [输出项表]); 其中: “格式化字符串”由控制输出格式的字符组成的字符
串。输出表达式表是用逗号分隔的若干个表达式。C语言系统将按 照自右向左的顺序,依次计算“输出表达式表”中诸表达式的值, 然后按照“格式化字符串”中规定的格式输出到显示器上显示。 函数返回值为返回输出数据的个数。
上一页 下一页 返回
任务二 掌握格式化输出/输入
(二)printf()函数格式字符 格式指示符的一般形式为:%[修饰符]格式字符
其中,修饰符与格式字符的具体用法如下: 1.格式字符
printf函数中常用的格式字符如表3-1所示。 2.长度修饰符
C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 全部课后习题答案
3. /*输入一个学生的数学成绩,低于 60,输出“Fail” ,否则,输出“Pass” 。*/ #include<stdio.h> void main() { double mark; //输入数序成绩 printf(" Input a mark:\n"); scanf("%lf", &mark);
5. /*输入 4 个整数 n, 输出最小值。*/ #include<stdio.h> void main() { int a,b,c,d, min; //输入 4 整数 printf(" Input number of integers n:\n"); scanf("%d%d%d%d", &a,&b,&c,&d);
s ( s a )( s b)( s c), where s
abc 2
源程序: #include<stdio.h> #include<math.h> void main() { double a, b, c, s, area, perimeter; //输入三条边 a,b,c printf(" Input three edges a b c:"); scanf("%lf%lf%lf", &a,&b,&c); //判断 a b c 是否构成三角形 if(a+b>c || a+c>b || b+c>a) { perimeter =a+b+c; s =perimeter/2; area =sqrt( s*(s-a)*(s-b)*(s-c) ); printf(“ area=%.2f, parameter=%.2f \n”, area, parameter); } else printf("These sides do not correspond to a valid triangle. \n"); }
C语言程序设计(何欣铭、颜晖 第2版)课后习题答案
14
62
函数的概念
C语言中有两种类型函数
简单总结本节内容。 使学生了解自定义函数编程结构,能够模 仿编程即可。
标准库函数 自定义函数
函数可以做到一次定义、多次调用 使用自定义函数的程序框架
double fact(int n); int main(void) { …… result = fact(i); …… } /* 定义求 n! 的函数 */
1.3 习题参考答案
1 .对 C 语言来说,下列标识符中哪些是合法的,哪些是不合法的? t o t a l ,_ d e b u g ,L a r g e & T a l l ,C o u n t e r 1 ,b e g i n _ 解答:L a r g e & T a l l 不合法, 其余都合法。 2.改写本章 1.4 节中的流程图 1.2,求 1~100 中能被 6 整除的所有整数的和。 解答:
39
C语言程序的调试、运行步骤
编辑 编译 连接 运行
开始
源程序 .c / .cpp
目标程序 .obj
可执行程序 .exe
结果
语法 错误
连接 错误
运行 错误
修改程序,观察语法错误、逻辑错误及改 正方法。 ² 语法错误:可以删除一个分号,使编 译出现错误提示,改正之,再编译。 类比写文章有错别字。 ² 逻 辑 错 误 : 将 sum=sum+i 改 为 sum=sum-i,编译、连接、运行,发现 运行结果不符合题目要求。找出错误 (调试) ,改正之,再编译、连接、运 行,看结果。类比写文章词不达意。
输入n
i = 2
假
i<=n/2?
真 真
n能被 i整除?
C语言程序设计第三版
c语言程序设计第三版C语言程序设计第三版是一本面向初学者和中级程序员的教材,它不仅涵盖了C语言的基础知识,还深入探讨了高级编程技巧和最佳实践。
这本书的第三版在前两版的基础上进行了更新和改进,以适应现代编程环境和教学需求。
第一章:C语言简介本章介绍了C语言的历史和特点,包括其结构化编程的特性和在操作系统、嵌入式系统等领域的广泛应用。
同时,也简要介绍了C语言的编译和运行过程。
第二章:C语言基础这一章是C语言编程的入门,涵盖了变量、数据类型、运算符和表达式等基本概念。
通过实例代码,读者可以学习到如何声明变量、进行算术运算和逻辑运算。
第三章:控制结构控制结构是程序流程控制的核心,本章详细介绍了条件语句(if、switch)、循环语句(for、while、do-while)以及跳转语句(break、continue、goto)的使用方法和应用场景。
第四章:函数函数是C语言模块化编程的基础,本章介绍了函数的定义、声明、调用以及参数传递。
此外,还探讨了递归函数和内联函数的概念。
第五章:数组和字符串数组是存储多个数据项的集合,而字符串则是特殊的字符数组。
本章讲解了一维数组、多维数组、字符串的声明、初始化和操作,以及字符串处理函数的使用。
第六章:指针指针是C语言中非常强大的特性,它允许程序员直接操作内存地址。
本章深入讲解了指针的基本概念、指针与数组的关系、指针的算术运算以及函数指针。
第七章:结构体和联合体结构体和联合体是C语言中用于创建复杂数据结构的工具。
本章介绍了如何定义和使用结构体、联合体以及枚举类型,以及它们在实际编程中的应用。
第八章:预处理器预处理器是C语言编译过程中的一个阶段,它处理源代码中的宏定义、文件包含和条件编译等指令。
本章解释了预处理器的工作原理和常用指令。
第九章:文件操作文件操作是程序与外部世界交互的一种方式。
本章介绍了文件的打开、关闭、读写和定位等操作,以及文件指针的使用。
第十章:动态内存分配动态内存分配允许程序在运行时分配和释放内存。
《C语言程序设计》-何钦铭
《C语⾔程序设计》-何钦铭第⼀章引⾔1.2 程序与程序设计语⾔冯 · 诺依曼模型的存储程序概念:将程序与数据共同存储结构化的程序设计⽅法:将复杂程序划分为若⼲个相互独⽴的模块(⼀个模块可以是⼀条语句、⼀段程序或⼀个函数等)使完成每个模块的⼯作变得单纯⽽明确,在设计⼀个模块时不受其他模块的牵连。
同时,通过现有模块积⽊式的扩展就可以形成复杂的、更⼤的程序模块或程序1.3 C语⾔的发展历史与特点C语⾔的特点:(拥有底层操作能⼒)1.结构化语⾔2.易于移植3.简洁紧凑,使⽤⽅便灵活4.强⼤的处理能⼒5.⽣成的⽬标代码质量⾼,运⾏效率⾼第⼆章⽤C语⾔编写程序2.3 计算分段函数#include <stdio.h> //编译预处理指令程序运⾏时,⾸先从main函数开始运⾏%f指定输出时保留6位⼩数,%.2f则指定输出时保留2位⼩数循环体语句只能是⼀条语句(如果循环体语句由多条语句组成,必须⽤⼤括号把他们括起来,变成⼀条复合语句)整型数据的输出格式控制说明%md,指定了数据的输出宽度为m(包括符号位)。
若数据的实际位数(含符号位)⼩于m,左端补空格;若⼤于m,按实际位数输出实型数据的输出格式控制说明 %m.nf,指定了输出浮点型数据时保留n位⼩数,且输出宽度是m(包括符号位和⼩数点)。
若数据的实际位数(含符号位)⼩于m,左端补空格;若⼤于m,按实际位数输出f是针对浮点型数据⽽⾔,若输出数据为整型,则%m.nf应改为%md赋值运算符左边只能是⼀个变量第三章分⽀结构ch = getchar() //从键盘输⼊⼀个字符,并赋值给变量chputchar(输出参数); //输出参数是字符型变量或字符型常量第四章循环结构else和 if 的匹配准则:else与最靠近它的、没有与别的 else 匹配过的匹配do-while语句:循环条件需要在循环体中明确,且⾄少会执⾏⼀次循环体do {循环体语句} while (表达式);//判断⼀个数是否为素数#include <stdio.h>int main() {int i,m;printf("Enter a number:");scanf("%d", &m);for(i=2;i<=m/2;i++)if(m%i==0)break; //若m能被某个i整除,则m不是素数,提前结束循环if(i>m/2 && m!=1) //若循环正常结束,说明m不能被任何⼀个i整除printf("%d is a prime number! \n", m);elseprintf("No! \n");return 0;}break语句强制循环结束,不再执⾏循环体中位于其后的其他语句,break语句应该和if语句配合使⽤,即条件满⾜时,才执⾏break跳出循环;否则若break⽆条件执⾏,意味着永远不会执⾏循环体中break后⾯的其他语句continue语句:跳过循环体中continue后⾯的语句,继续下⼀次循环,continue语句⼀般也需要与if语句配合使⽤break语句和continue语句的区别在于,break结束循环,⽽continue跳过后⾯语句继续循环。
C语言程序设计 (何钦铭 颜晖 著)课后习题答案 浙江科学技术出版社
习题参考答案 习题一 1./*在C语言中,下列标识符中哪些是合法的,哪些不合法?”*/合法:total, _debug, Counter1, begin_不合法:Large&Tall2. /*写出流程图,求1~100中能被6整除的所有整数之和*/3./*写出源程序,求1~100中能被6整除的所有整数之和”。
*/#include<stdio.h>void main(){int sum=0, i;for(i=1; i<=100; i++)if( i%6==0) sum =sum+i;sum);printf(“sum=%d”,}4./*画流程图,判别整数n是否是素数*/习题参考答案 习题十1.选择题(1) A(2) C(由于p指向x, 等式p≡&x, *p≡x成立. 故&*p≡&x≡p)(3) B (int c[]={1, 7, 12}; → c[0]=1, c[1]=7, c[2]=12. 而k=c, 即k指向数组c的首元素c[0]。
printf(“…”, *++k); 输出参数*(++k)的值是*(k+1), 即c[1] )(4) D (对字符数组只能在定义的同时赋初值,但不能在定义之后再用‘=’赋值)(5) D(*p[3]是由3个整型指针组成的数组,p是数组名,代表该数组的基地址,是地址常量,不能对p赋值,故A,C错。
*p代表p[0]这个指针,a[0]是普通整型变量,两者不应互相赋值,故B错。
p[0]=&a[0]或p[0]=a,都是正确的,作用是令p[0]这个指针指向数组a的首元素a[0])(6) D ( 指针数组元素p[3]是一个指针,指向a[3*3]=a[9], 即*p[3]==a[9] 而二维数组元素p[3][2]= *(p[3]+2)=*(&a[9]+2)=*(&a[11])=a[11])2./*写输出结果*/(1) 3,2,5 # 3,3,4 #注: z是全局变量,它在p()中有效,但在main()中另有与它同名的局部变量,所以在main()中无效。
《C语言程序设计》第4版何钦铭、颜晖主编课后习题答案
《C语⾔程序设计》第4版何钦铭、颜晖主编课后习题答案第2章 ⽤C语⾔编写程序Page 0201#include<stdio.h>//练习2-32int main(void)3{4 int i,j,k;5 for(int i=1;i<=4;i++)//第i⾏6 {7 for(int j=1;j<=i-1;j++)//j个空格8 {9 printf(" ");10 }11 for(k=1;k<=5-i;k++)//k个*12 {13 printf("* ");14 }15 printf("\n");16 }1718 return 0;19}Page 0231#include<stdio.h>2int main(void)3{4 int f,c;//练习2-55 f=150;6 c=5*(f-32)/9;//或者是c=5/9.0*(f-32)||c=5.0/9*(f-32),但不可以是5/9,会得到0.因为:两个整型数据做除法运算,结果⼀定是整数。
7 printf("华⽒温度%d对应的摄⽒温度为%d.\n",f,c);89 printf("\n");1011 /*计算物体⾃由下落的距离(练习2-6)*/12 int h,g,t;13 t=3;//下落时间14 g=10;//重⼒加速度 10m/s^215 h=g*t*t/2;16 printf("⼀个物体从100⽶的⾼空⾃由下落,前3秒内下落的距离为:%d⽶.\n",h);1718 return 0;19}20Page 0292#include<math.h>3int main(void)4{5 /*计算摄⽒温度(练习2-8)*/6 double c,f;7 printf("输⼊华⽒温度:");8 scanf("%lf",&f);9 c=5*(f-32)/9.0;10 printf("华⽒温度%.2lf对应的摄⽒温度为%.3lf\n",f,c);1112 printf("\n");1314 /*整数四则运算(练习2-9)*/15 int x,y,z_1,z_2,z_3;16 double z_4;17 printf("输⼊两个正整数x,y:");18 scanf("%d %d",&x,&y);19 z_1=x+y;20 z_2=x-y;21 z_3=x*y;22 z_4=x/y;23 printf("%d和%d的和为%d,差为%d,积为%d,商为%lf\n",x,y,z_1,z_2,z_3,z_4); 2425 printf("\n");2627 /*计算分段函数(判断x是否不为0)(练习2-10)*/28 double x_1,y_1;29 printf("输⼊x_1:");30 scanf("%lf",&x_1);31 if(x_1!=0)32 y_1=1/x_1;33 else y_1=0;34 printf("输⼊%.2lf时,对应的y值为%.1lf\n",x_1,y_1);3536 printf("\n");3738 /*计算分段函数(判断x是否⼩于0)(练习2-11)*/39 double x_2,y_2;40 printf("输⼊x_2:");41 scanf("%lf",&x_2);42 if(x_2<0)43 y_2=pow(1+x_2,2)+2*x_2+1/x_2;44 else y_2=sqrt(x_2);45 printf("输⼊%.2lf时,对应的y值为%.2lf\n",x_2,y_2);464748 printf("\n");4950 return 0;51}Page 0372int main(void)3{4 int i,n,flag;//例2-85 double t,sum;6 printf("输⼊⼀个正整数n:");7 scanf("%d",&n);8 sum=0;9 flag=1;10 for(i=1;i<=n;i++)11 {12 t=flag*(1.0/(2*i-1));13 sum+=t;14 flag=(-1)*flag;1516 }17 printf("sum=%lf\n",sum);1819 printf("\n");2021 /*求1+1/2+···的前n项和(练习2-13)*/22 int n_1,j;23 double sum_1=0;24 printf("Enter n_1(n_1>=0):");25 scanf("%d",&n_1);26 for(j=1;j<=n;j++)27 {28 sum_1+=1.0/j;29 }30 printf("sum_1=%.2lf\n",sum_1);3132 printf("\n");3334 /*求1+1/3+1/5+···的前n项和(练习2-14)*/35 int n_2,k;36 double sum_2;37 printf("Enter n_2:");38 scanf("%d",&n_2);39 for(k=1;k<=n_2;k++)40 {41 sum_2+=1.0/(2*k-1);42 }43 printf("sum_2=%.2lf\n",sum_2);4445 printf("\n");4647 /*求1-1/4+1/7-1/10+···的前n项和(练习2-15)*/48 int n_3,m,flag_1=1;49 double sum_3=0;50 printf("Enter n_3:");51 scanf("%d",&n_3);52 for(m=1;m<=n;m++)53 {54 sum_3+=flag_1*1.0/(3*m-2);55 flag_1=flag_1*(-1);56 }57 printf("sum_3=%.2lf\n",sum_3);5859 return 0;60}Page 0402#include<math.h>3int main(void)4{5 int n,i;6 double power;7 printf("Enter n:");8 scanf("%d",&n);9 printf("2的乘⽅表:\n");10 for(i=0;i<=n;i++)11 {12 power=pow(2,i);13 printf("2的%d次⽅为%.0lf\n",i,power);14 }1516 printf("\n");1718 /*3的乘⽅表(练习2-17)*/19 int m,j;20 double power_1;21 printf("Enter m:");22 scanf("%d",&m);23 for(j=0;j<=m;j++)24 {25 power_1=pow(3,j);26 printf("pow(3,%d)=%.lf\n",j,power_1);27 }2829 return 0;30}1#include<stdio.h>//练习2-182double fact(int n)3{4 int i;5 double product;6 product=1;7 for(i=1;i<=n;i++)8 {9 product*=i;10 }1112 return product;13}14int main(void)15{16 int n,m,i;17 double result_1,result_2,result_3,c;18 printf("输⼊两个正整数m和n(m<=n):");19 scanf("%d %d",&m,&n);20 for(i=0;i<=n;i++)21 {22 result_1=fact(i);23 }24 for(i=0;i<=m;i++)25 {26 result_2=fact(i);27 }28 for(i=0;i<=n-m;i++)29 {30 result_3=fact(i);31 }32 c=result_1/(result_2*result_3);33 printf("c=%.lf",c);3435 return 0;36}。
C语言程序设计(何欣铭、颜晖 第2版)课后习题答案
解答: #include <stdio.h> int main(void) { int flag, i, n, denominator; double item, sum; scanf("%d", &n); sum = 0; flag = 1; denominator = 1; for(i = 1; i <= n; i++){ item = flag * 1.0 / denominator; sum = sum + item; flag = -flag; denominator = denominator + 3; } printf("sum = %.3f\n", sum); return 0; } 2-16 编写程序,输入两个正整数 m 和 n,计算 m! + n!。 解答: #include "stdio.h"
22
int main(void) { int i, m, n; double fm, fn; scanf("%d%d", &m, &n); fm = 1; for(i = 1; i <= m; i++) fm = fm * i; fn = 1; for (i = 1; i <= n; i++) fn = fn * i; printf("%d! + %d! = %.0f\n", m, n, fm+fn); return 0; } 2-17 执行下列程序段后,sum 的值是 for (i = 1; i <= 10; i++){ sum = 0; sum = sum + i; } 解答:sum 的值是 10。 。
《C语言程序设计》(第3版)-何钦铭-12章 chap03_分支结构
Input your number:38 Ok! you are right!
printf("Ok! you are right!\n");
else
if(yournumber > mynumber )
printf("Sorry! your number is bigger than my number!\n");
digit ++; else
input 10 characters: Reold 123?
other ++;
letter=5, digit=3, other=2
}
printf(“letter=%d,digit=%d,other=%d\n”, letter, digit, other);
#include <> int main(void) { int digit, i, letter, other;
例3-7 输入10个字符,统计 其中英文字母、数字字符
char ch;
和其他字符的个数。
digit = letter = other = 0;
printf(“Enter 10 characters: ");
printf( “It is a letter.\n”); else
printf(“It is not a letter.\n ”);
-1 <= x <= 1
0
-1
1
x
x >= -1 并且 x <= 1
x >= -1 && x <= 1
逻辑与 && 逻辑或 || 逻辑非 !
C语言程序设计任务驱动式教程 第3版 第三单元 顺序结构程序设计
(一)你了解程序设计语言吗
2.高级语言 20世纪50年代出现了FORTRAN语言,20世纪60年代先后出现了COBOL、ALGOL60、
BASIC等语言,后来又出现了PASCAL、C、C++等。
这些语言的特点是:用一种接近自然语言和数学语言的专用语言来表示算法,而且与具 体的计算机无关,即用它所写的程序可以在任何一种计算机上运行。高级语言的出现大大提 高了程序设计的效率,使人们能更方便地使用计算机。
目录导航
任务1 菜单设计—算法与程序基本结构 任务2 小写字母转换为大写字母—字符输入输出函数 任务3 输出学生个人信息—格式化输入输出函数 单元小结 思考与训练
任务2 小写字母转换为大写字母—字符输入输出函数
工作任务
晓伟和明宽两个小朋友刚刚学习了英文中的26个英文字母,为了加强练习, 晓伟写出大写字母,明宽写出与之对应的小写字母,请编写一个C语言程序, 模拟上述过程。
2.选定算法,并用适当的工具描述
算法是解决问题的方法与步骤。设计算法也是一件非常困难的工作,经常采用的算法设 计技术主要有迭代法、穷举搜索法、递推法等。另外,解决一个问题往往有多种算法,算法 的好坏直接影响到程序的质量。
(二)程序设计方法简介
3.编写程序 每种语言都有自己的特点,为一个特定的项目选择语言时通常可以考虑以下因素。
程序测试的目的是尽可能多地发现程序中的错误和缺陷。要进行测试,除了要有测试数 据外,还应同时给出该组测试数据应该得到怎样的输出结果。在测试时,将实际的输出结果 与预期结果比较,若不同则表示发现了错误。对非法的和非预期的输入数据也要像合法的和 预期的输入数据一样进行测试。另外,还要检查程序是否做了不应该做的事。
任务1 菜单设计—算法与程序基本结构
C语言程序设计(第3版) PPT,第3章 分支结构程序设计
C语言程序设计(第3版)张磊编著 清华大学出版社
3.1 简单条件的分支程序
3.1.1判断优等生程序 3.1.2关系表达式
3.1.3 if语句
C语言程序设计(第3版)张磊编著 清华大学出版社
3.1.1判断优等生程序
例3-1 输入一个学生的两门课的成绩, 若平均成绩不低于90分,则显示“优 等生”,否则显示“要加油啊!”。 1.程序 /* program e3-1.c */ #include<stdio.h> void main() { int a1,a2,ave; printf("输入两门课的成绩:"); scanf("%d,%d",&a1,&a2); ave=(a1+a2)/2; if(ave>=90) /* 分支控制 */ printf("优等生!\n"); else printf("要加油啊!\n"); } 2.程序解析 程序中的if-else命令用于实现分支控 制,分支处理的条件是“ave>=90”。当 ave>=90成立时,执行语句“printf(”优 等生!\n“);”,输出字符串“优等生!”;否 则,执行语句“printf(”要加油啊!\n“);”, 输出字符串“要加油啊!”。 第一次执行结果 输入两门课的成绩:88,96 优等生! 第二次执行结果 输入两门课的成绩:77,85 要加油啊!
C语言程序设计(第3版)张磊编著 清华大学出版社
3.1.3 if语句--if语句的一般形式
例3-2 计算分段函数的值。
x 25 y x 25
开始 输入x 假
(x 0) (x 0)
x>0 真 y=x+25
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章分支结构【练习 3-1】例 3-4 中使用 else-if 语句求解多分段函数,为了检查 else-if 语句的三个分支是否正确,已经设计了三组测试用例,请问还需要增加测试用例吗?为什么?如果要增加,请给出具体的测试用例并运行程序。
解答:最好再增加两组测试用例,因为尚未对分段函数参数的边界值进行测试。
可再给出 x=0和 x=15 时的两种情况。
【练习 3-2】计算符号函数的值:输入一个整数 x,计算并输出下列分段函数sign(x)的值。
-1 x<0y=sign(x)= 0 x=01 x>0解答:#include <stdio.h>int main(void){int x, y;printf("Enter x: " );scanf("%d",&x);if(x>0) y=1;else if (x==0) y=0;else y=-1;printf("sign( %d ) = %d\n",x,y);return 0;}【练习 3-3】统计学生平均成绩与及格人数:输入一个正整数 n,再输入 n 个学生的成绩,计算平均成绩,并统计所有及格学生的人数。
试编写相应程序。
解答:# include <stdio.h>int main(void){int count, i, n;double grade, total;printf("Enter n: ");scanf("%d", &n);total = 0;count = 0;for(i = 1; i <= n; i++){printf("Enter grade #%d: ", i);scanf ("%lf", &grade);total = total + grade;if(grade >= 60) count++;}printf("Grade average = %.2f\n", total / n);printf("Number of pass = %d\n", count);return 0;}【练习 3-4】统计字符:输入 10 个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。
试编写相应程序。
解答:#include <stdio.h>int main(void){int i;int blank, digit, letter, other;char c;blank = digit = letter = other = 0;for(i=1;i<=15;i++){c = getchar();if(c>='a' && c <= 'z' || c>='A' && c <= 'Z')letter++;else if(c>='0' && c <= '9')digit++;else if(c==' '||c=='\n')blank++;elseother++;}printf("letter=%d,blank=%d,digit=%d,other=%d\n", letter, blan k, digit, other);return 0;}【练习3-5】输出闰年:输出21世纪中截至某个年份之前的所有闰年年份。
判断闰年的条件是:能被4整除但不能被100整除,或者能被400整除。
试编写相应程序。
解答:# include <stdio.h>int main(void){int year;printf("Enter year: ");scanf("%d", &year);for(;year>=2000;year--){if( (year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0) printf("It is a leap year\n");elseprintf("It is not a leap year\n ");}return 0;}【练习 3-6】在例 3-8 程序中,如果把switch语句中所有的break都去掉,运行结果会改变吗?如果有变化,输出什么?为什么?解答:如果去掉所有的 break 语句,运行结果会改变,输出 price = 0.0,因为不管choice 值与其中某个常量表达式相等,当去掉 break 语句时,其后的所有语句段都将运行,故每次都将执行到 price=0.0 语句为止。
【练习 3-7】成绩转换:输入一个百分制成绩,将其转换为五分制成绩。
百分制成绩到五分制成绩的转换规则:大于或等于90分为A,小于90分且大于或等于80分为B,小于80分且大于或等于70分为C,小于70分且大于或等于60分为D,小于60分为E。
试编写相应程序。
解答:#include <stdio.h>int main(void){double grade;printf("Input grade: ");scanf(“%lf”,&grade);If(grade>=90) printf("A");else if(grade>=80) printf("B");else if(grade>=70) printf("C");else if(grade>=60) printf("D");else printf("E");return 0;}或#include <stdio.h>int main(void){double score;char grade;printf("Input your score: ");scanf("%lf",&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;default:grade='E'; break;}printf("Your grade is: %c",grade);return 0;}【练习 3-8】查询水果的单价:有 4 种水果,苹果(apples)、梨(pears)、桔子(oranges)和葡萄(grapes),单价分别是 3.00 元/公斤,2.50 元/公斤,4.10 元/公斤和 10.20 元/公斤。
在屏幕上显示以下菜单(编号和选项),用户可以连续查询水果的单价,当查询次数超过 5 次时,自动退出查询;不到 5 次时,用户可以选择退出。
当用户输入编号 1~4,显示相应水果的单价(保留两位小数);输入 0,退出查询;输入其他编号,显示价格为 0。
试编写相应程序。
[1] apples[2] pears[3] oranges[4] grapes[0] Exit解答:#include <stdio.h>int main(void){int ri;int choice;float price;for(ri=1; ri<=5; ri++){printf("[1] apples\n");printf("[2] pears\n");printf("[3] oranges\n");printf("[4] grapes\n");printf("[0] Exit\n");scanf("%d", &choice);if(choice==0)break;else {switch(choice){case 1: price=3.00; break;case 2: price=2.50; break;case 3: price=4.10; break;case 4: price=10.20; break;default: price=0;break;}printf("price=%0.2f\n", price);}return 0;}【练习3-9】请读者重新编写例 3-4 的程序,要求使用嵌套的 if - else 语句,并上机运行。
解答:#include <stdio.h>int main(void){double x, y;printf("Enter x:");scanf("%lf", &x);if (x >15){y = 2.5 * x - 10.5;}else {if(x<0)y=0;elsey=4*x/3;}printf("f(%.2f)=%.2f\n", x, y);return 0;}【练习 3-10】在例 3-12 中,改写 if 语句前,y= x + 1;和 y= x + 2; 两条语句的执行条件是什么?改写后呢?解答:改写前:y=x+1 的执行条件是 x<1; y=x+2 的执行条件是 1<=x<2。
改写后:y=x+1 的执行条件是 x<1; y=x+2 的执行条件是 2<=x。
习题3一.选择题1.能正确表示逻辑关系:“a≥10 或a≤0”的 C 语言表达式是 D 。
A.a >= 10 or a <= 0 B.a >= 0 | a <= 10C.a >= 10 && a <= 0 D. a >= 10 || a <= 02.在嵌套使用if语句时,C语言规定else 总是 C 。
A.和之前与其具有相同缩进位置的if 配对B.和之前与其最近的if 配对C.和之前与其最近的且不带else的if配对D.和之前的第一个if 配对3.下列叙述中正确的是 D 。