1 / 29

第三讲 顺序结构程序设计

第三讲 顺序结构程序设计. 纪良浩 2008-2009 第一学期 重庆邮电大学计算机学院. 上讲回顾. 几个基本术语(标识符、关键字、常量、变量) 三种基本数据类型(整型 、浮点型、字符型) --- 数据类型不同,所能表示的数的范围不同,在内存中占用的存储空间不同; 运算符、优先级和结合性表达式 “ =” a=3 , a=b+c “+ , - ,*, / , %” a=b+c*3-d/4+e%2 “ ,” 3+3,5+6. C 语言程序三种基本结构.

nola-finch
Download Presentation

第三讲 顺序结构程序设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第三讲 顺序结构程序设计 纪良浩 2008-2009第一学期 重庆邮电大学计算机学院

  2. 上讲回顾 • 几个基本术语(标识符、关键字、常量、变量) • 三种基本数据类型(整型 、浮点型、字符型)---数据类型不同,所能表示的数的范围不同,在内存中占用的存储空间不同; • 运算符、优先级和结合性表达式 “=” a=3,a=b+c “+,-,*,/,%” a=b+c*3-d/4+e%2 “,” 3+3,5+6

  3. C语言程序三种基本结构 … main() { … … } • 顺序结构(课本第4章,本讲内容) • 选择结构(分支结构)(课本第5章) • 循环结构(课本第6章) … main() { … … } … main() { … … }

  4. 顺序结构 • 在顺序结构程序中,各语句(或命令)是按照位置的先后次序,顺序执行,且每个语句都会被执行到。

  5. 例1:设计一个顺序结构程序,求三个整数的和及平均值例1:设计一个顺序结构程序,求三个整数的和及平均值 问题分析 • 用户:请给我计算三个整数的和以及平均数; • 计算机:这三个数各位多少? • 用户:3,5,5 • 计算机: 三个整数的和=3+5+5=13; 三个整数的平均值=(3+5+5)/3=4.33

  6. 开始 给出整数的值 计算 输出结果 结束 例1算法 • 步骤 (1)给出三个整数的值; (2)计算它们的和以及平均值; (3)输出计算结果; 算法流程图

  7. 例1分析---(1)如何给出三个整数的值? • 1.这三个整数存放在哪里?他们都是什么类型? • 2.本例需要申请几个什么类型的变量? • 3.如何申请? 内存,int变量 • 三个整数,他们的和,他们的平均值; • 4个int型变量,一个float型变量 • int a,b,c,sum; /*int a=3,b=5,c=5,sum;*/ • float aver; • a=3; • b=5; • c=5

  8. (2)如何求和和平均值? • 按照数学关系,利用数学方法 • sum=a+b+c; • ever=(a+b+c)/3.0 or ever=sum/3.0 or (float)sum/3 or 1.0*sum/3… 这样写行不行?请同学们上机验证 ever=a+b+c/3 ? ever=(a+b+c)/3 ?

  9. (3)如何输出结果 • 格式输出printf函数 • 一般格式: printf(格式控制,输出表列) • 格式控制:用’’括起来的字符串,包括两种信息 • 格式说明:将输出的数据转换为制定的格式。由“%”和格式字符组成,如%d,%f等; • 普通字符:即需要原样输出的字符; • 输出表列:需要输出的一些数据。

  10. printf函数举例 • printf(“This is a C programme!\n”); • printf(“%d%f\n”,a,b); • printf(“a=%d,b=%f\n”,a,b); • printf(“The result is a=%d,b=%f\n”,a.b); 蓝色---格式说明; 绿色---普通字符,要原样输出的字符; 红色---输出的变量表列; 注意:输出的变量类型要与格式说明一致,且相互对应; 这种格式输出,可读性强,便于理解 • 问题求解 • printf(“它们的和是sum=%d\n”,sum); /*输出和*/ • printf(“它们的平均值是ever=%f\n”,ever); /*输出平均值*/

  11. 例1 源程序 #include<stdio.h> main() { int a,b,c,sum; /*定义4个整型变量,sum表示和*/ float aver; /*aver用来表示平均值*/ a=3;b=5;c=5; sum=a+b+c; /*求和*/ aver=sum/3.0; /*求平均值*/ printf("%d,%f",sum,aver); } printf(“sum=%d,ever=%f",sum,aver); printf(“The result is sum=%d,ever=%f",sum,aver);

  12. 思考? • 上例中三个整数的值是直接赋值的,如果要求这三个数的值在程序运行时给定,怎么办? • 格式输入函数 scanf函数 • 一般形式 scanf(格式控制,地址表列) • 格式控制同printf函数,地址列表:若干个地址的列表,如变量的地址等。 • “&”地址运算符,如&a,表示a在内存中的地址。 • E.g. scanf(“%d,%d,%d”,%a,%b,%c);

  13. scanf函数常用的几种格式 以输入两个十进制整数为例: • scanf(“%d%d”,&a,&b); • scanf(“%d,%d”,&a,&b); • scanf(“a=%d,b=%d”,&a,&b); • 数据之间以一个或多个空格间隔,也可以用Enter、Tab键。 • E.g. 3(空格) 4;3(回车)4;… • 严格按照控制格式输入 • E.g. 3,4; • 严格按照控制格式输入 • E.g. a=3,b=4; • 推荐使用后两种格式输入数据 • scanf函数注意问题: • 地址列表中应该是地址,而不是变量; • 必须严格按照“格式控制”字符串的格式输入数据,且变量的类型要与格式控制中一致;

  14. 接例1---要求从键盘输入三个整数的值,求它们的和以及平均值接例1---要求从键盘输入三个整数的值,求它们的和以及平均值 #include<stdio.h> main() { int a,b,c,sum; float aver; scanf("%d,%d,%d",&a,&b,&c);/*用格式输入函数代替赋值语句a=3;b=5;c=5;*/ sum=a+b+c; aver=sum/3.0; printf("The resule is sum=%d,aver=%f\n",sum,aver); }

  15. 开始 输入三角形三边长 海伦公式求面积 输出结果 结束 流程图 例2:输入三角形的三边长,求三角形面积 算法步骤: 1.给出三角形的三条边长; 2.利用海伦公式求面积; 3.输出三角形的面积;

  16. 分析 • 1.需要几个变量,都是什么类型; • 可以先确定必须要用的几个变量,如3个边长(可以是整型,也可以是浮点型,根据具体情况决定),面积(一般为浮点型); • 2.海伦公式如何表示? • s=(a+b+c)/2.0 • C中开方用sqrt函数,此函数的说明信息在“math.h”头文件中。

  17. 源程序 • 本例用到数学函数sqrt() • 以后程序中用到任何一个数学函数库中的函数,都要加入此条编译预处理语句; • 常用的数学函数可参考教材附录 #include<stdio.h> #include<math.h> main() { int a,b,c; /*三个变量,用来表示三条边长*/ float s,area; /*area变量用来表示面积*/ scanf(“%d,%d,%d”,&a,&b,&c); /*输入三条边长的值*/ s=(a+b+c)/2.0; area=sqrt(s*(s-a)*(s-b)*(s-c)); /*海伦公式求面积*/ printf("The resule is area=%f\n",area); } 思考:如果要求area的值只保留小数点后指定的有效数字,如何处理? printf("The resule is area=%.2f\n",area);

  18. 例3 编程将小写字母转换成对应的大写字母 • 分析 • 小写字母从何而来? • 两途径 • 赋初值 如:char c1;c1=‘a’; • 键盘输入 如:char c1; scanf(“%c”,&c1); • 如何转换? • 小写字母的ASCII码比大写字母的大32,参见书附录。

  19. 源程序 源程序1 源程序2 #include<stdio.h> main() { char c1,c2; scanf("%c",&c1); c2=c1-32; printf("The upcase is %c\n",c2); } #include<stdio.h> main() { char c1,c2; c1='a'; c2=c1-32; printf("The upcase is %c\n",c2); }

  20. 字符数据的输入输出 • 字符数据的输入 getchar函数 • 一般形式 getchar( ) • 函数的作用就是从终端输入一个字符,函数的值为从输入设备得到的字符; • 如 char c;c=getchar( );从终端输入一个字符,把它的值赋给字符变量c; • 字符数据的输出putchar函数 • 一般形式 putchar( ) • 函数的作用是向终端输出一个字符; • 如 putchar(c),它输出字符变量c的值,c可以使字符或整型变量;

  21. 接上例 #include<stdio.h> main() { char c1,c2; c1=getchar();/*输入字符*/ c2=c1-32; putchar(c2); ();/*输出字符*/ } #include<stdio.h> main() { char c1,c2; scanf("%c",&c1); c2=c1-32; printf("The upcase is %c\n",c2); }

  22. a 5 a a a 5 3 3 b 3 b b b 5 3 3 temp temp temp temp 5 5 5 1 2 3 4 例4 编程实现两个变量值的交换 • 算法分析 要交换两个变量的值可以借助第三个变量,过程如下: • 准备第三个变量,如temp; • 将第一个变量a的值保存在temp中,temp=a; • 将第二个变量b的值赋给a,a=b; • 将temp的值(a的初值)赋给b,b=temp;

  23. 开始 temp=a; a=b; b=temp; 结束 流程图

  24. 源程序 #include<stdio.h> main() { int a,b,temp; scanf("%d,%d",&a,&b); printf("交换前a=%d,b=%d\n",a,b); temp=a; a=b; b=temp; printf("交换后a=%d,b=%d\n",a,b); }

  25. 思考 • 上例交换两个变量的值,借用了一个临时变量,如不用临时变量,如何来做? • 方法: • a=a+b; /*a中先存放两者的和*/ • b=a-b; /*将a的值(和值)与b初值的差(即a的初值)赋给b*/ • a=a-b; /*将a的值(和值)与b(即a的初值)的差(即b的初值)赋给a变量*/

  26. 源程序 #include<stdio.h> main() { int a,b; printf(“请输入a、b的初值\n”);/*加入提示信息*/ scanf("%d,%d",&a,&b); printf("交换前a=%d,b=%d\n",a,b); a=a+b; b=a-b; a=a-b; printf("交换后a=%d,b=%d\n",a,b); } • 为增加程序的可操作性,可在必要的地方输出一些提示信息 • 以后做程序尽量采用多种算法来写,锻炼思维,提高编程能力!

  27. 本讲涉及语法知识 只能处理字符 • 字符数据的输入函数getchar( ); • 字符数据的输出函数putchar( ); • 格式输入函数scanf( ); • 格式输出函数printf( ); • 几种常见的格式说明: • 更多的用法参考教材4.4和4.5 • 不要死记,多上机体会 处理任意类型数据

  28. 常用数学函数 • 常用数学函数,在使用的时候加#include<math.h>:

  29. 课后作业 • P89 4.8 4.9将程序上机调试后,再上交!

More Related