




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 c语言程序设计(复旦版)约法五章约法五章 一. 衣帽不整不进课堂 二. 坐姿端正不打瞌睡 三. 关掉一切通讯工具 四. 认真听课做好笔记 五. 完成作业绝不拖欠第1章 引言1.1 概述1.2 c语言的开发周期1.3 使用visual c+开发c语言程序的步骤【内容摘要】(1)知识点:程序的概念;程序设计语言发展过程;c程序的基本框架;c程序的开发周期;visual c+开发c程序的步骤。(2)难点:熟练掌握c程序的开发环境1.1 概 述1.1.1 理解程序 程序:用计算机命令实现某种算法的过程 【 例1.1】一个学生上课的行为描述 查课表准备上课工具去教室听课下课 这是一个:顺序的执行过程
2、【例1.2】图书馆借书 去图书馆上机索引需要图书有则选之、无则另选或干脆不借办理借阅手续离开图书馆 这是一个:条件执行过程【例1.3】一个简单的c语言程序:求两个给定整数的和 #include main() int a,b,sum; a=2; b=3; sum=a+b; printf(“then sum of %d+%d is %dn” ;a,b,sum); return 0; /头文件/函数开头语句函数体变量说明语句执行语句退出语句c语言程序的基本格式规定: 1. 程序由函数组成,函数是具有特定功能的模块。 每个c程序都必须有一个且仅有一个起始函数main()。 2.函数由函数头和函数体组成
3、。 main() /*函数头*/ 变量说明; 语句; 3. 语句以“;”结束 4. 注释:/*/ 或:/ 5.预处理命令:#include包含有关头文件的信息 6.严格区分大小写函数体1.1.2 程序设计与程序设计语言一.程序与程序设计 1. 冯.诺依曼计算机的特点 1)二进制; 2)存储程序和程序控制。(1)指令(instruction):能被计算机直接识别并执行的指示计算机进行某种操作的命令。(2)程序(program):为使计算机解决某个问题而写出的一系列指令的序列。(a)程序设计(编程)(programming):编写程序的过程(b)程序设计语言(program language):编
4、写程序是所采用的语言二.程序设计语言的发展阶段 1.机器语言: 采用计算机指令格式并以二进制编码表达各种操作的语言。 特点:无二异性、代码质量高、执行速度快、占存储空间少 缺点:难写难读难记难改交流;与机器相关不通用;2. 汇编语言:用符号表达机器指令功能的语言 特点:具有机器语言的特点;易写易读易记易改易交流 缺点:与机器相关不通用;必须翻译3.高级语言:接近于人类自然语言和数学表达式的编程语言 表达能力更强,易于处理更为复杂的问题 独立于机器,方便通用、易于推广 分类:面向过程、面向对象4. 第四带语言4gl(the 4th generation language)非过程化语言。如数据库查
5、询语言sql等特点:一条语句一般可编译成3050条及其指令,编程效率高,适用于管理信息系统编码,程序更容易理解、维护。1.1.3 c语言的发展历史1.2 c语言程序的开发过程 1. 分析问题,确定解决方案(算法) 2. 用程序语言描述算法使用编辑器编写源代码。扩展名:.c 3. 使用编译器编译源程序,生成目标码.obj 4.使用连接器连接目标码生成可执行文件.exe 5.调试运行。 周而复始分析问题编写源程序调试运行连接程序编译程序结束1.3 使用visual c+语言开发c程序步骤 1. 3.1 vc+6.0的集成开发环境简介1.3.2 创建一个c程序步骤 1. 启动vc+ 2. 输入和编辑
6、源程序 (1)创建新程序 s1:打开“新建”对话框:“文件”“新建” 或【ctrl+n】 s2:“文件”“c+ source file” s3: 设置源文件保存路径:在“位置”的文本框: 使用缺省路径:不用改变文本框内容; 使用指定路径:改变; 选择已有路径:使用【】 s4:设置文件名:使用“文件名”的文本框 注意事项: 文件名后一定要带扩展名:.c;缺省扩展名:.cpp (2)打开老程序 s1:打开“打开”对话框:“文件”“打开” 或【ctrl+o】; 或使用工具栏的【打开】 s2:打开文件 双击选定的源程序文件; 或单击源文件进行选定,【打开】 (3)文件存盘 保存在原处:“文件”“保存”
7、 或【ctrl+s】; 或使用工具栏的【保存】 保存在别处:“文件”“另存为”3. 编译源程序 方法1:“组建”“编译xxx.c项” 方法2:工具栏:【compile】或【ctrl+f7】4. 连接目标程序 方法1:“组建”“组建xxx.exe” 方法2:工具栏:【build】或【f7】5. 执行程序 方法1:“组建”“执行xxx.exe” 方法2:工具栏:【buildexecution】或【ctrl+f5】【例】课本【例1.3】的运行结果:第2章 数据类型与表达式2.1从数学上的“数”过渡到计算机中的“数”2.2 数据类型概述2.3 常量和变量2.4 整数类型2.5 实数类型2.6 字符类型
8、2.7 不同类型间的转换2.8运算符与表达式2.9 本章小结【内容摘要】(1)知识点:c的基本设计类型;数据类型与变量、常量的关系;常量的性质和定义;运算符的功能和特点;类型转换规则。(2)难点:数据类型、常量定义、运算符和表达式2.1 从数学上的“数”过渡到计算机中的“数”一、用计算机编程需要解决好的问题:数据的存储二、数学中的数与计算机中的数的区别 1.数学中的数:抽象、无类型、精确 2.计算机中的数:具体,有类型、精度有限 (1)类型不同,取值范围不同; (2)类型不同,表示形式不同; (3)合理选取数据类型:节约内存,存下数据,提高速度。 3.计算机中的数的二进制存储 (1)内存按字节
9、编号; (2)c语言中数据的八、十六进制表示 八进制:0+数码:07; 十六进制:0x+数码:09、af。 (2)二十;二八;二十六进制的相互转化 4. dr进制的相互转换 (1)数的表示 (2)d转r进制 a、转换原则 整小两部分别转, 整部除以基取余, 小部乘以基取整, 整前小后点隔开。b、转换技巧 以八进制作桥梁; d转b:d转o展b d转h:d转o展b收h inimiira1n位权基数c、注意事项: 八展开二进制:一个八进制位展为3个二进制位; 二收缩为八(十六)进制:以小数点为界,向前向后3(4)位一节分开; 整数部分最前一节不足3(4)个二进制位不理睬;小数部分最后一节不足3(4)
10、个二进制位时用0补齐 (3)rd a、使用数的表示形式 b、使用转换桥梁 2.2 数据类型概述c语言的数据类型数据类型基本类型字符型(char)数值型整型(short、int、long、unsigned)实型单精度(float)双精度(double)枚举型(enum)构造类型共用体类型(union)结构体类型(struct)数组类型()指针类型(*)空类型(void)本章主要介绍基本数据类型2.3.1 标识符和关键字 一.标识符 1.标识符的概念:用来标识对象名字的有效字符序列 2.c语言标识符的命名规则 (1)由字母或下划线开头,由字母、数字字符或下划线组成 (2)不能与关键字同名 3.几点
11、说明 (1)关键字不能做普通的标识符使用; (2)标识符应言简意赅、名副其实; (3)关键字:组成编程语言本身的一些标识符,也称保留字 c中的保留字有32个2.3 常量和变量2.3.1 常量 1.常量的概念:直接书写在程序中,不能被修改的、固定不变的量。 2.常量书写形式分类:字面常量、符号常量 3.常量数据类型:数值常量、字符常量 3.符号常量:用#define语句预先定义的常量 (1)#define语句的格式 #define 常量标识符 常量数据 【例】#define pi 3.14159 (2)符号常量的释放语句格式 #undef 常量标识符 【例】 #undef pi2.3.2 变量
12、1.变量的概念:用合法的标识符给出的在程序运行中可被修改的量。 2.变量的声明格式 =, =; 另一种写法: 类型说明符 变量1 =初值1,变量2 =初值2;4.变量可声明时为变量赋初值例: int i=1; float a,b,c=9.54;2.3.3 变量的命名规则一.变量的命名规则 1、变量的命名必须满足标识符命名的规则及注意事项; 2、c语言中,变量区分大小写;二.变量的类型分类: 整型:short、int 、long、unsignel 实型:float、double 字符型:char 布尔型(c无)。2.3.4 变量的定义 一.c语言中变量必须贯彻“先声明,后使用”的原则 二.声明作
13、用 1.为变量申请存储地址 2.可为变量赋初值 3.声明时未赋初值,对于自动变量其初值为一个随机数 【例】 int a,b,c; int d=3,e=4;f=5; /请改书上的变量名 float g=6.9; char h=a,i; 三.变量强制声明的目的 1. 申请存储空间; 2. 进行运算合法检查。 【例】下面的程序段 float a=4.5,b=8.9; float c; c=a%b; x2.4 整型类型2.4.1 整型常量 1.整型常量的概念:不带小数的数值。 2.整数常量的三种书写形式 (1)十进制:不以0开头的由09的数字组成的数据 (2)八进制:以0开头的由07的数字组成的数据
14、(3)十六进制:以0x开头的由09的数字和af的字符组成的数据 3.整型常量取值范围有限, 与进制无关【例】 十进制 八进制 十六进制 0 00 0 x0 78 0116 0 x4e -123 -0173 -0 x7b 2.4.2 整型变量 一.计算机数据存储的三种基本码: 1.原码:正数输的原码是本身,负数的原码是正数的原码符号位取反。 【例】以16位机为例 5原码= 0000000000000101 -5原码=1000000000000101 2. 反码:正数输的反码是本身,负数的反码是正数的反码逐位取反。 5反码= 0000000000000101 -5反码=11111111111110
15、10 3. 补码:正数输的补码是本身,负数的补码是其反码末位加1。 5补码= 0000000000000101 -5补码=1111111111111011 二.c中整型变量的4种类型及取值范围 有符号整型:补码存储:-2n-1 2n-1-1 无符号: 0 2n-1 1. int类型(基本型) 1)vc+:4字节存储 2)取值范围: 最大正数 231-1 :01111111111111111111111111111111 最小负数- 231 :10000000000000000000000000000000 2. short类型 1)vc+:2字节存储 2)取值范围: -215 215-1 3.
16、long类型 1)vc+:4字节存储 2)取值范围: 最大正数 231-1 最小负数 231 4. unsigned 类型tc2.0vc+ 6.0宽度取值范围宽度取值范围signed int16-215 215-132-231 231-1unsigned int160 216-1320 232-1signed short16-215 215-116-215 215-1unsigned short160 216-1160 216-1signed long32-231 231-132-231 231-1unsignedlong320 232-1320 232-1整型数的的取值范围列表2.5 实数类
17、型2.5.1 实型常量 1.实型常量的概念:带小数的数据。 2.c语言中实型常量的两种书写形式 (1)十进制形式 (2)科学计数形式带e指数的形式 十进制小数+e(e)+阶符+指数例: 0.0, 78.3, -123.475 0.345e-5 , 1.457e10 3.浮点数的机内存储形式:规范化的表示形式 【例】987.654的机内存储形式 0.987654e3数符(+) 阶码(+3) 尾数(0.987654) 2.5.2 实型变量 1.实型变量的2种形式 1)float型: 7位有效数字; 4字节存储: 符号位1位,阶符阶码8位,尾数23位 2)double型:15位有效数字; 8字节存储
18、: 符号位1位,阶符阶码11位,尾数52位 类型字节取值范围字节取值范围float43.4x10 38641.7x10 3082.注意事项 1)浮点数无无符号属性unsigned; 2)vc+中,浮点常量一律按double型处理;【例】float a=3.14; truncation from const double to float2.6 字符类型2.6.1 字符型常量 1.字符常量的概念:由一对单引号括起来的单个字符 2.字符常量的分类: 1)一般字符常量:c语言中计算机可打印输出的字符 2)转义字符常量:在c语言中的以“”开头的字符常量 3.标准ascii字符: 单字节存储,查看附录b
19、 0:空字符(null); 131:各种控制字符; 32:空格,第一个可打印字符; 4857:09; 6590:az; 97122:az; 3347、5864、123126:其它字符 127:del(delete键) 控制字符区可打印字符区功能字符形式控制字符ascii码回车carriage return rcr13换行line feednlf10水平制表符tabthy9竖向制表符verticaltabvvt11退格backspacebbs8换页form feedfff12响铃alarmabel7单引号39双引号”34反斜线92空字符blank0nul0百分号%37八进制模式ddd十六进制模式
20、xhh常用转义字符列表 【例】“105 :(105)oascii char e“012 :(012)ocontrol char lf“000 :(0)oblank char null“0 xd :(d)hcontrol char r4.注意事项 1)字符常量区分大小写; 2)高位置1为扩展ascii字符,256个; 3)一个汉字两个字节,双扩展; 4)0、0、0含义不同 0:字符0,ascii码:48,机内二进制:0000110; 0:数值0,补码存储:机内二进制:32个0 0:空字符,ascii码0,机内二进制:8个0 【例】体会下面两个输出语句:printf(“%c”,0+0);print
21、f(“%d”,0+0); 为什么第一句的输出是一个单引号(ascii码96)?【例2.1】转义符的输出#include void main()char ch;ch=141;printf(%cn%cn,ch,ch-32);运行 2.6.2 字符型变量 1. 字符型变量:用char类型标识符声明的变量 2.取值范围:一个字节,0255 2.6.3 字符型数据在内存中的存储形式及其使用 ascii码机内存储;一定条件下,字符型与整型数据通用【例2.2】字符数据的定义、赋值及存取#include void main()char a,b;int i,j;a=a;i=66;b=i;j=a;printf(i
22、=%d,j=%d,i=%c,j=%cn,i,j,i,j);printf(a=%d,b=%d,a=%c,b=%cn,a,b,a,b);2.7 不同数据类型间的转换 混合运算的原则:先类型转换,再同类数据运算 2.7.1 c自动类型转换 1.转换法则:由低级向高级转换 2.数据级别次序:charintlongfloatdouble 3. 具体转换 1)整型转实型:其值不变,按实型格式存储 【例 】 55.0浮点存储 2)实型转整型:先取整,再按整型存储 【例】5.85补码存储 3)double转float:只取前7位有效数字,再按4字节存储 4)float转double:有效数字扩展为15位,再按
23、8字节存储 5)将整型数赋给字符型数:高位丢失,仅拷贝低8位二进制 6)将字符型数据赋给整型数:将最低8位的ascii值拷贝 【例】 char ch=a; int i=28; float x=2.36; double y=6.258e6; 问表达式: i+ch+x*y的结果 步骤1:转换:double(28+asc(a)+(double(2.36)*6.258e6) 步骤2:运算:93.0+2.36*6.258e6 结果:double型 2.7.2 c强制类型转换 (1)适应范围:高级转低级 (2)转换格式:(类型)变量 【例】 若有:float x=2.36; double y=6.642;
24、 int i; i=(int)(x+y); 【例2.3】数据转换的例子(e2_3.c) #include void main()float x=3.5;int i;i=(int)x;printf(x=%fn,x);printf(i=%dn,i); 运行2.8 运算符与表达式2.7.1 算术运算符与算术表达式 1.适应范围:算术运算 2.操作数:数值型或字符型 3.算术运算符运算符名称使用方式说 明+加a+b做a加b-减a-b做a减b*乘a*b做a乘以b/除a/b做a除以b%取模a%ba取模b(返回余数)+自增+a先自增1,再应用a+先应用,再自增1-自减-a先自减1,再应用a-先应用,再自减1
25、4.说明: 1)+、-、*:同于数学运算; 2)/: (1)整型数相除:整型算子 (2 )实型数相除:实型算子 3)%取模:求余数,两操作数必须同为整型数 4)自增减运算符:仅用于整型变量 +a(-a):a先自增(减)1再引用; a+(a-):先引用a,在自增(减)1 【例】下面程序段中各变量的值 a=5; b=+a; c=a-; 5.算术表达式:利用算数运算符将常量、变量、函数连在一起的式子,结果一定是数值型 6.算术运算符的优先级数符,+、-,*、/、%,+、-7.算术运算符的结合性:左结合性操作数先与左边的运算符优先结合【例】a*b-1.5/c (a*b)-(1.5/c)【例】:a*b/
26、c-1.5+a+fabs(-5)s1: a*b/c-1.5+97.0+5.0s2:作(a*b)/cv1s3:v1-1.5+97.0+5.02.8.2 赋值运算符与赋值表达式 1.普通赋值运算符:= 2.赋值表达式格式:变量=表达式 3.复合赋值运算符运算符名称使用方式说 明+=加赋值a+=ba=a+b-=减赋值a-=ba=a-b*=乘赋值a*=ba=a*b/=除赋值a/=ba=a/b%=取模赋值a%=ba=a%b【例】 a=b=c=9 a=18+(c=27) (a*b)=c=9 x a+=a-=a*a 设a初值为5s1:a=a-a*a=-20s2: a=a+(-20)=-20-20=-402.
27、8.3 关系运算符与关系表达式 1.适用范围:两个操作数比较大小 2.结果:1或0 1为true;0为false 3.关系运算符运算符名称使用方式说 明=等于a=b同级低级!=不等于a!=b大于ab同级高级小于ab=小于等于a=大于等于a=b 4.关系运算符的优先级 (1)关系运算符:、=、=:同级,高于 =、!= (2)关系运算符低于算术运算符、高于赋值运算符和逗号运算符【例2.4】关系表达式的运用(e2_4.c) #include void main()char ch=w;int a=2,b=3,c=1,d,x=10;printf(%d,ab=c);printf(%d,d=ab);prin
28、tf(%d,cha+1);printf(%d,d=a+bc);printf(%d, b-1=a!=c);printf(%dn,3=x=5);运行:001111分析表达式:3=x=5的弊病 3=x=5 =(3=x)=5 因不管x为何值,3=3&x=3) &(x=5) (4)!x=2 (! x)=2 (5)a|3*8&2 a|(3*8)&2)【例2.5】逻辑表达式的运用(e2_5.c)#include void main()int a=2,b=0,c=0;printf(%d,a&b); /0printf(“%d”,a|b&c); /1printf(“
29、%d”,!a&b); /0 printf(“%dn”,(a=1)|(b=3)+10&(c=2); /为1运行:01012.8.5 条件运算符与条件表达式 1.适用范围:两路分支的条件 2.格式:表达式1?表达式2:表达式3 3.返回值:表达式1为真时返回表达式2的值; 假时返回表达式3的值。【例】max=(ab)?a:b 4.条件运算符的优先级:仅高于赋值运算符 【例】 1)(ab)? a:a+1 ab? a : (b+1) 2)ab?a:cd?d:c ab?a:(cd?d:c)2.8.6 逗号运算符与逗号表达式 1.适用范围:多个表达式相连 2.格式:表达式1,表达式2,表达
30、式3,表达式n 3.作用:依次求解每个表达式的值,返回表达式n的值。【例】x=(y=6,y*3) 返回:18 4.一个逗号表达式可与另一个逗号表达式组成新的逗号表达式【例】(a=3*5,a*4),a+5 括号的值:60; 表达式返回值20。 4.优先级:最低 5.结合方向:从左向右2.9 运算符与表达式的综合练习2.9.1 正确的c语言表达式书写【例2.6】判断某年(int year)是否为闰年,写出其正确表达式条件:能被4除但不能被100整除或能被400整除的年份属于闰年 year%4=0 & year%100!=0|year%400=0/闰年判断程序:e2_6.c#include
31、void main()int year; char c;printf(请输入年份:); scanf(%d,&year);if(year%4=0 & year%100!=0|year%400=0)c=y; else c=n;(c=y) ? printf(%d年是闰年n,year) : printf(%d年不是闰年n,year);2.9 运算符与表达式的综合练习2.9.1 正确的c语言表达式书写【例2.6】判断某年(int year)是否为闰年,写出其正确表达式条件:能被4除但不能被100整除或能被400整除的年份属于闰年 year%4=0 & year%100!=0|ye
32、ar%400=0 或 :!(year%4) &(year%100)| !(year%400)/闰年判断程序:e2_6.c#include void main()int year; char c;printf(请输入年份:); scanf(%d,&year);if(year%4=0 & year%100!=0|year%400=0)c=y; else c=n;(c=y) ? printf(%d年是闰年n,year) : printf(%d年不是闰年n,year);【例2.7】判断输入的字符(char ch)是否为英文字母的表达式 ch=65 & ch=97 &am
33、p; ch=a & ch=a & ch=z /输入字符是否为字母程序:e2_7.c#include void main()char ch,c;printf(请输入字符:); scanf(%c,&ch);if(ch=65 & ch=97& ch=122)c=y; else c=n;c=y ? printf(输入的字符%c 是字母n,ch) : printf(输入的字符%c不是字母n,ch);【例2.8】求3个数中的最大数/求3个数中的最大数e2_8.c#include void main()int a=2,b=200,c=-8;int max;max=(a
34、b)?a:b;max=(maxc)?max:c;printf(max=%dn,max);【例2.9】将下列的条件转换为c语言的表达式1)2)3) )32(95fc042 acb)()()(csbsassarea2.9.2 复杂表达式的分析1.c程序书写的原则1)尽量少用过于长的表达式;2)多用();3)尽量一句写一行;2.c语言的计算次序1)()优先;2)无()处,按运算符优先级次序确定;3)运算符同级时,按规定的结合方向进行。【例2.10】分析下面独立的4个表达式的值及变量的值 (初值:i=1,j=4,k=5)(1)i=j=k-2分析:运算符的优先级:-,-,=分解:i=j=5-2;k=k-
35、1; / j:3 ,i:3,k:4(2) i=+j,j=+k分析:运算符的优先级:+,=分解:j=j+1;i=j , k=k+1;j=k /i:5 j:6 k:6 表达式:j=6(3) !i1 | (k=100)分析:优先级: ! , , & , |, =分解:!i1 | (k=100 ) 表达式 结果 !i1 01 41 1 !i1 1&1 1 结果:肯定为真1,因此系统无需再作:(k=100),故k值仍为5 4) !i1 & (k=100)分析:优先级: ! , , & , |, =,分解:!i1 | j1 &(k=100 ) 表达式 结果 !11
36、01 &(k=100 ) 因此:j、k仍保持原值不变写成程序验证:e2_10.c/复杂表达式结果分析 e2_10.c#include void main()int i=1,j=4,k=5,l;printf(%c %c %c %cn,l,i,j,k);/wt1:i=j=k-2;printf( %d %d %dn,i,j,k);/wt2:i=1,j=4,k=5;i=+j,j=+k;printf( %d %d %dn,i,j,k);/wt3:i=1,j=4,k=5;l=!i1|(k=100);printf(%d %d %d %dn,l,i,j,k);/wt4:i=1,j=4,k=5;l=!i
37、1&(k=100);printf(%d %d %d %dn,l,i,j,k);1.数据一定有类型,数据类型决定了数据的取值范围、存储形式、允许的操作。 2.标识符是是用来标识对象的有效字符序列。变量名必须符合标识符命名规则,且不得与关键字同名。 3.程序中的数据分为常量和变量两类。常量分为字面常量和符号常量两种形式。字符常量是一个字符串,用来代替一个预先定义的常量。 4. 在tc2.0中和vc+6.0中,除int型数据长度分别是16、32位外,其余类型均相同 5.注意运算符的优先级和结合规则 第3章 c语言程序的控制结构3.1 算法3.2 c语句的分类3.3 输入输出语句3.4 顺序程
38、序控制结构3.5 选择程序控制结构3.6 循环语句控制结构3.7 控制转移语句3.8 程序设计风格【内容摘要】(1)知识点: 算法描述方法; 数据输入输出函数的调用格式; if和switch语言; 3种循环结构、breack、continue、goto 语言。 常用算方法:递推法、穷举法等。 程序设计风格、程序设计的错误、调试。(2)难点: 输入输出数据的格式控制; 累加和累乘问题的算法设计即寻找其构成规律; 3种循环的区别于联系; 基本结构的嵌套; breack、continue 语言的区别3.1 算法3.1.1 算法的概念 1. 计算机科学家n.沃思(niklaus wirth)对程序下的
39、定义: 数据结构+算法=程序 数据结构:对数据的描述和组织形式; 算法:对造作或行为的描述,即操作步骤。 2.算法: 1)广义的算法概念:做某件事的方法和步骤; 2)数学中的算法概念:主要研究计算机能实现的算法,即按照某种机械程序步骤一定可以得到结构的解决问题的程序。 3)计算机解题的算法分类:数值运算、非数值运算 3. 算法特性的衡量标准: (1)有穷性。步骤有限、每步时间有限 (2)确定性。每步有明确定义,不存在多义性(3)有效性。每步操作均可有效执行(4)没有输入或有多个输入(5)至少一个输出3.1.2 算法的表示方法 1. 自然语言 2.使用传统流程图 3. 使用n-s结构化流程图 【
40、例】分别使用传统流程图和n-s图描述1+2+3+6 4.使用伪代码(pseudocode):用介于自然语言和计算机语言见得符号和文字描述算法【例】 begin 1=i, 0=s while i6 s+i=s, i+1=iprint send3.2 c 语句的分类 1. 控制语句 1)作用:实现对程序流程的选择、循环、转向、返回等操作 2)控制语句的类型 (1)选择语句:ifelse、switch(含:case、default); (2)循环语句:for、while、dowhile; (3)转向语句:continue、break、goto; (4)返回语句:return。 2.函数调用语句的格式
41、: 函数名(实参表); 3.表达式语句的格式: 表达式; 4 .复合语句(语句块) (1)组成:由一对把两个或多个表达式语句括起来组成的语句。 (2)功能:在语法上作为一个整体对待,相当于一个语句。 (3)格式: 语句1;语句2;语句n; 【例】z=x+y;z+;u=z/100;printf(“%fn”,u); (4)使用场合:循环体、if、switch分支中的语句块 (5)语句块中可进行块内变量的类型声明 5.空语句:仅含“;”的语句 (1)功能 对于未完成的程序暂放上“;”,待以后细化补全 实现空循环 作为跳转目标点 【例】对于未完成的程序暂放上“;”,待以后细化补全 int max(in
42、t a,int b) ; 【例】只要从键盘输入的字符不是回车键就从新在输入(使用空循环) while(getch()!=n); 【例】求从0开始的自然数的和,和不得大于100.(使用作为跳转目标点) int i=0;sum=0; ex: ; sum+=i+; if(sum100) goto ex; 3.3 c 输入输出语句 1. 输入输出通过调用标准库函数本来实现 1)标准库函数在附录d中给出 2)标准库函数通过#include命令将有关的头文件包含到用户原程序中才能使用 【例】对于调用标准输入输出函数,文件开头要有预编译命令: #include 2.函数调用语句格式: 函数名(实参表); 3
43、.常用的输入输出函数: 1)字符输入/输出函数:getchar、putchar; 2)格式化输入/输出函数:scanf、printf; 3)字符串输入/输出函数:gets、puts 3.3.1 字符的输入和输出 1.getchar函数 1)函数格式:getchar() 2)功能:从键盘上输入一个字符,返回该字符的asc码值 3)字符输入语句:变量=getchar(); 将getchar()的返回值赋给字符变量或整型变量,并自动将击键结果回显在屏幕上 2.putchar()函数 1)调用格式:putchar(字符变量); 2)功能:将字符变量的内容写到屏幕上 3)字符变量:可打印字符或转义符【例
44、】putchar(x42); /输出字母bputchar(0 x42); /直接用ascii码值输出字母b【例3.1】演示getchar、putchar 函数的应用(e3_1.c)#include void main()char c;c=getchar(); putchar(c); printf(n); 3.3.2 格式化输入和输出 1. 格式化输入【例3.2】从屏幕上输出一个整数(l3_2.c)#include void main()int a=10;b=20; printf(“输出变量a和b 的值:”); printf(“a=%d ,b=%d n”,a,b); 1)printf()函数 (
45、1)格式:printf(格式控制字符串,输出列表); (2)格式控制字符串所包含的数据 a、普通字符串:原样输出; b、格式转换说明符:以%开头,以一个格式字符结束的特殊字符串。 是输出表达式安所规定的格式输出。【例】: printf(“a=%d ,b=%d n”,a,b); printf()的格式转换说明符 转换符含义示例结果d(或i)十进制整型int a=65;printf(“%d”,a);65u十进制无符号整型int a=65000;printf(“%u”,a);65000o八进制无符号整型int a=65;printf(“%o”,a);101x(或x)十六进制无符号整型int a=65
46、;printf(“%x”,a);41c单个字符int a=65;printf(“%c”,a);as字符串printf(“%s”,“您好!”);您好!f小数形式的浮点数printf(“%f”,314.56);314.560000e指数形式的浮点数printf(“%e”,314.56);3.145600e+002gf、e中较短的格式printf(“%g”,314.56);3.1456%百分号本身printf(“%”);% (3)说明 a、输出列表可输出的数据:常量、变量、表达式,数据间以“,”隔开; b、格式说明符与输出项格式最好相同。 说明符大于输出项数:多余的项数会输出不定值; 说明符小于输出
47、项数:多余的项不输出。 c、输出数据的数据类型与格式转换符必须匹配,否则引起错误。例:printf(“%d,%fn”,3.89,6); 【例3.3】判断下面程序运行的结果#include void main()int a=666,b=888;printf(“%dn”,a,b);运行结果: a)错误信息 b)666 c)888 d)666,888 (4)格式转换符的完整形式 % - 0 # m.n l或h 格式字符 l:修饰d、u、o、x,输出long int 型; 修饰f、e、g,输出 double型. h:修饰d、u、o、x,输出short 型; m:最小输出域宽度。数据m,右对齐、前加空格
48、;否则按实际宽度输出 .n:显示精度(小数位数) 对于实数:四舍五入; 对于字符串:从字符串左侧开始截取n个字符的子串 -:左对齐; +:有符号数前加上”+“号 0:对于数值型数据,前面空格以0填充 #:对于八、十六进制数,前面显示先导符:0、0 x【例3.4】printf()格式修饰符的使用实例(l3_4)#include void main()int a=123;float y=456.78;char ch=a;char s=programing;printf(%7d,%-4d,%04dn,a,a,a);printf(%f,%8f,%8.1f,%.2f,%.2en,y,y,y,y,y);p
49、rintf(%3cn,ch);printf(%sn%12sn%8.5sn%2.5sn%.3sn,s,s,s,s,s); 运行注意:对于float型数据输出时,系统先自动将其转换为double型,再输出,因此用%f即可输出float型、也可输出double型,不必要使用lf型,但lf并不是错误。 2)scanf()函数 (1)格式:scanf(格式控制字符串,地址列表); (2)功能:从标准输入设备数日若干指定类型的数据 【例】 scanf(“%d,%f”,&a,&b); (3)格式控制字符串的组成:格式转换符、分隔符 (4)格式转换符的完整形式、格式转换符基本同于printf中
50、的 (5)修饰符: l、h、m:同于printf *:忽略输入修饰符。拟制符。读入的数据不赋给对应的变量。(6)分隔符 a、分隔符一般使用:空格、tab符 、 回车键 b、在变量间以其它字符做分隔符时,应输入该字符【例3.5】格式输入输出的使用#include void main()int a,b,k;float s,f;char c1,c2,m10;scanf(%d,%d,%f,%s,&a,&b,&s,m);scanf(%3d%*4d%f,&k,&f);scanf(%*c%3c%2c,&c1,&c2);printf(a=%d,b=%d,
51、s=%f,m=%sn,a,b,s,m);printf(k=%d,f=%f,c1=%c,c2=%cn,k,f,c1,c2);运行(7)注意的事项 a、最好输入数据的个数与变量个数相同。如不同,按以下原则处理 输入数据个数变量数:多余数据放入缓冲区供下次读操作使用 b、输入数据的结束情况 遇到空格、回车键(tab键) 按指定的宽度输完 遇到非法输入 3.4 顺序程序控制结构 1.顺序结构的概念:最简单的结构,特点是完全按照语句出现的先后次序依次执行【例3.6】将任意的小写字母转换为大写字母后输出#include void main()char c;c=getchar(); c=c-32;putch
52、ar(c);printf(n);【例3.7】将由键盘上输入的两个数交换后输出#include void main()int x,y,temp;printf(请输入两个数x,y:);scanf(%d,%d,&x,&y);printf(n交换前,这两个数分别是:x=%d, y=%dn,x,y);temp=x;x=y;y=temp;printf(交换后,这两个数分别是:x=%d, y=%dn,x,y);【例3.8】将由键盘上输入一个三位数,然后将该数逆序输出#include void main()int x,y,b0,b1,b2;printf(请从键盘上输入一个整型数:);scanf
53、(%d,&x);b0=x%10; b2=x/100;b1= (x/10)%10; / 或使用: (x-b2*100)/10y=b0*100+b1*10+b2;printf(“%d的逆序输出为:%dn,x,y);3.5 选择程序控制结构 概念:依照一定的条件,选择执行的路径。3.5.1 if语句 1.单分支结构 1)格式:if (表达式) 语句; 表达式:合法的关系或逻辑表达式; 语句:单语句或复合语句 2)流程图:传统、n-s【例3.9】写出下面程序执行的结果(l3_9.c) #include void main() int a=4;b=3;c=5,t=0; if(ab)t=a; a=
54、b; b=t; if(ac)t=a; a=c; c=t; printf(“%d, %d, %dn”,a,b,c); 【例3.10】计算并输出一个整数的绝对值 #include void main() int x,y; printf(“请输入一个整数:”); scanf(“%d”,&x); y=x; if (y0) y=-y; printf(“n %d的绝对值为:%dn”,x,y); 2.双分支结构 1)格式: if (表达式) 语句1; else 语句2; 2)流程图【例】用双路分支计算并输出一个整数的绝对值 #include void main() int x,y; printf(“
55、请输入一个整数:”); scanf(“%d”,&x); if(x=0) y=x; else y=-x; printf(“n %d的绝对值为:%dn”,x,y); 【例3.11】从键盘上输入一个英文字符,如大写输入则小写输出,反之亦然(l3_11.c)。#include void main() char ch; printf(“请输入一个英文字符:”); ch=getchar(); if(ch=a & ch=z) ch=ch-32; else ch=ch+32; putchar(ch); 3.多分支结构 1)格式: if (表达式1) 语句1; else if (表达式2)语句2
56、; else if (表达式n)语句n; else 语句n+1; 2)流程图 【例3.12】从键盘上输入x的值,并通过如下关系求出相应的y值。y=-1, x00, x=0#include void main() int x,y; printf(“请输入x:”); scanf(“%d”,&x); if(x0) y=-1; else if (x=0 ) y=0; else y=1 printf(“n y=%dn”,y); 【例3.13】根据成绩等级打印评语,两者对应的关系如下。#include void main() int grade; printf(“请输入成绩等级:”); 等级评语4
57、excellent (优秀)3good (良好)2average (中等)1poor (及格)0failing (不及格) scanf(%d,&grade); if(grade=4) printf(excellent); else if (grade=3 ) printf(good); else if (grade=2 ) printf(average); else if (grade=1 ) printf(poor); else printf(failing); printf(n); 4.if 语句的嵌套 (1)嵌套的概念 (2)嵌套结构的原则 a、ifelse就近配对; b、转出不
58、转入。 (3)内嵌if语句的一般格式 if(表达式1) if(表达式2)语句1 else 语句2 else if(表达式3)语句3 else 语句4 (4)分类 a、仅在if子句内嵌套 b、仅在else子句内嵌套 c、if、else子句内都嵌套 d、不断在if子句内嵌套从而形成多重嵌套 【例3.14】从键盘上输入三个数,输出其中的最大者 /例3.14 求三个数中的最大数#include void main() int a,b,c,max; printf(输入三个数:); scanf(%d,%d,%d,&a,&b,&c); if (ab) if(ac) max=a;els
59、e max=c; elseif(bc) max=b;else max=c; printf(max=%dn,max); (4) 如if和else个数不等,采用来限定内嵌的范围;【例3.15】试分析下面的语句 的含义。 if (ab) if(c=d) y=0; else y=1; 3.5.2 switch语句 (1)格式 switch (表达式) case 常量表达式1 : 语句1;break; case 常量表达式2 : 语句2;break; case 常量表达式n : 语句n;break; default : 语句n+1;break; (2)功能:当表达式的值与常量表达式i(i=1n)相等时,
60、执行对应的语句;除此而外,则执行语句n+1 (3)break:有将控制转到switch语句之后; 无继续执行下一个case 【例3.16】如有:float x=1.5;int a=1,b=2,c=3,判断下面正确的switch()语句a)switch(x) x case 1.0 :printf(“*n”); case 2.0 :printf(“*n”); b)switch(int)x); x case 1 :printf(“*n”); case 2 :printf(“*n”); c)switch(a+b) case 1 :printf(“*n”); case 2+1 :printf(“*n”); d)switch(a+b) case 1 :printf(“*n”); case c :printf(“*n”); x 分析:a)x是实型量b)switch后多了一个分号d)case 中使用了变量cc)正确 【例3.17】将例3.13用switch()语句语句来实现#include void main() int grade; printf(请输入成绩等级:); scanf(%d,&grade); case 4: print
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年农业物联网精准种植智能农机装备应用报告
- 武理工工程热力学与传热学课件第11章 蒸汽动力循环
- 食药所职责讲课件
- DB6106-T 211-2023 民用建筑消防供水管道和供水设施防冻操作规程
- 糖尿病治疗案例分析讲课件
- 家庭教育对维持孩子学习动机的作用研究
- 商业培训中的心理辅导提升团队凝聚力
- 教育心理学在培养学生自我管理能力中的运用
- 江西农业大学南昌商学院《幼儿艺术教育与活动指导舞蹈》2023-2024学年第二学期期末试卷
- 红河职业技术学院《数码摄影与制作》2023-2024学年第二学期期末试卷
- 2025至2030中国建材行业发展分析及产业运行态势及投资规划深度研究报告
- 2025年黑龙江、吉林、辽宁、内蒙古高考生物真题试卷(解析版)
- 2025-2030中国线扫描照相机行业市场发展趋势与前景展望战略分析研究报告
- 2025年艺术与数字艺术类事业单位招聘考试综合类专业能力测试试卷
- 福建省泉州市晋江市2025届数学七下期末调研试题含解析
- 2025至2030年中国钢结构制品行业投资前景及策略咨询研究报告
- 山西省运城市2025年中考一模语文试题(含答案)
- 2025河南中考:政治必背知识点
- 电影放映员试题及答案
- 2025-2030中国宠物殡葬服务行业市场深度分析及发展前景与投资战略研究报告
- 2024-2025学年湖北省武汉市七校高一下学期4月期中联考数学试卷(含答案)
评论
0/150
提交评论