c语言确认用户名和密码和程序,c语言 第3章顺序结构程序设计

c语言 第3章顺序结构程序设计

1 第三章 顺序结构程序设计 第3章 顺序结构程序设计 本章要求: 了解结构化程序的算法描述 掌握C语言中数据的输入/输出方法 顺序结构程序设计 本章重点: C程序中数据的输入/输出方法 顺序、选择、循环 (分支) 2 第三章 顺序结构程序设计 第3章 顺序结构程序设计 一、什么是算法一、什么是算法 算法是解决一个问题采取的方法和步骤的描述 。 1有穷性:算法须在执行有穷多个计算步骤后终止 2确定性:算法的每个步骤必须都是精确定义的、无 二义性的; 3有效性:算法中的每一个步骤必须有效地执行,并 能得到确定结果; 4输入:一个算法中可以没有输入,也可以有一个或 多个输入信息 5输出:一个算法应有一个或多个输出 算法的特性: 3 第三章 顺序结构程序设计 第3章 顺序结构程序设计 (一)自然语言与伪代码表示算法 自然语言就是指人们日常使用的语言,可以是汉语、英语 或其它语言。 伪代码是用介于自然语言和计算机语言之间的文字和符号 (包括数学符号)来描述算法。 二、算法的表示二、算法的表示 4 第三章 顺序结构程序设计 第3章 顺序结构程序设计 例的伪代码表示如下: Begin(算法开始) 输入 A,B,C IF AB 则 AMax 否则 BMax IF CMax 则 CMax Print Max End (算法结束) 例: 输入三个数,然后输 出其中最大的数。 算法可以写成: (1) 输入A,B,C。 (2) 若AB,则MAX A; 否则MAXB。 (3) 若CMAX,则MAX C。 (4) 输出MAX,MAX即为最大 数。 构化程序的算法描述: 5 第三章 顺序结构程序设计 第3章 顺序结构程序设计 1常用的流程符号 l 起止框:表示算法的开始和结束。 l 处理框:表示初始化或运算赋值等操作。 l 输入输出框:表示数据的输入输出操作。 l 判断框:表示根据一个条件成立与否,决定执 行两种不同操作中的其中一个。 l 流程线:表示流程的方向。 (二)用流程图表示算法 6 第三章 顺序结构程序设计 第3章 顺序结构程序设计 用流程图表示如下图所示: 例: 输入三个数,然后输出其中最大的数。 7 第三章 顺序结构程序设计 第3章 顺序结构程序设计 (三)用NS流程图表示算法 8 第三章 顺序结构程序设计 第3章 顺序结构程序设计 C语言中实现顺序结构的语句:赋值语句、变量声 明语句、符号常量声明语句等。 三、赋值语句三、赋值语句 赋值语句是由赋值表达式再加分号构成的表达式语句。 其一般形式为: 变量=表达式; 1赋值符“=”右边的表达式可以又是一个赋值表达式 因此,下述形式是正确的:变量=(变量=表达式); 其展开之后的一般形式为:变量=变量=表达式; 例如:a=b=c=d=e=5;按照赋值运算符的右结合性, 因此实际上等效于: e=5; d=e; c=d; b=c; a=b; 9 第三章 顺序结构程序设计 第3章 顺序结构程序设计 2.注意变量说明中给变量赋初值和赋值语句的区别。 给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其 它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。 3.在变量说明中,不允许连续给多个变量赋初值。 如下述说明是错误的:int a=b=c=5; 必须写为 int a=5,b=5,c=5; 而赋值语句允许连续赋值。 4.注意赋值表达式和赋值语句的区别。赋值表达式是一种表 达式,它可以出现在任何允许表达式出现的地方,而赋值语句则 不能。 下述语句是合法的:if(x=y+5)0) z=x; 下述语句是非法的:if(x=y+5;)0) z=x; 说明:右边的表达式可以是变量、常量、函数调用等表达式 。 10 第三章 顺序结构程序设计 第3章 顺序结构程序设计 5语句中的“=”称为赋值号,它不同于数学中的等号,如 A=A+1在数学中是不成立的,但在程序设计中表示取变量A单 元中的值,将其加1后,仍然放回到A变量的存储单元 。 6、赋值符号“=”左边一定只能是变量名,不能是常量、符号 常量、表达式。 例如:z=x+y; 是合法的。 下面的赋值语句都是错的: 5=x; /* 左边是常量 */ sin(x)=20; /* 左边是函数调用,即是表达式 */ 11 第三章 顺序结构程序设计 第3章 顺序结构程序设计 7赋值符号“=”两边的数据类型一般要求应一致。 如果两边的类型不同,则以左边变量或对象属性的数据类 型为基准,如果右边表达式结果的数据类型能够转换成左边变 量或对象属性的数据类型,则先强制转换后,赋值给左边的变 量。若都是数值型,但精度不同,强制转换成左边变量的数据 精度。 例如,有定义 int x; float y; x=3.5415926; /* 取其整数赋值给x,x的值为3 */ y=123; /* 将整数123转换实数123.0,赋值给y,执行 后,y的值是123.0 (小数点补六个0)*/ 12 第三章 顺序结构程序设计 第3章 顺序结构程序设计 数据输入/输出的概念 内 存 RAM 从键盘将数据输入 从数据文件读入 将数据输出到屏幕 将数据输出到文件 数据输入/输出是相对计算机内存 13 第三章 顺序结构程序设计 第3章 顺序结构程序设计 在语言中所有的数据输入输出都是由库函数完成的。 因此都是函数语句。在C语言中使用库函数时,要使用预编译 命令#include 将相关的头文件(*.h)包含到用户源文件中。 使用形式: #include “头文件” 或 #include 说明:1. 标准输入/输出头文件是:stdio.h 2. printf() 和 scanf()函数不需要头包含文件 3.常用的输入输出函数有: printf() scanf() putchar() getchar() 14 第三章 顺序结构程序设计 第3章 顺序结构程序设计 四、数四、数据格式输入据格式输入 scanfscanf()()函数函数 scanf()的功能:从键盘上输入数据,该输入数据按指定的输入 格式被赋给相应的输入项。 函数一般格式为: scanf(“控制字符串“,输入项地址列表); 控制字符串规定数据的输入格式,其内容由格式说明和普通 字符两部分组成。 输入项地址列表由一个或多个变量地址组成,各变量地址之 间用逗号“,”分隔。 scanf()中各变量要加地址操作符,表示如下: 15 第三章 顺序结构程序设计 第3章 顺序结构程序设计 控制字符串的两个组成部分:格式说明和普通字符。 1. 格式说明 格式说明规定输入项中的变量以何种类型的数据格式被输入, 形式是: % 各个格式字符及其意义见表3-3。 表3-3输入格式字符 格式字符意义举例输入形式 d,i输入一个十进制整数scanf(“%d“, scanf(“%2d%*3d%4d“, /*注意%*3d的作用*/ printf(“nx=%d,y=%d n“,x,y); 18 第三章 顺序结构程序设计 第3章 顺序结构程序设计 2.普通字符 普通字符包括空格、转义字符和可打印字符。 (1)空格 在有多个输入项时,一般用空格或回车作为分隔符,若以空格作分隔符, 则当输入项中包含字符类型时,可能产生非预期的结果, (2)可打印字符 例如:scanf(“%d%c“, 当输入为:1,2,q 即:a=1,b=2,ch=q 若输入为1 2 q 除a=1正确赋值外,对b与ch的赋值都不能正确赋 值。这些不打印字符应是输入数据分隔符,scanf在读入时自动去除 与可打印字符相同的字符。 19 第三章 顺序结构程序设计 第3章 顺序结构程序设计 使用scanf函数还必须注意以下几点: (1) scanf函数中没有精度控制 。 如: scanf(“%5.2f”, 是非法的。 (2) 在输入多个数值数据时,若格式控制串中没有非格式字 符作输入数据之间的间隔则可用空格或回车作间隔. (3)如果格式控制串中有非格式字符则输入时也要输入该非 格式字符。 例如: scanf(“%d,%d,%d“, 其中用非格式符“ , ”作间隔符,故输入时应为: 5,6,7 又如: scanf(“a=%d,b=%d,c=%d“, 则输入应为 a=5,b=6,c=7 20 第三章 顺序结构程序设计 第3章 顺序结构程序设计 五、五、 数据格式输出数据格式输出printfprintf()()函数函数 格式化输出函数printf()功能:按控制字符串规定的格式,向输 出设备输出各输出项 其基本格式为:printf(“控制字符串”,输出项列表) 输出项可以是常量、变量、表达式,其类型与个数必须与控制 字符串中格式字符的类型、个数一致、当有多个输出项时,各 项之间用逗号分隔。 控制字符串由格式说明和普通字符两部分组成。 21 第三章 顺序结构程序设计 第3章 顺序结构程序设计 1格式说明 一般格式为:% 格式字符规定了输出项的输出格式,常用格式字符见表3-2 格式字符意义举 例输出结果 d按十进制整数输出printf(“%d“,a)65 o按八进制整数输出printf(“%o“,a)101 x 或X按十六进制整数输出printf(“%x“,a)41 u按无符号整数输出printf(“%u“,a)65 c按字符型输出printf(“%c“,a)A s按字符串输出printf(“%s“,“abc“)abc f按浮点型小数输出printf(“%f“,x)3.141593 E(或e)按科学计数法输出printf(“%e“,x)3.141593e+00 g按e和f格式中较短的一 种输出 printf(“%g“,x)3.141593 表3-2输出格式字符 22 第三章 顺序结构程序设计 第3章 顺序结构程序设计 (1) 字段宽度修饰符 该修饰符用于确定数据输出的宽度、精度、小数位数、对齐方式 等,用于产生更规范整齐的输出,下表列出了字段宽度修饰符。 修饰符格式说明意义 m%md以宽度m输出整型数,不足m时, 左补空格 0m%0md 以宽度m输出整型数,不足m时, 左补零 m.n%m.nf以宽度m输出实型小数,小数位为n 位 字段宽度修饰符 23 第三章 顺序结构程序设计 第3章 顺序结构程序设计 例如: void main() int a=123; float x=12.345678; printf(“%5d, %5.2fn“,a,x); printf(“%2d, %2.1fn“,a,x); 程序的运行结果如下: 说明: 当指定宽度小于数据 的实际宽度时,对整 数,按该数的实际宽 度输出。 对浮点数,相应小数 位的数四舍五入。若 度宽小于等于浮点数 整数部分的宽度,则 该浮点数按实际位数 输出,但小数位数仍 遵守宽度修饰符给出 的值。 24 第三章 顺序结构程序设计 第3章 顺序结构程序设计 (2)对齐方式修饰符 一般的输出数据为右对齐格式,加“-”号,变为“左对齐”方 式。 例如:void main() int i=123; float a=12.34567; printf(“%6d%10.4fn“,i,a); printf(“%-6d%10.4fn“,i,a); printf(“%6d%-10.4fn“,i,a); 程序运行结果如图所示: 25 第三章 顺序结构程序设计 第3章 顺序结构程序设计 (3)l和h 可以与输出格式字符 d、f、u等连用,以 说明是用long型或 short型格式输出数 据,如: hd 短整型 lf 双精度型 ld 长整型 hu 无符号短整型 2普通字符 普通字符包括可打印字符和转义字符 。 v可打印字符是一些说明字符,这些 字符按原样显示在屏幕上 v转义字符是不可打印的字符,它们 其实是一些控制字符,控制产生特殊 的输出效果。常用的有“t”,“n” ,其中t为水平制表符,作用是跳到下 一个水平制表位, “n”为回车换行 符,遇到“n”,显示自动换到新的 一行。 26 第三章 顺序结构程序设计 第3章 顺序结构程序设计 例如: void main() int i=123; long n=456; float a=12.34567,y=20.5; printf(“%d=4dta=%7.4fntn=%ldn“,i,a,n); printf(“y=%5.2f%n“,y); 程序运行的输出结果: 27 第三章 顺序结构程序设计 第3章 顺序结构程序设计 【注意】 (1)输出项从右向左计算后,按格式说明的顺序、类型和要 求对应输出。格式说明和输出项的个数类型应相同,如不匹配 系统不能正确输出 格式说明的个数少于输出项个数,多余的输出项将不输 出; 格式说明的个数多于输出项个数,多余的格式说明将输 出随机的值。 整型数据按%f 输出或者实型数据按%d 输出,均出现输 出错误结果。 28 第三章 顺序结构程序设计 第3章 顺序结构程序设计 (2)格式字符除X(表示输出的十六进制数用大写字母输出 )、E(表示输出的指数e用大写字母E输出)、G(表示若选 用指数形式输出,则用大写字母E输出)外,必须是小写字 母。如%d不能写成%D。 (3)若想输出字符“%”,则在格式字符串中用连续两个% 表示。如:printf(“%f%”,1.0/4); 则输出: 0.250000% 【注意】 29 第三章 顺序结构程序设计 第3章 顺序结构程序设计 试编写求梯形面积的程序,数据由键盘输入。 分析:设梯形上底为A,下底为B,高为面职为,则S=(AB)*2 程序如下:void main() float a,b,h,s; printf(“please input a,b,h:“); scanf(“%f%f%f“, s=0.5*(a+b)*h; printf(“a=%6.3f b=%6.3f h=%6.3fn“,a,b,h); printf(“s=%8.4fn“,s); 30 第三章 顺序结构程序设计 第3章 顺序结构程序设计 六、字符数据非格式输入六、字符数据非格式输入/ /输出函数输出函数 1字符输入函数getchar() getchar()函数的格式: getchar(); getchar()函数的作用:从系统的输入设备键盘输入一个字符。 从功能角度来看,scanf()函数可以完全代替getchar()函数。 例:char c1;则c1=getchar(); 可使用等价语句: scanf(“%c“, 31 第三章 顺序结构程序设计 第3章 顺序结构程序设计 说明: (1)getchar()函数一次只能返回一个字符,即调用一次只能 输入一个字符。 (2)程序第一次执行getchar()函数时,系统暂停等待用户输 入,直到按回车键结束,如果用户输入了多个字符,则该函 数只取第一个字符,多余的字符(包括换行符n)存放在 键盘缓冲区中,如果程序再一次执行getchar()函数,则程序 就直接从键盘缓冲区读入,直到读完后,如果还有getchar() 函数才会暂停,再次等待用户输入。 32 第三章 顺序结构程序设计 第3章 顺序结构程序设计 2字符输出函数putchar( ) putchar()函数的格式: putchar(ch); 该函数的功能是向显示器终端输出一个字符。其中,ch可 以是一个字符变量或常量,也可以是一个转义字符。 说明: (1)putchar()函数只能用于单个字符的输出,且一次只能 输出一个字符。 (2)从功能角度printf()函数可以完全代替putchar()函数 ,其等价形式:printf(“%c“,ch)。 33 第三章 顺序结构程序设计 第3章 顺序结构程序设计 例输入一个字符,回显该字符并输出其ASCII码值。 #include void main() char ch1,ch2; ch1=getchar(); ch2=getchar(); putchar(ch1); putchar(ch2); printf(“%cn%c“,ch1,ch2); 程序运行后,若ch1、ch2分别 得到字符A、B,应输入AB,如果输入A,则实 际上ch1被赋值为字符A,ch2 被赋值为字符换行符n 34 第三章 顺序结构程序设计 第3章 顺序结构程序设计 【例3-16】 从键盘上输入一个英文小写字母,编程输出该 字母所对应的ASCII码和所对应的大写字母 【分析】在ASCII字符集中,大写字母AZ是连续的(ASCII值 从6590),小写字母az也是连续的(ASCII值从97122)。 因此每对字母的ASCII码值差是相同的,都是32,即a-A、 b-B、c-C、z-Z都是32。所以将小写字母的 ASCII码值减去32,则得到的是所对应的大写字母ASCII码值。 同理,将大写字母的ASCII码值加上32,则得到的是所对应的 小写字母ASCII码值。 35 第三章 顺序结构程序设计 第3章 顺序结构程序设计 上机内容:上机内容: 第2章课后习题 (其中读程序写运行结果题要上机验证 ) P44 例3-15,例3-17,例3-18, 例3-19 , 例3-20

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值