C语言上机报告第2章.ppt_第1页
C语言上机报告第2章.ppt_第2页
C语言上机报告第2章.ppt_第3页
C语言上机报告第2章.ppt_第4页
C语言上机报告第2章.ppt_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C 语言程序设计 基础篇 第 2 章 简单程序设计之一 C语言程序设计 基础篇 * 运算符和表达式 顺序结构程序设计 选择结构程序设计 简单循环结构程序设计 内容概述内容概述 C语言程序设计 基础篇 * 教学目标教学目标 掌握常量与变量的定义和使用方法; 学会三种结构的简单程序设计; 从整体上把握和了解C程序的基本结构,对C 语言程序开发设计有初步的感性认识。 C语言程序设计 基础篇 * C语言程序的控制结构 顺序结构顺序结构 选择结构选择结构 循环结构循环结构 C语言程序设计 基础篇 * 2.1 顺序结构程序设计 顺序结构程序设计就是根据问题要求设计 的程序,其执行过程是按程序书写的顺序,从 上到下,逐条语句顺序地执行,没有跳转,一 直到最后一条语句,程序才算执行完毕,退出 程序。 C语言程序设计 基础篇 * 基本的算术运算符 运算符运算符 名称名称举例举例说明说明 + + 加法运算符加法运算符 a+3a+3 加法加法 - - 减法运算符减法运算符 c-4c-4 减法减法 * * 乘法运算符乘法运算符 a*3a*3 乘法乘法 / / 除法运算符除法运算符 c/dc/d 除法除法 % % 模运算符模运算符 e%4e%4 求余数、取模求余数、取模 C语言程序设计 基础篇 * 算术表达式和运算符的优先级与结合性 n n 表达式表达式是由常量、变量、函数和运算符是由常量、变量、函数和运算符 组合起来的式子。组合起来的式子。 n n 如:如: na + b n(a * 2) / c n(x + r) * 8 - (a + b) / 7 C语言程序设计 基础篇 * 运算符的优先级和结合性 n n 优先级优先级 ( (从高到低从高到低) ) ( ) * / % + (加) (减) n n 结合方向结合方向 + (加) (减) * / %:从左向右 n n 若在运算量两侧的运算符有相同的优先级,则按它若在运算量两侧的运算符有相同的优先级,则按它 们的结合方向顺序处理。们的结合方向顺序处理。 例: a b / c 1 + a d e; C语言程序设计 基础篇 * 两点说明 1.1.两个整数相除,结果也为整数两个整数相除,结果也为整数 n直接舍去商的小数部分,而不会“四舍五入” n如果需要得到精确的运算结果,可以把其中 一个操作数转换为浮点数。 举例:5/3(=1)、5.0/3(=1.66666) 1.1.模运算符的两个操作数都必须是整数模运算符的两个操作数都必须是整数 举例:5%3(=2) C语言程序设计 基础篇 * 【例2.1】由键盘输入两个整数给变量a和b,输 出a和b的和差积商及余数。 定义变量: int a,bint a,b; int sum, difference,product, quotient, remainder; int sum, difference,product, quotient, remainder; 算法: sum=a+b; sum=a+b; difference=a-b;difference=a-b; product=a*b; product=a*b; quotient=a/b; quotient=a/b; remainder=a%b; remainder=a%b; C语言程序设计 基础篇 * #include “stdio.h“#include “stdio.h“ void main()void main() int a,b,sum, difference,product, quotient, int a,b,sum, difference,product, quotient, remainder;remainder; printf(“printf(“请输入请输入a a和和b b的值的值:“);:“); scanf(“%d%d“,scanf(“%d%d“, sum=a+b; sum=a+b; difference=a-b;difference=a-b; product=a*b; product=a*b; quotient=a/b; quotient=a/b; remainder=a%b; remainder=a%b; printf(“ printf(“和和=%d,=%d,差差=%d,=%d,积积=%d,=%d,商商=%d,=%d,余数余数 =%dn“,sum,difference,product,quotient,rem=%dn“,sum,difference,product,quotient,rem ainder);ainder); C语言程序设计 基础篇 * 问题分4个步骤来处理: (1)输入两个整数给变量a和b; (2)输出a和b的值; (3)交换a和b的值; (4)输出a和b的值。 【例2.2】由键盘输入两个整数给变量a和b,然后输 出a和b。在交换a和b的值后,再输出a和b,验证两个变 量中的数值是否正确地进行了交换。 C语言程序设计 基础篇 * #include void main() int a,b,t; printf(“Enter a and b:n“); scanf(“%d %d“, /*输入两个整型变量a和b*/ printf(“a=%d,b=%dn“,a,b); /* 输出a和b的值 */ t=a; /* 交换a和b的值 */ a=b; b=t; printf(“a=%d,b=%dn“,a,b); /* 输出a和b的值 */ C语言程序设计 基础篇 * 2.2.1关系运算符和关系表达式 n n 关系运算:比较运算,比较两个操作数关系运算:比较运算,比较两个操作数 ,看是否满足给定的关系。,看是否满足给定的关系。 n如: a3 为一比较运算, 若a=5,a3 成立,结果为“真”; 否则,若a=1,a3 不成立,结果为假。 n在C语言中,用非零值表示真,零表示假。 n表达式: a3 称为关系表达式。 2.2 选择结构程序设计 C语言程序设计 基础篇 * C语言提供了六种关系运算符 1.1.: 大于,大于, 5353, 3535 4.4.=: 大于等于,大于等于,5 =3, 3 5 =3, 3 =5=5 5.5.=: 等于,等于, 5=35=3 6.6.!=!=:不等于,不等于, 5!=35!=3 C语言程序设计 基础篇 * 关系运算符的优先次序 n n 关系运算符优先级低于算术运算符。关系运算符优先级低于算术运算符。 nca+b c (a+b) na+b=2*c (a+b) = (2*c) C语言程序设计 基础篇 * 关系表达式 n n 关系表达式关系表达式: : 用关系运算符将两个表达式连接用关系运算符将两个表达式连接 起来的式子。起来的式子。 n如: ab a+bb+c n n 关系表达式的值为关系表达式的值为1 1或或0 0 n1表示结果为真,也就是关系成立。 n0表示结果为假,也就是关系不成立。 C语言程序设计 基础篇 * 例 关系运算符 #include #include int main()int main() int a, b, c;int a, b, c; a = 5; b = 3; c = 4;a = 5; b = 3; c = 4; printf(printf(“ “ab: %dnab: %dn“, “, ab);ab); printf(printf(“ “a+bb+c : %dna+bb+c : %dn“, “, a+bb+c);a+bb+c); printf(printf(“ “(ab)(bb)(bb)(bb)(bb: 1 a+bb+c : 1 (ab)(b int main() int a,b,max; printf(“Input two numbers: “); scanf(“%d%d“, max=a; if (max int main() int a, b; printf(“Input two numbers: “); scanf(“%d%d“, if(ab) printf(“max=%dn“, a); else printf(“max=%dn“, b); return(0); 运行结果为: Input two numbers: 5 12 max=12 C语言程序设计 基础篇 * 复杂条件下的if条件结构 【例2.4】从键盘输入一个年份,判断是否闰年。 什么是闰年? 复合条件可表示为: (year%4=0) int year; printf(“ printf(“请输入年份:请输入年份:“);“); scanf(“%d“, scanf(“%d“, if(year%4=0)n“,year); else printf(“%d else printf(“%d年不是闰年年不是闰年n“,year);n“,year); C语言程序设计 基础篇 * 第三种形式为: if-else-if 前两种形式的if语句一般都用 于两个分支的情况。当有 多个分支选择时,可采用 if-else-if语句。 其语义是:依次判断表达 式的值,当出现某个值为 真时,则执行其对应的语 句。然后跳到整个if语句 之外继续执行程序。 如果 所有的表达式均为假,则 执行语句n。然后继续执行 后续程序。 if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; else if(表达式m) 语句m; else 语句n; 一般形式为: C语言程序设计 基础篇 * C语言程序设计 基础篇 * 【例2.4】个人年收入低于5万元,可免个人所得税; 年收入在5万10万元之间,超过5万元的部分交5%的 个人所得税;年收入在10万元以上则交总收入的7%的 个人所得税。请编写一个程序,根据个人年收入计算 个人所得税(精确到元)。 个人年收入和个人所得税分别用整型变量x、y保存。根 据题意,个人所得税与个人年收入的关系可用一个分段 函数表示: C语言程序设计 基础篇 * #include“stdio.h“ void main() int x,y; printf(“请输入个人年收入:“); scanf(“%d“, /*输入个人年收入*/ if (x 89) /*90100分,积点5*/ grade=5; else if(score79) /*8089分,积点4*/ grade=4; else if(score69) /*7079分,积点3*/ grade=3; else if(score59) /*6069分,积点2*/ grade=2; else /*590分,积点0*/ grade=0; printf(“成绩%d的对应积点是%dn“,score,grade); C语言程序设计 基础篇 * 在使用if语句中还应注意以下问题 在三种形式的if语句中,在if关键字之后均为表达式 。该表达式通常是逻辑表达式或关系表达式,但也可 以是其它表达式,如赋值表达式等,甚至也可以是一 个变量。 例如: if (a=5) 语句; if (b) 语句; 都是允许的。只要表达式的值为非0,即为“真”。 C语言程序设计 基础篇 * 在if语句的三种形式中,所有的语句应为单个语句 ,如果要想在满足条件时执行一组(多个)语句,则 必须把这一组语句用括起来组成一个复合语句。 但要注意的是在之后不能再加分号。 if (xy) x = x+5; y = y+10; else x = 10; y = 5; 例如: 在if语句中,条件判断表达式必须用括号括起来, 在语句之后必须加分号。 例如:if (b) 语句; C语言程序设计 基础篇 * 当if语句中的执行语句又是if语句时,则构成了if 语句嵌套的情形。 其一般形式可表示如下: if(表达式) if语句; 或者为 if(表达式) if语句; else if语句; 在嵌套内的if语句可能又是if-else型的,这将会 出现多个if和多个else重叠的情况,这时要特别注 意if和else的配对问题。 C语言程序设计 基础篇 * 例如: if(表达式1) if(表达式2) 语句1; else 语句2; 其中的else究竟是与哪一个 if配对呢? 应该理解为: if(表达式1) if(表达式2) 语句1; else 语句2; 还是应理解为: if(表达式1) if(表达式2) 语句1; else 语句2; 为了避免这种二义性,语言规 定,else 总是与它前面最近的 if配对,因此对上述例子应按前 一种情况理解。 C语言程序设计 基础篇 * if-else-ifif-else-if解决多分支问题解决多分支问题 -程序冗长而且可读性差程序冗长而且可读性差 解决办法:解决办法: -switch-switch开关语句开关语句 2.2.4 switch多分支结构 C语言程序设计 基础篇 * 1、switch语句形式: switch (表达式) case 常量1: 语句1; case 常量2: 语句2; case 常量3: 语句3; . case 常量n: 语句n; default : 语句n+1; 根据表达式的不同值根据表达式的不同值 ,选择不同的程序分,选择不同的程序分 支,又称开关语句支,又称开关语句。 数值型 或 字符型 常量表达式的值必须 互不相同,否则执行 时将出现矛盾,即同 一个开关值,将对应 多种执行方案。 千万不 能接(; )号 C语言程序设计 基础篇 * 2、语句执行流程: 指语句的最 后一条是否 为break 简单语句或 复合语句 case语句出 现的次序并 不影响执行 结果。 breakbreak 有 break 有有 计算表达式 常量1常量2常量n = 语句1 = 语句2语句n 其它 = 语句n+1 值 C语言程序设计 基础篇 * void main() int n; printf(“请输入成绩:“); scanf(“%d“, switch (int)(n/10) case 10: printf(“成绩%d的等级为优秀n“,n); case 9: printf(“成绩%d的等级为优秀n“,n); case 8: printf(“成绩%d的等级为良好n“,n); case 7: printf(“成绩%d的等级为中等n“,n); case 6: printf(“成绩%d的等级为及格n“,n); default: printf(“成绩%d的等级为不及格n“,n); 出错啦!? 【例2.7】改写例2.6,用switch语句实现对学生成绩进行等 级评定。 C语言程序设计 基础篇 * 在“switch”语句中,“case 常量表达式” 只相当于一个语句标号,表达式的值和某标号 相等则转向该标号执行,但不能在执行完该标 号的语句后自动跳出整个switch 语句,因此 会继续执行所有后面语句的情况。 为此,语言提供了一种break语句,其 功能是可以跳出它所在的switch语句。 C语言程序设计 基础篇 * 将上面的例2.7修改如下: void main() int n; printf(“请输入成绩:“); scanf(“%d“, switch (int)(n/10) case 10: printf(“成绩%d的等级为优秀n“,n);break; case 9: printf(“成绩%d的等级为优秀n“,n); break; case 8: printf(“成绩%d的等级为良好n“,n); break; case 7: printf(“成绩%d的等级为中等n“,n); break; case 6: printf(“成绩%d的等级为及格n“,n); break; default: printf(“成绩%d的等级为不及格n“,n); C语言程序设计 基础篇 * 使用switch语句时还应注意以下几点 switch后面圆括号内表达式的值和case语句中常量 表达式的值,都必须是整型的、枚举型的或字符型 的,不允许是浮点型的。在case后的各常量表达式 的值不能相同。 每个case子句既可以是一条语句,也可以是多条语 句。当是多条语句时,不需要用花括号括起来。 各个case子句和default子句的先后顺序可以变动, 而不会影响程序执行结果。 default子句可以省略不用。 多个case的后面可以共用一组执行语句 。如例2.7 中等级为优秀的判断程序可改为: C语言程序设计 基础篇 * switch(int)(n/10) case 10: case 9: printf(“成绩%d d的等级为优秀 n“); break; C语言程序设计 基础篇 * 2.3 简单循环结构程序设计 问题 计算1+2+100的值,即 int i, sum; i = 1; sum = 0; sum = sum+i; i=i+1; sum = sum+i; i=i+1; : sum = sum+i; i=i+1; 如何避免出现这种情况? 重复100次同样的语句 ,程序显得很笨拙。 2.3.1 为什么使用循环结构 C语言程序设计 基础篇 * 前面的例子是一种循环执行的情况,也就是: 在给定条件(i100)成立时,反复执行某程序段 (sum=sum+i; i=i+1),直到条件不成立为止。 给定的条件称为循环条件,反复执行的程序段称 为循环体。 这种结构被称为循环结构,它是程序中一种很重 要的结构。 C语言程序设计 基础篇 * 语言提供了多种循环语句,可以组成各 种不同形式的循环结构。 用goto语句和if语句构成循环;(不介绍, 不推荐使用) 用while语句; 用do-while语句; 用for语句。 C语言程序设计 基础篇 * 2.3.2 while语句和do-while语句 格式: while (表达式) 语句; 其中表达式是循环条件,语句为 循环体。 功能: 当表达式的值为非0时,执行 while语句中的循环体。结构流程 图如图所示。 用while语句来实现“当型”循环 结构。 1. while语句 C语言程序设计 基础篇 * 用while语句求 用N-S图表示算法, 如右图所示: 0sum, 1i i int main() int i, sum; i=1; sum=0; while (i int main() int i, sum; i=1; sum=0; do sum = sum + i; i+; while (i void main() int sum=0,i; scanf(“%d“, while(i int main() int sum=0,i; scanf(“%d“, do sum = sum + i; i+; while(i0) m+; else n+;if(a0) m+; else n+; 每次循环都做了什么工作每次循环都做了什么工作 m=m=0;0; n=0 ; n=0 ; (正、负数从(正、负数从0 0开始计数开始计数 ) 循环什么条件下开始循环什么条件下开始 m,nm,n(正、负数的个数(正、负数的个数 ),),a a(存放输入的整数)(存放输入的整数) 定义变量:定义变量: C语言程序设计 基础篇 * #include “stdio.h“#include “stdio.h“ void main()void main() int a,m=0,n=0; int a,m=0,n=0; printf( printf(“ “请输入若干个整数:请输入若干个整数:n“);n“); scanf(“%d“, scanf(“%d“, while(a) while(a) /* /* 等价于等价于while(a!=0) */while(a!=0) */ if (a0)if (a0) m+; m+; /* m=m+1 */* m=m+1 */ elseelse n+; n+; /* n=n+1 */* n=n+1 */ scanf(“%d“, scanf(“%d“, printf(“ printf(“正数的个数正数的个数=%d=%d,负数的个数,负数的个数=%dn“, m,n);=%dn“, m,n); 1. while循环实现 C语言程序设计 基础篇 * #include “stdio.h“#include “stdio.h“ void main()void main() int a,m=0,n=0; int a,m=0,n=0; p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论