C语言实例教程-顺序结构程序设计课件_第1页
C语言实例教程-顺序结构程序设计课件_第2页
C语言实例教程-顺序结构程序设计课件_第3页
C语言实例教程-顺序结构程序设计课件_第4页
C语言实例教程-顺序结构程序设计课件_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

1、顺序结构程序设计 成绩管理中数据的输入、计算与输出案例引入试编写程序,对各列数据进行适当类型的常量、变量描述并进行输入、赋值表达式计算和输出。假设学生成绩表如下:任务描述成绩管理中数据的输入、计算与输出案例引入1.完成以下任务 (1)通过键盘输入某学生的任务成绩(t1,t2,t3,t4)、考勤(sick,l_e(late/early),absent)和期末成绩(f_e(final exam))的值; (2)使用变量计算某学生形成性考核成绩(avg)、终结性考核成绩(score); (3)使用常量输出某学生的学号(no)、姓名(name),并输出终结性考核成绩(score)。任务描述成绩管理中数

2、据的输入、计算与输出案例引入2.几点说明与要求 (1)形成性考核成绩(avg)为t1,t2,t3,t4的平均值。 (2)终结性考核成绩(score)为avg的40%+期末成绩(f_e)的60%考勤扣分。 (3)考勤扣分规定为病假(sick)每次扣2分,迟到早退(l_e)每次扣5分,旷课(absent)每次扣20分。 (4)格式输出要求清晰、整齐。 (5)对于实型数据采用保留一位小数输出。 (6)通过重复以上可以处理若干位学生的成绩。 假设考核等级规定为D不及格(60)C及格(6079)B良好(8089)A优秀(90100),思考考核等级(grade)怎么处理? 任务描述 #include ma

3、in() int t1,t2,t3,t4,sick,l_e,absent; float avg,f_e,score; printf(Please input No1 t1,t2,t3,t4,sick,l_e,absent,f_e:n); scanf(%d%d%d%d%d%d%d%f,&t1,&t2,&t3,&t4,&sick,&l_e,&absent,&f_e); avg=(float)(t1+t2+t3+t4)/4; score=avg*0.4+f_e*0.6-(sick*2+l_e*5+absent*20); printf(NO1.刘延运 %6.1fn, score); printf(Pl

4、ease input No2 t1,t2,t3,t4,sick,l_e,absent,f_e:n); scanf(%d%d%d%d%d%d%d%f,&t1,&t2,&t3,&t4,&sick,&l_e,&absent,&f_e); avg=(float)(t1+t2+t3+t4)/4; score=avg*0.4+f_e*0.6-(sick*2+l_e*5+absent*20); printf(NO2.孙燕 %6.1fn, score); 成绩管理中数据的输入、计算与输出案例引入开始运行源代码展示 成绩管理中数据的输入、计算与输出案例引入分析成绩表中各个数据项,定义它们的数据类型,根据要求设计

5、计算公式,然后输入某个学生的成绩,进行计算,最后根据要求进行输出。其他学生的成绩一样的处理。 运行结果1.能够熟练地根据数据处理需求描述合适数据类型的常量,定义合适数据类型的变量。 2.能够熟练地根据数据处理需求正确编写表达式。 3.具备赋值计算处理、输入和输出顺序结构程序设计的基本能力。 4.培养程序设计人员耐心、细致、追求完美的基本素质。 能力目标程序设计基础1赋值语句2复合语句和空语句3数据的输入与输出4技能训练5知识要求3.1程序设计基础3.1.1程序程序就是一条条指令序列的集合。一条机器语言成为一条指令,指令是不可分割的最小功能单元。一个程序应包括两个方面: (1)对数据的描述。在程

