C语言程序设计(第3版)何钦铭 颜 晖 第3章 分支结构

合集下载

C语言程序设计第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语言程序设计(第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章 分支结构

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版第三章三种基本控制结构上课件

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课件

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章
第三章 C程序设计初步
第三章 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语言编写程序

完整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版)》电子教案 项目三 设计顺序结构程序

《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.长度修饰符
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 。

相关文档
最新文档