第三章 结构化程序设计.

Slides:



Advertisements
Similar presentations
CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
Advertisements

第一章 C语言概述 计算机公共教学部.
C语言实验 第一课 标题:学号+姓名.
第三讲 数据输入与输出 数据输出 数据输入.
第4章 选择结构程序设计 在现实生活中,需要进行判断和选择的情况是很多的 如果你在家,我去拜访你 如果考试不及格,要补考
第四章 顺序结构程序设计.
程序设计基础.
C#程序设计基础 $5 流程控制.
第2章 分支结构 P if语句 2.2 switch语句 2.3 用条件运算符转换大小写字母 2.4 程序举例
第3章 顺序结构程序设计 本章要点: 格式化输出函数──printf() 格式输入函数——scanf() 字符输出函数——putchar()
第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.3关系运算符和关系表达式
第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.3关系运算符和关系表达式
第3章 最简单的C程序设计 3.1 顺序程序设计举例 3.2 数据的表现形式及其运算 3.3 C语句 3.4 数据的输入输出.
C程序设计.
数据类型 第3章 3.1 C数据类型概述 3.2 常量 3.3 变量 3.4 基本输入与输出.
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
走进编程 程序的顺序结构(二).
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
C语言程序设计 第四章 顺序程序设计.
C语言是结构化程序设计语言,提供了功能丰富的控制语句,本章开始陆续介绍C语言的控制语句:顺序结构、选择结构和循环结构。本章主要介绍三种结构化设计的基本概念,格式输入输出函数printf()和scanf(),字符输入输出函数putchar()和getchar()等内容,要求重点掌握顺序结构设计的基本思想及程序编写方法,熟练掌握常见输入、输出库函数的调用。
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第二章 顺序结构 1 数据类型和标识符、常量与变量 2 运算符和表达式 3 简单的输入输出 4 程序举例.
Chap 3 分支结构 3.1 统计输入的一批字符中各类字符的数量 3.2 查询自动售货机中商品的价格 3.3 分支结构程序设计.
第二章 基本数据类型与输入输出.
第三单元 数据的输入、赋值处理与输出 从现在开始,将详细讲述C语言的方方面面。第一章中的所有疑惑,都将一一消灭。
C语言程序设计基础 刘新国.
第二章 Java语言基础.
程序设计基础 谭浩强 著 清华大学出版社.
C语言大学实用教程 第三章 简单的C程序设计 西南财经大学经济信息工程学院 刘家芬
第三章 顺序结构程序设计 主讲教师 贾月乐 电话:
第3章 顺序结构程序设计 为了让计算机处理各种数据,首先就应该把源数据输入到计算机中;计算机处理结束后,再将目标数据信息以人能够识别的方式输出。C语言中的输入输出操作,是由C语言编译系统提供的库函数来实现。 3.1 格式化输出——printf()函数 3.2 格式化输入——scanf()函数.
目录 3.1结构化程序设计 3.2传统流程图及N-S结构化流程图 3.3C语句概述 3.4赋值语句 3.5数据输入输出函数调用语句
3 数据类型、运算符 和表达式.
2.1 C语言的数据类型 2.2 常量与变量 2.3 变量赋初值 2.4 各类数值型数据间的混合运算 2.5 C语言的运算符和表达式
第4章 顺序程序设计.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
第三章 顺序结构程序设计 计算机科学学院.
第4章 PHP流程控制语句.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
C语言概述 第一章.
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
C语言程序设计.
第3章 變數、算術運算、 數學函數及輸入輸出.
C程序设计.
程序设计基础A(C语言) 主讲教师: 许 康 教师主页:
第 二 章 数据类型、运算符与表达式.
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
本节内容 字符与字符串 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第4章 Excel电子表格制作软件 4.4 函数(一).
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第3章 数据类型、运算符与表达式.
第九节 赋值运算符和赋值表达式.
第2章 基本数据及其运算 本章学习的目标: 1、掌握基本数据的各种表示,基本数据常数的书写方法;
第二章 类型、对象、运算符和表达式.
College of Computer Science & Technology
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
2.6 字符型数据 一、 字符常量 1、字符常量的定义 用一对单引号括起来的单个字符,称为字符常量。 例如,‘A’、‘1’、‘+’等。
第4章 顺序结构程序设计 为了让计算机处理各种数据,首先就应该把源数据输入到计算机中;计算机处理结束后,再将目标数据信息以人能够识别的方式输出。C语言中的输入输出操作,是由C语言编译系统提供的库函数来实现。 4.1 格式化输出——printf()函数 4.2 格式化输入——scanf()函数.
C程序设计 实验二 数据类型、运算符和表达式 第6讲
第3章 最简单的C程序设计 3.1 顺序程序设计举例 3.2 数据的表现形式及其运算 3.3 C语句 3.4 数据的输入输出.
第3章 顺序结构程序设计 为了让计算机处理各种数据,首先就应该把源数据输入到计算机中;计算机处理结束后,再将目标数据信息以人能够识别的方式输出。C语言中的输入输出操作,是由C语言编译系统提供的库函数来实现。 3.1 格式化输出——printf()函数 3.2 格式化输入——scanf()函数.
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
程序设计基础A(C语言) 第一章 C语言概述 主讲教师: 许 康
C/C++基礎程式設計班 字元與字串 講師:林業峻 CSIE, NTU 3/14, 2015.
第二章 数据类型、运算符和表达式 §2.1 数据与数据类型 §2.2 常量、变量和标准函数 §2.3 基本运算符及其表达式 目 录 上一章
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第二章 简单数据类型 §2.1 数据类型概述 §2.2 变量和常量 §2.3 简单数据类型 §2.4 简单数据类型的相互转换
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