6、序中要指定数据的类型和数据的组织形式,即数据结构。 (2)对操作的描述:即操作步骤,也就是算法。程序设计语言:描述数据和算法程序设计目的:进行数据的处理程序=数据+算法+程序设计方法+语言工具和环境1.确定数据结构。根据任务书提出的要求、指定的输入数据和输出结果,确定存放数据的数据结构。2.确定算法。针对存放数据的数据结构来确定解决问题、完成任务的步骤。3.编码。根据确定的数据结构和算法,使用选定的计算机语言编写程序代码,输入到计算机并保存在磁盘上,简称编程。4.程序调试。消除由于疏忽而引起的语法错误或逻辑错误;用各种可能的输入数据对程序进行测试,使之对各种合理的数据都能得到正确的结果,对不合

7、理的数据能进行适当的处理。5.整理并写出文档资料。3.1程序设计基础3.1.2程序设计简单的程序设计一般包含的几个部分3.1程序设计基础3.1.3算法1.算法的概念算法是指为解决某个特定问题采取确定且有限的步骤。有穷性确定性可行性有零个或多个输入有一个或多个输出算法特性随着结构化程序设计方法的出现,美国学者I.Nassi,B.Shneiderman提出了一种新的流程图N-S流程图。这种流程图中,完全去掉了带箭头的流程线。3.1程序设计基础3.1.3算法2.算法的描述常用的算法表示方法:自然语言,传统流程图,结构化流程图(N-S流程图),伪代码、计算机语言等 起止框 处理框 输入/输出框 判断框

8、 流程线 连接点3.1程序设计基础3.1.4结构化程序顺序结构顺序结构中的语句是按书写的顺序执行的,语句的执行顺序与书写顺序一致选择结构当程序执行到某一语句时,将根据不同的条件去执行不同分支的语句循环结构当满足某种循环条件时,将一条或多条语句重复执行若干遍,直到不满足循环条件为止组成与概念当p条件成立,执行A操作,当p条件不成立,执行B操作。A,B操作允许空操作,即什么都不做。注意选择结构是一个整体,代表一个基本结构。ABab顺序结构ap ABbYNaApYNbP-选择条件选择结构3.1程序设计基础3.1.4结构化程序流程图先执行A操作,再执行B操作。aapAYNbApbYN当型循环直到型循环

9、P-循环条件循环结构3.1程序设计基础3.1.4结构化程序流程图a)当型循环:当条件p成立时,反复执行A操作,直到p条件不成立为止。当型循环先判断再决定是否执行循环体,所以在条件p一次都不满足时,循环体A可能一次都不执行。b)直到型循环:当条件p不成立时,反复执行A操作,直到p条件成立为止。直到型循环先执行循环体A,然后再判断条件p,所以循环体至少执行一次。AB顺序结构p成立不成立A选择结构当P成立直到P成立循环结构3.1程序设计基础3.1.4结构化程序流程图3.1程序设计基础3.1.4结构化程序流程图三种结构中的A、B框可以是一个简单的操作,也可以是3个基本结构之一,也就是说基本结构可以嵌套

10、。三种基本结构共同的特点: (1)只有一个入口; (2)只有一个出口; (3)无死循环。已经证明,由三种基本结构组成的算法可以解决任何复杂的问题。由三种基本结构组成的算法称为结构化算法,由三种基本结构组成的程序称为结构化程序。小提示3.1程序设计基础3.1.4结构化程序例3.1的传统流程图P=1i=2P=p*ii5例3.1的N-S流程图示例如何表示算法?3.1程序设计基础3.1.5模块化程序当计算机在处理较复杂的任务时,所编写的程序经常由上万条语句组成,需要由许多人来共同完成。这时常常把这个复杂的任务分解为若干个子任务,每个子任务又分成很多子任务。在程序设计时,用一个个小模块来实现这些功能,每

11、个程序员分别完成一个或多个小模块。我们称这样的程序设计方法为模块化方法,由一个个功能模块构成的程序结构为模块化结构。3.1程序设计基础3.1.5模块化程序由于把一个大程序分解成若干个相对独立的子程序,每个子程序的代码一般不超过一页纸,因此对于程序员来说,编写程序的代码变得不再困难。这时只需对程序之间的数据传递做出统一规范,同一软件可由一组人员同时进行编写,分别调试,这就大大提高了程序编制的效率。3.1程序设计基础3.1.5模块化程序软件编制人员在进行程序设计的时候,首先应当集中考虑主程序中的算法,写出主程序后再动手逐步完成子程序的调用。对于这些子程序也可调试主程序的同样方法逐步完成其下一层的子

