第3章C程序的流程控制
程序设计教程(机械工业出版社)课后习题答案第3章程序的流程控制――语句.docx
第3章程序的流程控制一一语句1、编写一个程序,将华氏温度转换为摄氏温度。
转换公式为:c= |(f-32),其屮,c为摄氏温度,f为华氏温度解:#include <iostream>using namespace std;int main(){ double c, f;cout «H Please input an F-temperature : n « end!;cin » f;c = (f-32)*5/9;cout « "The C-temperature is :u « c « endl;return 0;)2、编写一个程序,将用24小时制表示的时间转换为12小时制表示的时间。
例如,输入20和16 (20点16分),输出8:16pm;输入8和16 (8点16分),输出8:16am。
解:#include <iostream>using namespace std;int main(){ int hour, minute;char noon;cout «H Please input a time in 24-hour format: u « endl;cout« "hour: M; cin » hour;if (hour<0 || hour>23){ cout « "The input hour is wrong!0 « endl;return -1;}讦(hour> 12){ hour =hour - 12;noon = p;}elsenoon = X;cout«H minute: M; cin » minute;if (minute<0 || minute>59){ cout « "The input minute is wrong!n « endl;return -1;)cout « endl «”The time in 12-hour format is : n « hour «« minute;if (noon == P)cout «M pm u « endl;elsecout «H am n « endl;return 0;}3、编写一个程序,分别按正向和逆向输出小写字母a〜z。
C语言程序 第三章流程控制
6.输出斐波那契(Fibonacci)数列的前20项。该数列的第1项和第2项为1,从第3项开始,每一项均为其前面2项之各和,即:1,1,2,3,5,8,......。
7.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,只剩下一个桃子了。问第一天共摘了多少。
第三章流程控制
习题:
1.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
2.求Sn =a+aa+aaa+…aa…a之值,其中a是一个数字,n表示a的位数,例如:
2+22+222+2222+22222(此时n=5),n由键盘输入。
3.求 (即求1!+2!+3!+4!+…+20!
4.求 。
10.出x的差的绝对值小于10-5。
(1)设定一个x的初值。
(2)用以上公式求出的下一个值x1
(3)再将x1代入以上公式右侧的xn,求出x的下一个值x2;
如此继续下去,直到前后两次求出的x值(xn和xn+1)满足以下关系:|
9.用二分法求下面方程在(-10,10)之间的根:
C语言程序的流程控制
第3章C语言程序的流程控制利用计算机进行程序设计时,不仅仅只处理一些简单的数据,在大部分的程序设计里处理的问题还是相当复杂的。
对于那些复杂的程序设计,读者不可能直接就能写出程序的源代码,而是要通过一些具体的设计方法(如用程序流程图)把程序设计思想先写出来,然后根据程序流程图编写代码。
本章将具体介绍进行程序设计时使用的基本方法和C程序的流程控制。
3.1程序设计的基本知识3.1.1程序流程图在描述一个程序的基本结构思想时有很多种方法,其中程序流程图是最常用也是最基本的方法。
1.传统程序流程图传统流程图表示法的特点是用一些图框表示各种类型的操作,用线表示这些操作的执行顺序。
美国国家标准化协会ANSI规定了一些常用的流程图符号,现已为世界各国普遍采用。
我国也有自己的国家标准GB 1526-89与该标准基本相同,本书就参照ANSI标准做具体介绍。
标准中各种图示如图3.1所示。
起止框输入输出框判断框处理框或流程线连接点注释框图3.1 传统流程图表示法下面对其中一些主要符号作简要说明:(1)起止框是用来标识程序的开始和结束位置的。
规定流程图以起止框开始,以起止框结束。
(2)输入输出框也叫数据框,其中可以注明数据名称、来源、用途或其它的文字说明。
(3)菱形框的作用是对一个给定的条件进行判断,根据给定的条件是否成立来决定如何执行其后的操作。
(4)处理框用矩形表示各种处理功能。
例如,执行一个或一组特定的操作,从而使信息的值、信息的形式或所在位置发生变化。
另外在矩形框内可注明特定处理名称或其简要功能。
(5)流程线用带箭头的直线表示程序的执行顺序。
当流程自左向右或自上向下时流程线可以不带箭头,其它情况应加箭头表示流程。
(6)连接点用小圆圈表示将画在不同地方的流程线连接起来。
下图中有两个以①为标志的连接点,它表示这两个点是互联在一起的,实际它们是同一个点。
这种连接通常用在图形画不下而需要分开画时。
①①(7)注释框不是流程图的必要部分,其不反映流程操作,只是为了流程图中某些操作做解释补充的,以帮助阅读流程图的人更好的理解流程图的作用。
06c语言程序设计教案程序的控制结构—顺序结构
06c语言程序设计教案程序的控制结构—顺序结构int a=-1;printf(“%d,%o”,a,a);输出结果为:-1,177777这是因为-1在内存中以补码形式存放(见图3-2)。
八进制数为从低位开始,以三位一组划分为一个八进制数。
3)x格式符。
以十六进制数无符号形式输出整数。
例如:int a=-1;printf(“%x,%o,%d”,a,a,a);输出结果为:ffff,177777,-1十六进制数为从低位开始,见图3-2,以四位一组划分为一个数。
4)u格式符。
以十进制数无符号形式输出整数。
一个有符号的(int)型数据能够用%d格式输出,也能够用%u格式输出。
要注意两类数据的取值范畴大小。
例如:无符号数据的输出。
main(){unsigned int x=65535;int y=-1;printf(“x=%d,%o,%x,%u\n”,x,x,x,x);printf(“y=%d,%o,%x,%u\n”,y,y,y,y);}运行结果为:x=-1,177777,ffff,65535y=-1,177777,ffff,65535即-1的二进制形式以无符号形式输出时为整数65535。
5)c格式符。
用来输出一个字符。
例如:char x=’A’;printf(“%c,%d\n”,x,x);运行结果为:A,65能够看出,一个范畴在0~255的整数,既能够用%d格式输出,也能够用%c格式输出。
输出该整数或者整数对应ASCII的字符。
6)s格式符。
用来输出一个字符串,该格式有以下用法:①%s例如:printf(“%s”,”HELLO”);运行结果为:HELLO②%±ms,假如%ms字符串的实际宽度小于m,右对齐,左端补空格,%-ms,字符串左对齐,右端补空格;否则,不受m限制,输出实际宽度。
③%±m.ns,若%m.ns取字符串左端n个字符,输出在m列的右端,左端补空格;%-m.ns,取字符串左端n个字符,输出在m列的左侧,右侧补空格;若m<n,则m自动取n 值输出n个字符。
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 语言)
11-12-2学期C语言 第3章 C程序的流程控制2
第三章 C程序的流程控制
【例2】用while语句求
n。
n 1
100
用传统流程图和N-S结构流程图表示算法,见图:
第三章 C程序的流程控制
【例2】用while语句求
n。
n 1
100
循环初值
循环变量增值
#include <stdio.h> main() { int i,sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("%d",sum); }
第三章 C程序的流程控制
标号:语句; … ... 注意: goto 语句标号;
标号是一个有效的标识符,标识符加上一个“:”一起出现在函数内
某处, 执行goto语句后,程序将跳转到该标号处并执行其后的语句。
标号必须与goto语句同处于一个函数中,但可以不在一个循环层中。
通常goto语句与if条件语句连用。
第三章C程序的流程控制
例: #include<stdio.h> main( ) { int i; for(i=0;i<10;i++) putchar(‘a’+i); }
例: #include<stdio.h> main( ) { int i=0; for(;i<10;i++) putchar(‘a’+i); }
3.1.4 for 语 句
C中,for语句使用最为灵活,可完全取代 while 语句。
一般形式为: for(表达式1;表达式2;表达式3) 语句
执行过程:
1)先求解表达式1。
2)求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然 后执行下面第3)步;若其值为假(0),则结束循环,转到第5)步。
C语言_第3章
简单程序的流程一般分为顺序结构、选择结构和循环结 构。其中顺序结构是最基本的控制结构,其包含的语句 是按照书写的顺序执行,且每条语句都将被执行。
程序流程如图3.1所示, #include<stdio.h> 语句按书写顺序执行。 main( ) 先执行A,再执行B。 {int a=10,x=5,y=6;
三、复合语句
用一对花括号,把若干条语句括起来,
就形成了一条复合语句。形式如下:
{[内部数据描述语句]
其中定义的变量是
语句1; …… 语句n;}
复合语句结束的 “}”之后,不需
局部变量,仅在复 合语句中有效。
要再加分号。
花括号中的语句,可以是简单语句、空语句、复合 语句、流程控制语句,所有这些语句括在一起,在 语法上看成是一条语句,执行时顺序执行花括号中 的每条语句。复合语句多用于流程控制语句中。
printf(“\n%d,%d”,a+i,i++);}
四、格式输入函数 格式输入函数一般形式 scanf(“格式控制字符串”,地址列表); 功能:按指定的格式从键盘上把数据输入到指定的 变量之中 。 在scanf语句的格式控制字符串中,有两类字符: 普通字符:必须按原样输入,不能省略; 格式说明部分:由%引导的格式字符串组成。
scanf语句格式说明部分的一般格式为: %[*][width][F|N][h|L]type type是必须的,表示输入后转换的数据类型。
d(D) o(O) x(X) i(I) u(U)
c s f,e,g F,E,G n
%
十进制整数 八进制整数 十六进制整数 自动根据数头分辨十、八、十六进制 无符号十进制整数 单个字符 字符串 实数
电大C语言程序设计 第3章 流程控制语句
第3章 流程控制语句 章 (二) 教学要求 二 理解:各种语句的定义格式; 理解:各种语句的定义格式; 应用:分析程序, 应用:分析程序,按照解决问题的需要 编写出相应程序。 编写出相应程序。
第3章 流程控制语句 章 3.1 流程控制语句概述 1.流程控制:控制语句执行的顺序 流程控制: 流程控制 2.流程控制的方式 三种 流程控制的方式(三种 流程控制的方式 三种) ①顺序控制 ②条件分支控制 ③循环控制 3. 程序结构的分类 ①顺序结构 条件分支结构: 语句和switch语句实现。 语句实现。 ②条件分支结构:由if语句和 语句和 语句实现 循环结构: 语句、 语句和 语句和do…while ③循环结构:由while语句、for语句和 语句 语句实现。 语句实现。
第3章 流程控制语句 章 3.4 for语句 语句 6. 应用编程举例 例3_5:假设平均值、方差和均方差用变量 :假设平均值、方差和均方差用变量v, f和t表示,则有: 表示, 和 表示 则有:
1 1 2 2 v = ∑xi f = ∑xi − v t = f n i=1 n i=1
n
n
第3章 流程控制语句 章 3.4 for语句 语句 6. 应用编程举例 例3_6:由勾股定理可知,在一个直角三角形 :由勾股定理可知, 两条直角边a和 与斜边 与斜边c的关系为 中,两条直角边 和b与斜边 的关系为 a2+b2=c2,编一程序求出每条直角边均不大于 编一程序求出每条直角边均不大于 30的所有整数解。如(3,4,5),(5,12,13)都是解。 的所有整数解。 都是解。 的所有整数解 都是解 之间的所有素数。 例3_7:编一程序求出 :编一程序求出2~99之间的所有素数。 之间的所有素数
第3章 流程控制语句 章 3.2 if语句 语句 4.if语句嵌套 语句嵌套 c++规定,else总是和其前面最近的尚未配 规定, 规定 总是和其前面最近的尚未配 对的且可见的if配对。 对的且可见的 配对。 配对 (1)if(p1) if(p2) s1 else s2 (2)if(p1) { if(p2) s1 s2 } else p3 (3)if(p1) s1 else if(p2) s2 else s3
C语言程序设计基础讲解PPT第3章(第二讲)
14
与 哪 个 if 配 对 ? ⑶ if (c<=100) if (c>=50) printf("50<=c<=100\n"); else printf("c<50\n")
2019/1/8
再例如:
if(a>b) if(a>c) if(a>d) m=1; else m=2; else m=3; 问题:哪一个 else 和哪一个 if 相匹配?
24
2019/1/8
注意:
25
switch语句的书写格式:语句体本身必须用花括 号括起;case和default后面如果有多条语句, 则可以不必使用花括号;case和常量表达式之 间必须有空格;default可以写在语句体的任何 位置,也可以省略不写 break语句可以改变case的语句标号作用,终止 后续case语句序列的执行。 switch语句和break 语句结合,可以实现程序的选择控制(break语 句还可以在循环语句中使用) 允许switch嵌套使用,但同一个switch语句中, 任意两个case的常量表达式值不能相同。
2019/1/8
程序:
#include "stdio.h" main( ) { char ch; ch=getchar( ); if (ch>='A' && ch<='Z') ch=ch+32; printf("%c\n",ch ); } 可使用条件表达式代替
程序运行情况如下: putchar(ch>='A' && ch<='Z' ? ch+32:ch); G putchar (' \n') g
C程序设计复习资料(含答案)
C程序设计复习要点第一章概述1.C程序的构成与结构特点2.C程序上机调试过程与流程第二章数据类型、运算量与表达式1.数据类型的种类(基本数据类型和构造数据类型)2.常量的数据类型及其表示(表示方法、存储字节数与表数范围)——整、实、字符、字符串和转义字符3.变量的命名、定义方法与赋初值4.各种表达式及其运算规则——优先级、结合性、类型自动转换与强制转换●算术运算符、表达式及其构造(注意“/”和“%”特殊性)●自增、自减运算符及其简单表达式运算●赋值运算符及其表达式(注意复合赋值运算符的运算方法)●逗号运算符及其表达式第三章流程控制1.赋值语句的一般形式、赋值过程及赋值规则(注意左右数据类型的一致或兼容)2.输入和输出函数的格式、功能及用法(只要求常用的格式控制符d, f, c, s),提醒注意:●格式输出中域宽和小数位数的控制●格式输入与输出中普通字符的原样输入和输出问题●熟悉并区别以下函数:putchar()、printf()、puts();getchar()、scanf()、gets()3.关系运算符及其表达式、逻辑运算符及其表达式和条件运算符及其表达式的运算规则(优先级、结合性)4.关系表达式与逻辑表达式的构造(根据已知条件写表达式)5.if语句的三种形式:if …语句、if …else …语句、if 语句的嵌套●if 语句的格式与用法:简单if、嵌套if、并列if●逻辑关系与执行过程●嵌套规则(重点掌握if …else …if …else …if …else)6.switch语句的格式与用法7.*熟练使用if和switch语句阅读和编写较为简单的选择结构程序8.三种循环语句:while() …、do …while()、for()的格式、执行过程及其用法●循环变量初始化、循环条件构造、循环体所要实现的任务和控制变量修改注意循环期间与结束时循环控制变量的取值问题9.结合例题理解和区别break与continue语句的作用及其用法10.本章涉及的主要算法:累加(计数)、累乘、递推、穷举、判素数、求最大公约与最小公倍等11.*熟练使用三种循环语句并结合以上算法阅读和编写较为简单的循环结构及其嵌套程序第四章复杂数据类型1.一维、二维数组的定义、初始化及其引用方法(数据输入、输出、存储与处理)2.字符数组的定义、初始化及其引用(字符串输入、输出、存储与处理)3.常用字符串处理函数:gets()、puts()、strlen()、strcmp()、strcpy()4.数组涉及的主要算法:排序、极值、逆序、回文和字符串的连接、复制、求长度等5.*熟练使用数组并结合以上算法阅读和编写较为简单的程序6.指针的概念:指针、指针变量、指针运算(*、&、++、--、+、-)7.变量、数组和字符串指针的定义、指向与引用(仅限于一维数组)8.了解指针数组与二级指针的概念和定义9.*能够阅读并理解使用指针进行数据处理的相关程序(极值、逆序、回文和字符串的连接、复制、求长度等)10.结构体与共用体的概念、定义与引用(仅限概念)第五章结构化程序设计与应用1.熟悉程序的三种基本结构:顺序、选择和循环2.*通过其中部分例题掌握选择、循环语句的使用以及循环和数组涉及的主要算法第六章函数与编译预处理1.掌握函数的定义、声明和调用方法及参数传递方式2.*结合相关例题掌握一般函数和递归函数的定义与使用3.熟悉局部变量与全局变量的定义及作用范围,了解各种静态与动态变量的定义、作用范围与生存期4.了解内部函数与外部函数的定义及调用规则5.掌握宏定义与宏展开(重点掌握带参数宏的定义与展开)6.了解文件包含的作用及其使用场合第七章文件1.了解文件的概念2.熟悉文件打开、关闭及各种与文件读写有关函数的格式与用法特别提醒:以上带*部分主要涉及程序阅读、程序填空和编写程序,其余部分主要以选择和概念填空题出现3ae bc C语言程序设计参考题型说明:★本题仅反映考试的题型,作为考前复习参考。
《C语言程序设计》教案第三章程序的控制结构—循环结构while和dowhile
《C语言程序设计》课程教案表算法2:分析:设想用sum作为累加器,初值为0,利用sum+=i(i依次取值为1、2。
100)此分析需要解决的3个问题:1)sum=0,i=1;2)每执行一次sum+=i 后,i增1(i=i+1);3)判断如果i小于或等于100,重新执行步骤(2),否则停止计算main(){int i,s=0;i=1;while(i<=100)/*i<=100为循环条件*/{s=s+i;i++; /*改变i的值*/}printf(″s=%d″,s);}运行结果:s=5050说明:循环结构的三个术语:1、循环条件:循环结构中的条件表达式如while (i<=100)其中,i<100就是循环条件。
2、循环体:在每个循环周期均要执行一次的语句序列。
如while下用{ }括起来的语句序列。
3、循环控制变量:能够决定控制条件是真是假的量。
如while(i<=100)中的变量i要写出一个正确的循环结构,对控制变量要做三方面的工作:1、对循环控制变量赋初值。
2、将循环控制变量写入正确的控制条件。
3、对循环控制变量值的更新。
使用while语句需要注意以下几点:while语句的特点是先计算表达式的值,然后根据表达式的值决定是否执行循环体中的语句。
因此,如果表达式的值一开始就为“假”,那么循环体一次也不执行。
当循环体为多个语句组成,必须用{}括起来,形成复合语句。
在循环体中应有使循环趋于结束的语句,以避免“死循环”的发生。
下列情况,退出while循环条件表达式不成立(为零)循环体内遇break,gotowhile(s<=10){s=s+i*i;i++;}printf(“%d”,--i);}A) 4 B) 3 C) 5 D) 6对以下程序段,描述正确的是________________。
int x=0,s=0;while(!x!=0) s+=++x;printf(“%d”,s);A) 运行程序段后输出0 B) 运行程序段后输出1C) 程序段中的控制表达式是非法的D) 程序段循环无数次下面程序段的运行结果是[ ]。
11-12-2学期C语言 第3章 C程序的流程控制1
3.2.2 关系运算与关系表达式
(4)判定两个浮点数是否相等时,因存储上的误差,可能得出错误 的结果。 例如: 1.0/3.0*3.0==1.0 由于1.0/3.0得到的值在计算机中有效位数是有限的,因此上面 关系表达式的值为0(假),并不为1(真)。 ★应避免对两个实数表达式作‚相等‛或‚不相等‛的判别。 上式可改写为: fabs (1.0/3.0* 3.0-1.0)<1e-5 fabs是求绝对值函数。只要1.0/3.0与1.0之间的差小于10-5(或 一个其它的很小的数),就认为1.0/3.0*3.0与1.0相等。 (5)要表示x在区间[a,b]中,在数学中使用表达式a≤x≤b。但C 中应写成: a<=x && x<=b ‚&&‛是逻辑运算符‚与‛。a<=x的值为1(真)且x<=b的值 亦为1(真),则整个表达式的值为1(真)。
2. 算法的基本性质
算法应具备5个性质:
1、有穷性 2、确定性 性。 3、有零个或多个输入 外界取得必要的信息。 所谓输入是指在执行算法时可能需要从 一个算法应包含有限的操作步骤,而不能是无限的。 算法中的每一个步骤都应当是确定的,而不应当是
含糊的、模棱两可的。即:算法的含义应当是唯一的,不存在歧义
算术运算符
(高)
优先级相同(高)
关系运算符 赋值运算符 (低)
优先级相同(低)
关系运算符都是双目运算符,其结合性均为左结合。 关系运算符的优先级低于算术运算符,高于赋值运算符。
2.关系表达式的值 有两个!表达式成立,即为‚真‛(通常为1);表达式不成 立,即为‚假‛(0)。 例如: int x=2, y=3,z;
数学与信息学院
胡凤珠
3.1 算法
3.2 判断 3.3 选择型程序设计 3.4 循环型程序设计
C语言(第三章)(上)
• 早期 语言不提供专门的逻辑(布尔)类型,规定用非 值表示“真”,用0 早期C语言不提供专门的逻辑 布尔)类型,规定用非0值表示 语言不提供专门的逻辑( 值表示“ 值表示“ 值表示“假”。 • 表达式,只要值为非 (包括负数),就说明其为“真”;只要其值为 ,就 表达式,只要值为非0(包括负数),就说明其为“ ),就说明其为 只要其值为0, 说明其为“假”。从而给判断带来很大的灵活性。 说明其为“ 从而给判断带来很大的灵活性。 • 在C99中,增加了_Bool类型,并增加了头文件<stdbool.h>,在其中定义了 中 增加了 类型,并增加了头文件 , 类型 存储1, 存储0。 宏bool、true和false,用true存储 ,用false存储 。 、 和 , 存储 存储
注意: 注意:
•
中是允许的。 (1)表达式 >2>7>8在C中是允许的。 )表达式5> > > 在 中是允许的 整个关系表达式的值为多少?? 整个关系表达式的值为多少?? (2)关系表达式的值是整型数 或1,可以看成是一种整型表 )关系表达式的值是整型数0或 , 达式。 达式。 若有: 如,若有: int i=1, j=7,a; a=i+(j%4!=0); 则a的值为?? 的值为?? 的值为 值参与运算: (3)字符在关系表达式中出现按照其 )字符在关系表达式中出现按照其ASCII值参与运算: 值参与运算 的值分别为?? 如:‘a’>’A’ ‘b’==‘B’-32的值分别为?? 的值分别为 不相等”的判别, (4)避免对两个实数表达式作“相等”或“不相等”的判别, )避免对两个实数表达式作“相等” 考虑用其差绝对值之差小于一个很小的值的形式: 考虑用其差绝对值之差小于一个很小的值的形式: 如: fabs (1.0/3.0* 3.0-1.0)<1e-5 < 在区间[ ] 使用a< (5)表示 在区间[a,b]中,使用 <=x && x<=b )表示x在区间 < 例如: 例如: -10<=x && x<=10 < < 若使用: 若使用:-10≤x≤10。 。 若x=10,结果为?? ,结果为?? 若x=100,结果为?? ,结果为?? 若x=-100,结果为?? ,结果为??
c语言第3章
3.2.2 例题与分析
例题3.3 根据输入的加或减运算符,输出任意两个
分析本题的含义是根据用户从键盘输入的加运算符 或减运算符,在屏幕上输出相应的运算结果。首先 对题目进行分析和分解,然后再进行代码设计。问 题分析如图3.1
整型变量iop1, iop2 整型变量result 字符型变量operator
1 (x 0) y 0 (x 0)
1 (x 0)
为了避免此种情况,采用办法与情况1相似。改变 if...else的匹配关系,将情况2的代码修改如下,即 可正确表示符号函数。
if(x < 0) y = -1;
else if (x!=0) y = 1;
else y = 0;
例题3.6 求一元二次方程ax2+bx+ c = 0 分析由代数知识可知,方程的解有3种不同的情况,
/* 获得运算符 */
printf("please enter tow numbers:");/* 获得操作数 */
scanf("%d%d", &iop1, &iop2); if(operator == '+')/*由运算符决定不同运算*/
result = iop1 + iop2;
else
result = iop1 - iop2; printf("\n%d %c %d = %d\n", iop1, operator, iop2, result); /* 输出结果 */ }
方法1 main() {
int x, y; printf("please input a integer:"); scanf("%d", &x); if (x > 0) y = 1; else if (x == 0)
第3章 基本的程序流程控制结构
计算机程序设计基础(C语言) 3.3 选择结构的流程控制
3.3.1 条件判断
在顺序结构中,各语句是按排列的先后次序顺序执行的, 是无条件的,不必事先作任何平判断。但在实际中,常常 有这样的情况:要根据某个条件是否成立决定是否执行指 定的任务。例如: 如果你在家,我去拜访你; (需要判断你是否在家) 如果考试不及格,要补考; (需要判断是否及格) 周末我们去郊游; (需要判断是否是周末) 如果x>y,输出x,否则输入y。 (需要判断x是否大于y) 判断的结果应该是一个逻辑值:“是”或“否”,在计算 机语言中用“真”和“假”表示。例如,当x>y时,满足 “x>y”条件,就称条件“x>y”为真,如果x≤y,不满足 “x>y”条件,就称条件“x>y”为假。
}
计算机程序设计基础(C语言)
例3.3 求4个数中的最大值。
算法分析:程序的功能是输入4个数给a,b, c,d。把a先赋予变量max,再用语句判别 max和b的大小,如max小于b,则把b赋予 max。同理,max继续跟c和d比较即可使 得max中总是大数,最后输出max的值就 是4个数中的最大值。
计算机程序设计基础(C语言)
在判定两个浮点数是否相等时,由于计算机存储上 出现的误差,会出现错误的结果。例如: 1.0/3.0*3.0==1.0 在数学上显然应该是一个恒等式,但由于1.0/3.0得 到的值的有效位数是有限的,并不等于,因此上 面关系表达式的值为0(假),而不为1(真)。 所以应避免对两个实数表达式作“相等”或“不 相等”的判定。上式可以改写为: fabs(1.0/3.0*3.0-1.0)<1e-5
计算机程序设计基础(C语言) 3.3 选择结构的流程控制
967c语言程序设计参考书
967c语言程序设计参考书介绍本文档是一本C语言程序设计参考书,旨在帮助读者系统学习和掌握C语言编程。
通过详细的示例和解释,逐步引导读者理解C语言的基本概念和编程技巧,并提供在实际项目中应用这些知识的实例。
本书适合初学者和有一定编程基础的读者使用。
目录1.[第一章:C语言入门](#第一章:C语言入门)2.[第二章:数据类型和运算符](#第二章:数据类型和运算符)3.[第三章:流程控制](#第三章:流程控制)4.[第四章:函数与模块化编程](#第四章:函数与模块化编程)5.[第五章:数组与指针](#第五章:数组与指针)6.[第六章:结构体和联合体](#第六章:结构体和联合体)7.[第七章:文件操作](#第七章:文件操作)8.[第八章:动态内存分配](#第八章:动态内存分配)9.[第九章:高级C语言特性](#第九章:高级C语言特性)第一章:C语言入门1.1C语言简介C语言是一种通用的高级编程语言,具有简洁、高效的特点,被广泛应用于系统软件开发、嵌入式系统、游戏开发等领域。
本节将介绍C语言的起源和特点。
1.2开发环境搭建在学习C语言编程之前,我们需要正确配置开发环境。
本节将介绍如何搭建C语言开发环境,包括安装编译器、编辑器等。
1.3第一个C程序让我们从一个简单的"He ll oW or ld!"程序开始。
本节将教你如何编写、编译和运行你的第一个C程序。
第二章:数据类型和运算符2.1基本数据类型C语言提供了多种基本的数据类型,包括整型、浮点型、字符型等。
本节将介绍各种数据类型的定义和使用方法。
2.2运算符C语言支持各种算术、逻辑和关系运算符,用于完成不同类型的运算。
本节将详细介绍这些运算符的使用方法和优先级。
2.3类型转换在C语言中,不同类型的数据可以相互转换。
本节将介绍隐式和显式类型转换的规则,以及类型转换可能导致的一些问题。
第三章:流程控制3.1条件语句条件语句用于基于给定条件选择性地执行代码块。
第3章程序控制结构结构化程序的三种基本结构1、顺序结
Bohm和Jacopini的研究证实,所有的程序都能够只用以上 三种控制结构编写。
3.1 C语言的语句
3.3 分支结构 3.3.1 if 语句 一、if语句的三种形式 1、if(表达式) 语句
假 表达式
真 语句
当表达式值为真(非0)时,执 行if中的语句,否则执行if后的 语句。
可以是复 合语句
例: include <stdio.h> main( ) {int x=10,y=20,z;
z=x; if (z>y)
N
a=b=0,c不为0 Y 无解
N
a=0,b不为0 Y x= -c/b
N
d=b*b-4*a*c
d>0
N
d=0
N
1
Y X1= (-b+sqrt(d))/(2*a) X2= (-b-sqrt(d))/(2*a)
Y X1=X2= -b/(2*a)
1 该方程无实根
END
scanf(“%d”,&x); if (x<0) y=-1;
错误!
ssccaannff((““%%dd””,,&&xx));; iiff((xx>>==00))
else if(x==0);
if(x>i0f)(xy>=01); y=1;
y=0;
else ye=ls0e; y=0;
else y=1;
eellsseeyy==--11;;
计算机程序设计基础_精讲多练CC++_第3章
// 累加求和
22
例 3-7:制作乘法表---多重循环结构(循环的嵌套)
#include <iostream> using namespace std; int main() { int i, j; for(i=1; i<10; i++) { for(j=1; j<=i; j++) cout << j <<"*"<< i <<"="<<i*j <<"\t"; cout << endl; } return 0; }
算法分析:
取一个百分成绩经过运算得到5级制成绩。构造什么 样的表达式呢?
“百分成绩/10 =” ?
共有5个分数档,选择分支大于2,因此用多路开关语 句switch。 计算结果应该是唯一的。转换后应从switch中break 出来。
15
#include <iostream> using namespace std; int main() { int grade; cout<<"请输入(百分制)分数:"; cin >>grade; switch (grade/10) // 根据转换值进行分支选择 { case 10: case 9: cout<<"优秀"<<endl; break; case 8: cout<<"良好"<<endl; break; case 7: cout<<"中等"<<endl; break; case 6: cout<<"及格"<<endl; break; default: cout<<"不及格"<<endl; } return 0; }
C语言课件第三章C语言的基本控制结构
XUAN SHANLI
else stat2;
说明: ①书写采取缩进形式, 便于区分。 ②else与最近的if 相匹 配,从内到外。
if(e2#)include <stdio.h>
svtoatid3; main ( void)
else{
stiantt4x; ,y ;
合 称为isf结ca构nf的(“嵌%套d”。, 各&x种);if结构都
void main(void)
后置:先引用后运算。
{
int a=3,b;
XUAN SHANLI
b=a+++a++;
printf(“b=%d”,b);
合 b=++a+(++a);
printf(“b=%d”,b);
}
肥
工 ⒉在逻辑运算中,如果逻辑值能确定,则不需再进行运算。
int a=0,b=0 ++a || b++; /* b的值?*/
}
内层缩进。
举例:求一元二次方程ax2+bx+c=0的根。
XUAN SHANLI
#include <stdio.h>
#include <math.h>
void main(void)
{
float a,b,c,d,e,x1,x2;
scanf(“%f,%f,%f”,&a,&b,&c);
d=b*b-4.0*a*c;
XUAN SHANLI
第三章 C语言的基本控制结构合
肥 工 业 大 学
问题
b*b-4ac<0?
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•输入 3,5 •输出 8
scanf("%d,%d",&a,&b);
printf("%d",a+b);
}
PPT文档演模板
第3章C程序的流程控制
• “格式控制”中出现的普通字符,原样输入。
•例1: scanf("%d,%d",&a,&b); • 输入 3,4 • 则 3a, 4 b
%d %md %ld %mld
带符号的十进制整数
%o %mo %lo
无符号的八进制整数
%x %mx %lx
无符号的十六进制整数
%u %lu
无符号的十进制整数
%f %m.nf %-m.nf
小数形式的单、双精度数
%e %m.ne %-m.ne
指数形式的单、双精度数
%g
f、e格式中较短者忽略0
%c %mc
(a>b)= =c 表达式值等于___•_1__
b+c<a 表达式值等于__•_0___
d=a>b d值等于__•_1____
f=a>b>c f值等于__•_0____
•算术运算符 关系运算符 赋值运算符
•高
•低
PPT文档演模板
第3章C程序的流程控制
•例3.21 关系表达式的应用
#include <stdio.h>
long b=123456; printf("%d,%5d,%-5d,%2d\n",a,a,a,a); printf("b=%ld",b);
} • 运行结果: • 123,□□123,123□□,123 • b=123456
PPT文档演模板
第3章C程序的流程控制
2.%f──以小数形式输出单精度和双精度实数。
•写出下面表达式运算后a的值,设原 来a=12,a已定义为整型变量。
•a+=a-=a*=a
•a*=a a的值为12×12=144 •a-=144 a的值为144-144= 0 •a+=0 a的值为 0
PPT文档演模板
第3章C程序的流程控制
•3.3 输入输出
C语言无I/O语句,I/O操作由函数实现
•例2: scanf("%d:%d:%d",&a,&b,&c); • 输入 12:30:45 • 则 12 a, 30 b, 45 c
•例3: scanf("a=%d,b=%d,c=%d",&a,&b,&c); • 输入 a=12,b=24,c=36 • 则 12a, 24 b, 36c
PPT文档演模板
y%=a+3 等价于 y=y%(a+3) 3.赋值表达式的值:等于左边变量的值。 4.赋值表达式后加分号构成赋值语句。
PPT文档演模板
第3章C程序的流程控制
写出下面表达式运算后a的值 (a=3*5)=4*3
•a=3*5 a的值 •15 为 •a=4 *3 a的值 •12 为
PPT文档演模板
第3章C程序的流程控制
运逻算辑结运果算: 0的代表真“值假表”:,1代表“真”。
• a b !a !b a&&b a||b
• 非0 非0 0 0
1
1
• 非0 0 0 1
0
1
• 0 非0 1 0
0
1
•0 0 1 1
0
0
PPT文档演模板
第3章C程序的流程控制
•4.逻辑运算符的优先级
优先级 运算符
高
!
算术运算符
第3章C程序的流程控制
• 说明: –用"%c"格式符时,空格和转义字符 作为有效字符输入
例: scanf("%c%c%c",&c1,&c2,&c3);
若输入 a□b□c 则 ac1, '□' c2, b c3
PPT文档演模板
第3章C程序的流程控制
–输入数据时,遇以下情况认为该数 据结束: ➢ 遇空格、TAB、或回车 ➢ 遇指定的宽度结束 ➢ 遇非法输入 例: scanf("%d%c%f",&a,&b,&c); 若输入 1234a123o.26 则 1234 a, ‘a’ b, 123 c
第3章C程序的流程控制
PPT文档演模板
2020/11/26
第3章C程序的流程控制
•3.1 C语句
• C语句分为5类: ①控制语句:完成一定的控制功能。
选择语句:if…else、switch 循环语句:for、while、do…while 结束本次循环语句:continue 中止执行switch或循环语句:break 转向语句:goto 从函数返回语句:return
PPT文档演模板
第3章C程序的流程控制
3.3.3 字符数据的输入输出
一、 putchar函数(字符输出函数)
•格式:putchar(c) •参数:c为字符常量、变量或表达式。 •功能:将字符输出到显示器上。
PPT文档演模板
第3章C程序的流程控制
•例:
•#include <stdio.h>
•void main( ) •{ char a,b,c; • a='B';b= 'O'; c='Y';
void main( )
{
•运行结果:
int a,b,c;
1101
a=3;b=2;c=1;
printf("%d ", a>b);
printf("%d ", (a>b)==c);
printf("%d ", b+c<a);
printf("%d\n", a<b<c);
}
PPT文档演模板
第3章C程序的流程控制
PPT文档演模板
第3章C程序的流程控制
3.%c──输出一个字符。 例: #include <stdio.h> void main( ) {
char c='a'; printf("%c",c); } •运行结果:
•a
PPT文档演模板
第3章C程序的流程控制
4.%s──输出一个字符串。 例:
#include <stdio.h> void main( ) {
PPT文档演模板
第3章C程序的流程控制
②函数调用语句:由一个函数调用加一个 分号构成。
例如:printf("This is a C statement. ");
③表达式语句:由一个表达式加一个分号 构成。
例如: a=3; ④空语句:只有一个分号(;)的语句。
PPT文档演模板
第3章C程序的流程控制
⑤复合语句:用{ }括起来的一些语句。 例如: { z=x+y; t=z/100; printf("%f",t); }
#include <stdio.h>
•头文件
• 字符输出函数: putchar • 字符输入函数: getchar
格式输出函数: printf 格式输入函数: scanf
PPT文档演模板
第3章C程序的流程控制
•3.3.1 格式输出
printf函数(格式输出函数)
•格式:printf("格式控制",输出表列) •功能:按指定格式向显示器输出数据
3.优先级
< <= > >= (高)
==
PPT文档演模板
!= (低)
算术运算符 关系运算符 赋值运算符
高
•低 第3章C程序的流程控制
•4.关系表达式的值:如果表达式成立,值为 1, 表示“真”;否则,值为 0,表示“假” 。
5.举例:
int a=3,b=2,c=1,d,f; 则:
a>b
表达式值等于__•_1___
整数部分全部输出,并输出6位小数。
例3.10:按指定的小数位数输出实数 #include<stdio.h> void main( ) { float d=12.345; printf("d=%f,d=%.2f,d=%10.2f",d,d,d);
} •运行结果: •d=12.345000,d=12.35,d=□□□□□12.35
•运行结果: •BOY
• putchar(a); putchar(b); putchar(c); putchar('\n');
•}
•putchar(a);putchar('\n'); •putchar(b);putchar('\n');
•运行结果: •B •O
putchar(c);
•Y
PPT文档演模板
•} •运行情况:•Input r:3↙
•area= 28.27
•v=113.10
PPT文档演模板
第3章C程序的流程控制
•3.5 选择结构程序设计
•3.5.1 关系表达式
1.关系运算符:<、<=、>、>=、= =、!= 作用:进行比较运算。
2.关系表达式 形式:<表达式>关系运算符<表达式> 如:a<b、x>=0、x= =0
格式字符
使用形式
功能说明
d
%d %md %ld %hd
带符号的十进制整数
o
%o %mo %lo %ho