第三章 结构化程序设计

第三章 结构化程序设计 C程序组成 C 程序 …. …. 预编译命令 函数1 函数i { 说明部分 源程序文件1 源程序文件2 源程序文件n 第三章 结构化程序设计 C程序组成 C 程序 源程序文件1 源程序文件2 源程序文件n …. …. 预编译命令 函数1 函数i { 说明部分 执行部分 }

三种基本程序结构 顺序结构 选择结构 循环结构 a T F 判断 b c N-S流程图 T F

3.1 顺序结构程序设计 3.1.1赋值语句 格式:<变量>=<表达式>; 作用:将右边表达式的值赋给左边的变量 3.1 顺序结构程序设计 3.1.1赋值语句 格式:<变量>=<表达式>; 作用:将右边表达式的值赋给左边的变量 说明:(1) 赋值语句中的数可以是整数、浮点数和字符常数。C语言中,整数既可以是十进制数,也可以是八进制数或十六进制数。八进制整数用“0”开头,十六进制以“0x”开头。浮点数可以是小数型的也可以是指数型的。字符常数需要用单引号将字符括起,字符串常数需要用双引号括起。 (2)赋值语句中的变量应遵循先定义后使用的原则,否则将导致程序出错。 (3)表达式中出现的数学函数,如三角函数sin(x),cos(x),tan(x),对数函数log(x),指数函数exp(x)等。应事先说明这些函数是在标准函数库“math.h”中,即在程序开头要包含:# include “math.h”

{4)允许连续赋值,格式为: <变量1>=<变量2>=...<变量n>=<表达式>; 但是要注意在初始化时不能连续初始化,例如: int a=b=c=1;是错误的。 举例:交换两个变量a和b的值。 1.用普通变量实现。 关键语句:t=a; a=b; b=t; 2.用指针(*pa、*pb)实现。 关键语句:pa=&a; pb=&b; t=*pa; *pa=*pb; *pb=t; 讨论:int *pa,*pb,*p; pa=&a;pb=&b; p=pa; pa=pb;pb=p; printf(“a=%d b=%d\n”,a,b); 及printf(“a=%d b=%d\n”,*pa,*pb);的情况。

3.1.2 数据输入 字符输入函数 格式:getchar( ) 功能:从键盘读一字符 返值:正常,返回读取的代码值;出错,返回EOF(-1) 3.1.2 数据输入 字符输入函数 格式:getchar( ) 功能:从键盘读一字符 返值:正常,返回读取的代码值;出错,返回EOF(-1) /*ch3_4.c*/ #include <stdio.h> main() { int c; printf("Enter a character:"); c=getchar(); printf("%c--->hex%x\n",c,c); } 例

格式输入函数 例 scanf(“%d”,&a); 例 scanf(“%x”,&a); 输入:10  输入:11  则 a=10 功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中,并按回车键结束 返值:正常,返回输入数据个数 地址表:变量的地址,常用取地址运算符& 格式字符:d,i,o,x,u,c,s,f,e 例 scanf(“%d”,&a); 输入:10  则 a=10 例 scanf(“%x”,&a); 输入:11  则 a=17

例 scanf(“%4d%2d%2d”,&yy,&mm,&dd); 输入 19991015  附加格式说明符(修饰符) l 修饰符 功 能 h m * 用于d,o,x前,指定输入为short型整数 用于d,o,x前,指定输入为long型整数 用于e,f前,指定输入为double型实数 指定输入数据宽度,遇空格或不可转换字符则结束 抑制符,指定输入项读入后不赋给变量 例 scanf(“%4d%2d%2d”,&yy,&mm,&dd); 输入 19991015  则1999yy, 10 mm, 15 dd 例 scanf(“%3c%2c”,&c1,&c2); 输入 abcde  则‘a’c1, ‘d’ c2 例 scanf(“%3d%*4d%f”,&k,&f); 输入 12345678765.43 则123k, 8765.43f 例 scanf(“%2d%*3d%2d”,&a,&b); 输入 1234567 则12a, 67b

例 scanf(“%d%o%x”,&a,&b,&c); printf(“a=%d,b=%d,c=%d\n”,a,b,c); 输入分隔符的指定 一般以空格、TAB或回车键作为分隔符 其它字符做分隔符:格式串中两个格式符间字符 例 scanf(“%d%o%x”,&a,&b,&c); printf(“a=%d,b=%d,c=%d\n”,a,b,c); 输入 123 123 123 输出 a=123,b=83,c=291 例 scanf(“%d:%d:%d”,&h,&m,&s); 输入 12:30:45 则12 h, 30 m, 45 s 例 scanf(“%d,%d”,&a,&b) 输入 3,4  则3a, 4 b 例 scanf(“a=%d,b=%d,c=%d”,&a,&b,&c); 输入 a=12,b=24,c=36 

说明: 用“%c”格式符时,空格和转义字符作为有效字符输入 输入数据时,遇以下情况认为该数据结束: 遇空格、TAB、或回车 遇宽度结束 遇非法输入 如 scanf(“%c%c%c”,&c1,&c2,&c3); 若输入abc 则ac1,  c2, b c3 例 int x; char ch; scanf(“%d”,&x); scanf(“ %c”,&ch); 或 scanf(“%*c%c”,&ch); 输入函数留下的“垃圾”: 如 scanf(“%d%c%f”,&a,&b,&c); 若输入1234a123o.26  则 1234 a, ‘a’ b, 123 c 解决方法: (1)用getchar()清除 (2)用函数fflush(stdin)清除全部剩余内容 (3) 用格式串中空格或“%*c”来“吃掉” 例 int x; char ch; scanf(“%d”,&x); ch=getchar(); printf(“x=%d,ch=%d\n”,x,ch); 执行:123 输出:x=123,ch=10 例 int x; char ch; scanf(“%d”,&x); scanf(“%c”,&ch); printf(“x=%d,ch=%d\n”,x,ch); 执行:123 输出:x=123,ch=10

3.1 .3数据输出 字符输出函数 格式: putchar( c ) 参数: c为字符常量、变量或表达式 功能:把字符c输出到显示器上 返值:正常,为显示的代码值;出错,为EOF(-1)

例 /*ch3_1.c*/ #include <stdio.h> main() { int c; char a; c=65; a='B'; putchar(c); putchar('\n'); putchar(a); } 运行结果:A B

格式输出函数 输出表:要输出的数据(可以没有,多个时以“,”分隔)格式控制串:包含两种信息 格式说明:%[修饰符]格式字符 , 格式:printf(“格式控制串”,输出表) 功能:按指定格式向显示器输出数据 返值:正常,返回输出字节数;出错,返回EOF(-1) 输出表:要输出的数据(可以没有,多个时以“,”分隔)格式控制串:包含两种信息 格式说明:%[修饰符]格式字符 , 用于指定输出格式 普通字符或转义序列:原样输出格式字符

printf(“a=%d , b=%d\n”,a,b); 例 int a=3,b=4; printf(“%d %d\n”,a,b); d,i x,X o u c s e,E f g %% 格式字符: 十六进制无符号整数 不带符号十进制整数 十进制整数 指数形式浮点小数 单一字符 字符串 八进制无符号整数 小数形式浮点小数 e和f中较短一种 百分号本身 int a=567;printf ( “%d”,a); 567 int a=255;printf(“%x”,a); ff int a=65;printf(“%o”,a); 101 int a=567;printf(“%u”,a); 567 例 main() { unsigned int u=65535; printf(”u=%d\n",u); } 输出结果:u=-1 char a=65;printf(“%c”,a); A 例 int a=3,b=4; printf(“%d %d\n”,a,b); printf(“a=%d , b=%d\n”,a,b); 例 int a=3,b=4; printf(“%d %d\n”,a,b); printf(“a=%d , b=%d\n”,a,b); 输出结果: 3 4 a=3, b=4 printf(“%s”,“ABC”); ABC float a=567.789;printf(“%e”,a); 5.677890e+02 float a=567.789;printf(“%f”,a); 567.789000 float a=567.789;printf(“%g”,a); 567.789 printf(“%%”); % 说明 格式字符要用小写 格式字符与输出项个数应相同,按先后顺序一一对应 输出转换:格式字符与输出项类型不一致,自动按指定格式输出 11 11 11 11 11 11 11 11 65535

附加格式说明符(修饰符) .n 对实数,指定小数点后位数(四舍五入) 对字符串,指定实际输出位数 修饰符 功 能 m 输出数据域宽,数据长度<m,左补空格;否则按实际输出 输出数据在域内左对齐(缺省右对齐) - 指定在有符号数的正数前显示正号(+) + 输出数值时指定左面不使用的空位置自动填0 在八进制和十六进制数前显示前导0,0x # 在d,o,x,u前,指定输出精度为long型 在e,f,g前,指定输出精度为double型 l

例 m.n 例 int a=1234; float f=123.456; char ch=‘a’; printf(“%8d,%2d\n”,a,a); printf(“%f,%8f,%8.1f,%.2f,%.2e\n”,f,f,f,f,f); printf(“%3c\n”,ch); 运行 1234,1234 结果: 123.456000,123.456000, 123.5,123.46,1.23e+02 a 例 static char a[]=“Hello,world!” printf(“%s\n%15s\n%10.5s\n%2.5s\n%.3s\n”,a,a,a,a,a); 运行结果:Hello,world! Hello,world! Hello Hello Hel

例 - 例 int a=1234; float f=123.456; static char c[]=“Hello,world!”; printf(“%8d,%-8d\n”,a,a); printf(“%10.2f,%-10.1f\n”,f,f); printf(“%10.5s,%-10.3s\n”,c,c); 运行结果:1234,1234 123.46,123.5 Hello,Hel

printf(“%o,%#o,%X,%#X\n”,a,a,a,a); 例 0 、+ 例 int a=1234; float f=123.456; printf(“%08d\n”,a); printf(“%010.2f\n”,f); printf(“%0+8d\n”,a); printf(“0+10.2f\n”,f); //00001234 //0000123.46 //000+1234 //000+123.56 例 # 例 int a=123; printf(“%o,%#o,%X,%#X\n”,a,a,a,a); //173,0173,7B,0X7B 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 例 l 例 long a=65536; printf(“%d,%8ld\n”,a, a); //0, 65536

3.1.4 程序举例 例 输入三角形边长,求面积 /*ch3_12.c*/ #include <math.h> 例 输入三角形边长,求面积 /*ch3_12.c*/ #include <math.h> #include <stdio.h> main() { float a,b,c,s,area; scanf("%f,%f,%f",&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2f\n",a,b,c,s); printf("area=%7.2f\n",area); } 文件包含预处理命令 变量定义 输入数据 输出数据 输入:3,4,6  输出:a= 3.00, b= 4.00, c= 6.00 s= 6.50 area= 5.33

/*ch3_13.c*/ #include "stdio.h" main() { char c1,c2; c1=getchar(); 例 从键盘输入大写字母,用小写字母输出 /*ch3_13.c*/ #include "stdio.h" main() { char c1,c2; c1=getchar(); printf("%c,%d\n",c1,c1); c2=c1+32; printf("%c,%d\n",c2,c2); } 输入:A  输出:A,65 a,97

/*ch3_14.c*/ #include <stdio.h> #include <math.h> main() { float a,b,c,disc,x1,x2,p,q; scanf("a=%f,b=%f,c=%f",&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2); } 输入:a=1,b=3,c=2  输出:x1=-1.00 x2=-2.00

3.2 分支程序设计 3.2.1条件语句(if) 条件 语句 条件 语句1 语句2 1.单臂式if语句:if (表达式){语句序列;} {语句序列;} F T else {语句序列;} 条件 语句 条件 语句1 语句2

例如: if (x>0) printf(“x>0\n”); else if { 语句序列2;} else if { 语句序列3;} 例如: if (x>0) printf(“x>0\n”); else if(x<0) printf(“x<0\n”); else printf(“x=0\n”); 4.if语句的嵌套 配对原则:1.一个else总是与离它最近的并没有与其他else配对的if配对。2.加括号

If (…...) if (……) if (……) …… else …...

例:在a,b,c三个数中选出最大数 main() { int *p1,*p2,*p3;int a,b,c; printf("Enter a,b,c="); scanf("%d%d%d",&a,&b,&c); p1=&a;p2=&b;p3=&c; if(*p1>=*p2) if(*p1>=*p3) printf("max is %d \n",*p1); else printf("max is %d\n",*p3); if(*p2>*p3) printf("max is %d\n ",*p2); printf("max is %d \n",*p3); }

5.条件运算符与条件表达式 例:把从键盘输入的大写字母化为小写打印出来 mian() { char ch; ch=getchar(); printf(“%c\n”,ch>=‘A’&&ch<=‘Z’?ch+32:ch); }

3.2.2 开关选择语句 流程图如下: 格式:switch (表达式) { case 常量1:语句1; case 常量2:语句2; 3.2.2 开关选择语句 格式:switch (表达式) { case 常量1:语句1; case 常量2:语句2; case 常量3:语句3; …… case 常量n:语句n; default:语句n+1; } 作用:可实现多分支选择 流程图如下:

表达式 switch …... default 语句序列1 语句序列2 语句序列n 语句序列n+1 表达式=常数2 表达式=常数n 表达式=常数1 switch 语句序列1 表达式=常数2 语句序列2 …... 表达式=常数n 语句序列n default 语句序列n+1

[例] 编制给学生写评语的程序。 若学生成绩在60~79则打印“Pass”; 若成绩在80~89则打印“Good”; 若成绩为90~100 打印“Excellent”; 59分以下打印“Fail”。算法用: select=score/10来计算,如果select的值在0~5之间则表明成绩是0~59分,这时应该输出“Fail”, 如果select的值在6~7之间则表明成绩是60~79分,如果select的值是8表明成绩是80~89分,成绩在90~100分之间时,select的值是9~10。 Ex325.c 程序中case 0 到case 5都是执行的相同的语句,这时程序采用了多个case重叠,共用一个语句组的情形,case 6 和case 7, case 9 和case 10都是重叠共用的情况。

【例】: 统计某班成绩状况. Exscore.c 说明变量 输入成绩 总人数计数,总分累加 输入成绩 x 计算平均分 计算通过率 显示结果 x>=0 x>=60 T F 及格人计数 不及格计数 X>=60

3.3 循环结构程序设计 循环体 while 零 do 循环体 表达式 非零 while 表达式 零 3.3 循环结构程序设计 1. while 格式: while(<表达式>) { 循环体(语句组) } /*当表达式值为真时循环。*/ 循环体中应有能退出循环的机制 (使表达式逻辑值为假)。 【例】 牛数递增(excow.c) 2. do-while 格式: do } while(<表达式>) ; while 零 表达式 非零 循环体 do 循环体 while 表达式 非零 零

循环体 for 3. for ( ) 零 表达式2 非零 表达式3 以上两种格式的区别在于前者在开始时表 达式的值为假时不执行循环;后者则无论 如何先执行一次。 【例】 猴子吃桃问题(exmonkey.c) 3. for ( ) 格式: for(<表达式1>;<表达式2>;<表达式3>) { 循环体(语句组) } 【例] “水仙花数”(100~999,exflower.c) 【例] 求平均成绩。(exave.c) [例] 实现字符串拷贝。(exstrcpy.c) for 表达式1 零 表达式2 非零 循环体 表达式3

4. 循环嵌套 上述各个语句构成的循环都可嵌套, 可以多层。不可交叉;能由内向外转 移,反之不可;各层循环次数。 [ 例1 ]求阶乘的和 (1!+2!+3!+…n!)。(exsum.c) [例2] 打印杨辉三角形(10)。 (extriangle.c) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 …... for (……) {…… …… for(……) } 外循环 内循环

for 零 K++ flag=0 flag=1,k=2 零 非零 非零 5. 循环辅助控制 1. continue 中止当次循环. [例] excontin.c 2. Break(exprime.c) 退出本层循环。 [例] 打印输出100~1000之 间的素数。 分析:素数为只能被1和 它本身整除的数。 用2~n-1除n 用2~sqrt(n)除n for flag=1,k=2 K<=sqrt(n) 零 非零 零 N%k==0 K++ 非零 正常退出 flag=0