12、程序的调用。这就是自顶向下、逐步求精、模块化的程序设计方法。3.1程序设计基础3.1.5模块化程序C语言是结构化程序设计语言,在C语言中没有定义子程序的概念,它提供的函数可以完成子程序的所有功能,C语言允许对函数单独进行编译,从而可以实现模块化。C语言还提供了丰富的函数,系统函数至少300多个,用户根据需要可以自定义函数。3.2赋值语句赋值语句是由赋值表达式加分号构成的。例如,“a=b+c”是赋值表达式,“a=b+c;”则是赋值语句。有如下赋值语句:简单赋值语句:a=a+b;复合赋值语句:i+=1; 等价i=i+1;自加自减赋值语句:i+;等价i=i+1; i;等价i=i1;逗号赋值语句:i=

13、1,j=2;3.2赋值语句当同一个变量出现在赋值号两边的时候,对右边的变量进行的是取(读取)值运算,变量值不变。对左边的变量进行的是赋(写存)值运算,变量值更新。例:计数和累加运算 i=0;s=0; i s i=i+1; 1 计数 scanf(“%f”,cj); 输入成绩 s=s+i; 1 累加 s=s+cj; 累加 i=i+1; 2 scanf(“%f”,cj); s=s+i; 3 s=s+cj; i=i+1; 3 scanf(“%f”,cj); s=s+i; 6 s=s+cj; i=i+1; 4 scanf(“%f”,cj); s=s+i; 10(1+2+3+4) s=s+cj; s=cj

14、1+cj2+cj3+cj4说明3.2赋值语句例:变量x,y值的交换int x,y,t;x=5;y=6;t=x;x=y;y=t;例:保留两位小数(四舍五入)x=86.4567;x=(int)(x*100+0.5)/100; 3.2赋值语句(1)左边一定是变量。(2)右边可以是变量、常量、函数、运算符和括号。(3)赋值要相容。(4)赋值表达式可以位于程序中表达式可以出现的位置。(5)赋值语句可以位于程序中执行部分作为执行语句的一种。小提示a=9;a=a=a+1;则执行此语句后,变量a和表达式的值为10。示例用把一些语句(语句序列,表示一系列工作)括起来称为复合语句,又称为“语句块”。一般情况凡是允

15、许出现语句的地方都允许使用复合语句。在程序结构上复合语句被看作一个整体的语句,但是内部可能完成了一系列工作。请注意:C语言允许一行写几个语句,也允许一个语句拆开写在几行上,书写格式无固定要求。一般将彼此关联的、或表示一个整体的一组较短的语句写在一行上。例如t=a;a=b;b=t;在复合语句中,不仅可以有执行语句,也可以有定义部分,定义本复合语句中的局部变量。3.3复合语句和空语句3.3.1复合语句只有一个分号的语句,它什么也不做(表示这里可以有一个语句,但是目前不需要做任何工作)。程序中有时需要加一个空语句来表示存在一条语句,但随意加分号也会导致逻辑上的错误,而且这种错误十分隐蔽,编译器也不会

16、提示逻辑错误,初学者一定要小心,需要慎用。3.3复合语句和空语句3.3.2空语句 (1)空循环100次,可能表示一个延时,也可能表示目前还不必在循环体中做什么事情。 for(i=0;i100;i+); /* 循环结构要求循环体,但目前什么工作都不要做。;表示循环体 */ (2)如果条件满足什么都不做,否则完成某些工作。(;表示if块,什么都不做) if() ; else . 3.3复合语句和空语句3.3.2空语句示例3.4数据的输入与输出从输入设备(如键盘、磁盘、扫描仪等)向计算机输入数据称为“输入”。输入概念从计算机向外部输出设备(如显示器、打印机、磁盘等)输出数据称为“输出” 。输出概念C

17、语言本身不提供输入/输出语句,输入输出操作是由函数来实现的。C语言的标准函数库中提供许多用于实现输入/输出操作的库函数。说明3.4数据的输入与输出使用库函数时,只要在程序开始的位置上加上如下编译预处理命令即可:#include或#include”stdio.h”它的作用是:将输入/输出函数的头文件stdio.h包含到用户源文件中。其中,h为head的缩写,stdio.h是standard input & output的缩写。考虑到printf和scanf函数使用频繁,系统允许在使用这两个函数时可不用加#include命令。说明3.4数据的输入与输出3.4.1字符的输入与输出1.字符输出函数格式

18、:putchar(字符型表达式);功能:向输出设备(显示器)输出一个字符(可以是可显示的字符,也可以是控制字符或其它转义字符)。例如:putchar(y); /*输出字母y */putchar(n); /*输出一个换行符*/putchar(015); /*输出回车,不换行,使输出的当前位置移到本行的开头 */putchar(); /*输出单撇号字符 */3.4数据的输入与输出3.4.1字符的输入与输出2.字符输入函数格式:getchar();功能:从终端(键盘)输入一个字符,以回车键确认。函数的返回值就是输入的字符。注意: (1)键盘输入字符型常量不用单引号,输入字符后,按回车键。 (2)ge

19、tchar()只能接受一个字符,getchar函数得到的字符可以赋给一个字符变量或整型变量,也可以不给任何变量,作为表达式的一部分。例3.2: 从键盘输入一个大写字母,要求以小写字母输出。#includemain() char c1,c2; c1=getchar(); putchar(c1); putchar(n); c2=c1+32; putchar(c2); 3.4数据的输入与输出3.4.1字符的输入与输出2.字符输入函数格式1:printf(“字符串”);功能:直接输出字符串。格式2:printf(“格式控制”, 表达式1,表达式2,);功能:计算若干个任意类型表达式的值,按格式向输出设

20、备输出。例如:printf(“%d,%c,%d”,65,65,A+1);输出:65,A,663.4数据的输入与输出3.4.2格式输出函数1.格式(1)格式控制字符串 格式说明%格式字符; 普通说明原样输出的其他字符。(2)输出表列 表达式1,表达式2, 逗号间隔的表达式表,输出的是这些表达式的值。3.4数据的输入与输出3.4.2格式输出函数说明格式1:printf(“字符串”);功能:直接输出字符串。格式2:printf(“格式控制”, 表达式1,表达式2,);功能:计算若干个任意类型表达式的值,按格式向输出设备输出。例如:printf(“%d,%c,%d”,65,65,A+1);输出:65,

21、A,663.4数据的输入与输出3.4.2格式输出函数1.格式对不同类型的数据用不同的格式字符。常用的有以下几种字符: (1)d格式符,用来输出十进制整数。%d,按整数数据的实际长度输出。%md,m为指定输出的宽度。若m实际位数,则右对齐,左补空格。%md,m为指定输出的宽度。若m数据的实际位数,则左对齐,右补空格。%ld,输出长整型数据。3.4数据的输入与输出3.4.2格式输出函数2.格式字符 (2)o(字母o不是零)格式符,用来输出八进制整数。%o,将内存单元中的各位的值按八进制形式输出,输出的数值不带符号,即将符号位也一起作为八进制的一部分输出。例如有程序段:int a=1;printf(

22、%d,%o,a,a);输出为:1,177777对长整型数据可以用“%lo“格式输出,同样也可以指定宽度。3.4数据的输入与输出3.4.2格式输出函数2.格式字符 (3)x格式符,用来输出十六进制整数。%x,以十六进制数形式输出整数,同样不会出现负的十六进制数。例如有程序段:int a=1;printf(%d,%o,%x,a,a,a);输出为:1,177777,ffff同样可以用“%lx”输出长整型数,也可以指定输出的宽度。3.4数据的输入与输出3.4.2格式输出函数2.格式字符 (4)u格式符,用来输出无符号整数。%u,一个有符号整数也可以用%u格式输出;一个无符号数据也可以用%d格式输出。无

23、符号数据也可以用%o或%x格式输出。3.4数据的输入与输出3.4.2格式输出函数2.格式字符 (5)c格式符,用来输出一个字符。例如:char ch=a;printf(“%c”,ch);一个整数,只要它的值在0255之间,也可以用字符形式输出。在输出前,系统会将该整数作为ASCII码转换为相应的字符;反之,一个字符数据也可以用整数输出。3.4数据的输入与输出3.4.2格式输出函数2.格式字符 (6)s格式符,用来输出一个字符串。%s例如:printf(“%s”,”Hello”);%ms,输出的字符串占m列。若m实际个数,左补空格。% ms,输出的字符串占m列。若m实际个数,右补空格。%m.ns

24、,输出占m列,但只取字符串左边n个字符,m实际个数,左补空格。%m.ns,取字符串左边n个字符,m实际个数,右补空格。3.4数据的输入与输出3.4.2格式输出函数2.格式字符 (7)f格式符,用来输出实数(float,double),以小数形式输出。%f,不指定字段的宽度,由系统自动设定,整数部分全部如数输出,并输出6位小数。单精度的有效位数一般为7位。例如有程序段:float x,y;x=111111.111;y=222222.222;printf(%f,x+y);输出结果为:333333.3281253.4数据的输入与输出3.4.2格式输出函数2.格式字符 (7)f格式符,用来输出实数(f

25、loat,double),以小数形式输出。%m.nf,指定输出的数据共占m列,其中n位小数。若m实际位数,左补空格。例如有程序段:float x=123.456;printf(%f,%10.2f,%.3f,%.0f,x,x,x,x);输出结果为:123.456001, 123.46,123.456,123%m.nf,指定输出的数据共占m列,其中n位小数。若m实际位数,右补空格。3.4数据的输入与输出3.4.2格式输出函数2.格式字符 (8)e格式符,以指数形式输出实数(float,double)。%e,不指定输出数据的宽度和小数位数。有的编译系统自动指定给出6位小数,指数部分占5位(e+005

26、)。数值按规范化指数形式输出,小数点前必须有且只有一位非零数字,所以数据共占13位。%m.ne与%-m.ne和“-”含义与前相同。 (9)g格式符,用来输出实数,它根据数据的大小,自动选f格式或e格式,且不输出无意义的零。3.4数据的输入与输出3.4.2格式输出函数2.格式字符 (1)printf的输出格式为自由格式,是否在两个数之间有逗号、空格或回车,完全取决于格式控制,如果不注意,很容易造成数字连在一起,使得结果没有意义。例如:printf(”%d%dn,x,y”);若x=123,y=345,则输出123345。3.4数据的输入与输出3.4.2格式输出函数3.使用printf函数的几点说明

27、 (2)格式控制符必须含有与输出项一一对应的输出格式说明,类型必须匹配。若格式说明与输出项类型不一一对应且匹配,则不能正确输出,而且编译时不会报错。若格式说明个数少于输出项个数,则多余的输出项不予输出;若格式说明个数多于输出项个数,则将输出一些毫无意义的数字乱码。 (3)除了X,E,G外,其它格式字符必须用小写字母。如%d不能写成%D。3.4数据的输入与输出3.4.2格式输出函数3.使用printf函数的几点说明 (4)在格式控制中,除了前面要求的输出格式,还可以包含任意的合法字符,这些字符输出时将“原样照印”。还可以在“格式控制”字符串中包含转义字符,如“n”。例如:printf(“a=%d

28、,b=%dn”,a,b); (5)如果要输出%符号,可以在格式控制中用%表示,输出一个%。3.4数据的输入与输出3.4.2格式输出函数3.使用printf函数的几点说明 (6)所有函数的参数处理顺序都是从右至左的,输出时仍按各参数原有次序显示在屏幕上。例如,有如下程序段:int a=3;printf(%d,%dn,a,+a);显示结果为:4,4(而不是3,4)。3.4数据的输入与输出3.4.2格式输出函数3.使用printf函数的几点说明例3.4:printf(“%5dn”,42); 42printf(“%12fn”,123.54); 123.540000printf(“%13en”,123.

29、54); 1.23540e+02例3.5:printf(“%8.3fn”,123.55); 123.550printf(“%8.1fn”,123.55); 123.6printf(“%8.0fn”,123.55); 1243.4数据的输入与输出3.4.2格式输出函数3.使用printf函数的几点说明3.4数据的输入与输出3.4.3格式输入函数1.格式 scanf( “格式控制”,地址表列) ; 功能:按格式控制将输入设备的数据存入各变量。 (1)“格式控制”同格式输出 格式说明%格式字符 普通说明原样输入的其他字符(2)地址表列是若干地址组成的表列 &变量1,&变量2,&变量n(存储单元的地址

30、)3.4数据的输入与输出3.4.3格式输入函数 %c:输入一个字符,回车结束 %d(ld):输入十进制整型数int或long %f(lf):输入float或double %e(le):输入指数形式的float或double %s:输入字符串,空白字符结束2.格式字符3.4数据的输入与输出3.4.3格式输入函数 (1)scanf函数中“格式控制”后面应当是变量地址,而不应是变量名。若仅仅给出变量名会出错,但不报错,只给出警告。例如:scanf(“%d,%d”,a,b);不合法。4.使用scanf函数应当注意的问题3.4数据的输入与输出3.4.3格式输入函数 (2)格式控制符必须含有与输入项一一对

31、应的格式说明符,类型必须匹配;若格式说明与输入项类型不一一对应匹配,则不能正确输入,而且编译时不会报错。若格式说明个数少于输入项个数,scanf函数结束输入,则多余的输入项将无法得到正确的输入值;若格式说明个数多于输出项个数,scanf函数也结束输入,多余的数据作废,不会作为下一个输入语句的数据。4.使用scanf函数应当注意的问题3.4数据的输入与输出3.4.3格式输入函数 (3)如果在“格式控制”字符串中除格式说明以外还有其它字符,则在输入数据时在对应位置应当输入与这些字符相同的字符。建议不要使用其它的字符。例3.6:scanf(“%d,%d,%d”,&a,&b,&c);应当输入3,4,5

32、;不能输入3 4 5例3.7:scanf(“%d:%d:%d”,&h,&m,&s);应当输入12:23:36例3.8:scanf(“x,y,z=%d%d%d”,&x,&y,&z);输入:x,y,z=10 20 304.使用scanf函数应当注意的问题3.4数据的输入与输出3.4.3格式输入函数 (4)在用“%c”格式输入字符时,空格字符和转义字符都作为有效字符输入。因为空格也是一个字符,所以不要用空格作为两个字符的间隔。4.使用scanf函数应当注意的问题3.4数据的输入与输出3.4.3格式输入函数 (5)在输入数据时,遇到下面情况认为该数据结束。遇到空格,或按“回车”或“跳格”(tab)键。

33、int a,b,c;scanf(“%d%d%d”,&a,&b,&c);输入:12 34 (tab)567后,a=12,b=34,c=567。按指定的宽度结束。遇到非法的输入。4.使用scanf函数应当注意的问题3.4数据的输入与输出3.4.3格式输入函数 (6)在VC6.0环境下,要输入double型数据,格式控制符必须用%lf(或%le),否则数据不能正确输入。 (7)在scanf函数的格式字符前可以加入一个正整数指定输入数据所占的宽度,但不可以对实数指定小数位的宽度。如scanf(%5.2f, &a);是非法的。4.使用scanf函数应当注意的问题一个问题的程序设计一定要先把处理过程的思路理清,养成动脑习惯。建议简单的问题先在练习本上写出来,然后上机调试。技能训练本模块介绍了结构化程序设计的三种基本结构,以及C语言实现输入输出操作的函数。C语言的格式输入输出的规定比较繁琐,用的不对就不会得到预期的结果,而输入输出又是最基本的操作,不少读者由于掌握不好浪费大

温馨提示

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

评论

0/150

提交评论