好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

C语言程序设计04章顺序结构程序设计.ppt

34页
  • 卖家[上传人]:hs****ma
  • 文档编号:569733648
  • 上传时间:2024-07-30
  • 文档格式:PPT
  • 文档大小:822.50KB
  • / 34 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 1 1页页第四章 顺序结构程序设计第四章 顺序结构程序设计§§4.1 4.1 C C 语句概述语句概述C C程序结构如下图所示:程序结构如下图所示:C程序程序源程序文件源程序文件1源程序文件源程序文件2……源程序文件源程序文件n预处理命令预处理命令全局变量声明全局变量声明函数函数1函数函数n……函数首部函数首部函数体函数体局部变量声明局部变量声明执行语句执行语句 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 2 2页页C语句可以分为以下语句可以分为以下5类:类:1、、 控制语句控制语句,完成一定的控制功能。

      完成一定的控制功能C 只有只有9种控制语句种控制语句:: 1) if () ~ else ~ (条件语句条件语句) 2) for () ~ (循环语句循环语句) 3) while () ~ (循环语句循环语句) 4) do ~ while () (循环语句循环语句) 5) continue (结束本次循环语句结束本次循环语句) 6) break (中止执行中止执行switch或循环语句或循环语句) 7) switch (多分支选择语句多分支选择语句) 8) goto (转向语句转向语句) 9) return (从函数返回语句从函数返回语句) 上述句子中上述句子中()()表示一个条件,表示一个条件, ~ 表示内嵌的语句,例如:表示内嵌的语句,例如: if(x>y) z=x; else z=y; LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 3 3页页2、函数调用语句。

      函数调用语句由一次函数调用加一个分号构成一个由一次函数调用加一个分号构成一个语句例如:语句例如:printf(“This is a C statement.”);3、、表达式语句表达式语句由一个表达式构成一个语句例如:由一个表达式构成一个语句例如: a=a+3; 注意:注意:a=a+3是表达式不是语句是表达式不是语句4、空语句即只有一个分号的语句即只有一个分号的语句 通常用来作转向点或循环语句中的循环体通常用来作转向点或循环语句中的循环体5、复合语句,又称为、复合语句,又称为“分程序分程序”,即用,即用{ }把一些语句括把一些语句括起来形成一个部分起来形成一个部分例:例:{ z=x+y; t=z/100; printf(“%f”,,t); } LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 4 4页页§4.2 §4.2 赋值语句赋值语句赋值表达式赋值表达式加上分号构成加上分号构成赋值语句赋值语句。

      如:如:a = b ;a = b ;有关赋值表达式的内容我们在前面已经详细讨论过了,有关赋值表达式的内容我们在前面已经详细讨论过了,在此就不再累述在此就不再累述 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 6 6页页§4.3 §4.3 数据输入输出的概念数据输入输出的概念 及在及在C C语言中的实现语言中的实现 C语语言言本本身身不不提提供供输输入入输输出出语语句句,,输输入入输输出出操操作作是是由由相相应应的的函函数数来来实实现现的的C语语言言函函数数库库中中有有一一批批“标标准准输输入入输输出出函函数数”,,它它是是以以标标准准的的输输入入输输出出设设备备为为输输入入输输出出对对象象的的其其中中有有::putchar() ,,getchar(),,printf(),,scanf(),,puts(),,gets()。

      与与标标准准输输入入输输出出库库函函数数相相关关的的信信息息,,被被放放在在了了系系统统的的““stdio.hstdio.h””文文件件中中主主文文件件名名stdiostdio( (standard standard input input & & output)output),,扩扩展展名名h h( (head)head)由由于于这这类类文文件件都都是是通通过过预预编编译译命命令令““# #includeinclude”” 被放在程序的开头,故称被放在程序的开头,故称 ““头文件头文件””例如:例如:# #include “include “stdio.hstdio.h”” /* /* 或写为或写为 #include <#include > */*/ main() main() { { …… …… } } LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 8 8页页§4.4 §4.4 字符数据的输入输出字符数据的输入输出4.4.14.4.1 putchar函数函数( (字符输出函数字符输出函数) )格式:格式:putchar(c);作用:向终端作用:向终端(即系统隐含指定的输出设备,即系统隐含指定的输出设备, 如显示器,打如显示器,打印机印机)输出输出一个字符一个字符。

      c可以是可以是字符型或整型变量字符型或整型变量,也,也可以是可以是字符型或整型常量字符型或整型常量(包括(包括转义字符常量转义字符常量)例例4.1:输出单个字符:输出单个字符#includemain() {char a,b,c; a=‘B’;b=‘O’;c=‘Y’; putchar(a); putchar(b); putchar(c); } 结果为:结果为:BOY LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 9 9页页4.4.2 4.4.2 getchargetchar函数函数( (字符输入函数字符输入函数) )格式:格式:getchar( );作用:从终端作用:从终端(即系统隐含指定的输入设备,如键盘即系统隐含指定的输入设备,如键盘)输入输入一个字符一个字符。

      例例4.2:输入单个字符:输入单个字符 #include main() { char c; c=gechar(); putchar(c); } 结果为输出一个字符,屏幕上马上看到输入的字符结果为输出一个字符,屏幕上马上看到输入的字符 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 1010页页#include “stdio.h”main ( ){ printf ( “%c” , getchar( ) ) ; }#include “stdio.h”main ( ){ putchar ( getchar( ) ) ; } 或或例例4.2 可以改写成:可以改写成: LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 1111页页说明:说明:1. getchar()函数只能接收一个字符。

      该字符可以赋给一个函数只能接收一个字符该字符可以赋给一个char 型变量或型变量或int 型变量,也可不赋给任何变量型变量,也可不赋给任何变量2.执行执行getchar()时,虽然是读入一个字符,但并不是指当用户时,虽然是读入一个字符,但并不是指当用户从键盘按下一个字符时,该字符就立即被读入并送给一个字从键盘按下一个字符时,该字符就立即被读入并送给一个字符变量而是先将输入的字符送到符变量而是先将输入的字符送到键盘输入缓冲区键盘输入缓冲区,当用户,当用户按下按下回车键回车键后,系统才调用后,系统才调用getchar函数从输入缓冲区中读函数从输入缓冲区中读取一个字符赋给变量取一个字符赋给变量 例如:例如: 对于例对于例4.24.2题,如果在键盘上一次性输入的不只是一个字符,题,如果在键盘上一次性输入的不只是一个字符,而是一串字符,比如为:而是一串字符,比如为:abcd结果变量结果变量c c的值仍为的值仍为a a LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 1212页页补充:补充:(演示演示P072.c)但对于下面的程序,则要小心:但对于下面的程序,则要小心:#include main() { char c1, c2, c3 ; c1=getchar(); c2=getchar(); putchar(c1); putchar(c2); c3=getchar(); putchar(c3); }那那么么,,结结果果c1c1的的值值为为a,,c2c2的的值值为为b,,c3c3的的值值为为c,,而而且且在在用用户户第第一一次次输输入入这这串串字字符符以以后后,,系系统统不不会会再再等等待待数数据据的的输输入入,,因为在输入缓冲区中的数据已经足够了。

      因为在输入缓冲区中的数据已经足够了 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 1313页页§4.5 §4.5 格式输入与输出格式输入与输出4.5.1 4.5.1 printfprintf函数函数( (格式输出函数格式输出函数) )1. 一般格式:一般格式:printf(格式控制串,输出表列)格式控制串,输出表列) 例如:例如:printf(“a=%d, b=%c”,i,c) 括弧内包括两部分:括弧内包括两部分: 1) “格式控制串格式控制串”:用用双引号括起来双引号括起来的字符串,它包括:的字符串,它包括: ●格式说明:格式说明:由由“%”和和格式字符格式字符组成,如成,如%d,,%f 等,作用是将等,作用是将输出的数据出的数据转换为指定指定 的格式的格式输出出。

      ●普通字符:普通字符:即即原原样输出字符出字符 2) “输出表列出表列”:是需要是需要输出的一些出的一些数据数据,可以是,可以是表达式表达式 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 1414页页例:例: printf(“a=%d , b=%c”, i, c)格式说明普通字符输出表列2. 格式字符格式字符 常用的格式字符有:常用的格式字符有: 1) d格式字符:格式字符:用来输出用来输出十进制基本整数十进制基本整数,常用方法有:,常用方法有: ①①%d 按整型数据的按整型数据的实际长度输出实际长度输出;; ②②%md m为指定的输出字段的宽度如果数据的位数为指定的输出字段的宽度。

      如果数据的位数小小于于m,,则则左端补以空格左端补以空格;若;若大于大于m,,则按则按实际位数输出实际位数输出 ③③%-md 表示在位数小于表示在位数小于m的情况下,的情况下,右端补以空格右端补以空格 例:例:int a=123, b=12345; printf(“%4d,%-4d,%4d”,a,a,b); 则输出:则输出: 123,123  ,12345 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 1515页页 ④④%ld 输出长整型数据输出长整型数据 例:例: long a=135790; printf(“%ld”,,a); 如如果果用用%d输输出出,,就就会会发发生生错错误误,,因因为为整整型型数数据据的的范范围围为为-32768~~32767 。

      Long型数据型数据应采用应采用%ld格式输出格式输出2) O(英英文文字字母母)格格式式符符::将将内内存存单单元元中中各各位位的的值值(0或或1)按按8进进制制形形式式输输出出整整数数如如果果是是有有符符号号数数,,则则将将符符号号位位也也一一起起作作为为八八进进制制数数的的一一部部分分输输出出这这种种输输出出格格式式反反映映了了内内存存单单元中的实际存放情况元中的实际存放情况 例:例:int a=-1; printf(“%d,%0”,a,a); 结果为:结果为:-1,1777771111111111111111 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 1616页页3) X格式符:格式符:与与O格式相似,不同在于以格式相似,不同在于以十六进制十六进制形式输出整数。

      形式输出整数 例:例:int a=-1; printf(“%x,%O,%d”,a,a,a);; 输出结果:输出结果: ffff , 177777 , -14) u格式符:格式符:用来输出用来输出unsigned 型型数据,以数据,以十进制十进制形式输出形式输出说明:int 型也可以用%u输出,unsigned 型也可以用%d、%O或%x进行输出,相互转换的规则同3.9节5) C格式符:格式符:用来输出一个字符用来输出一个字符 例:例:char c=‘a’; printf(“%c”,c); 输出结果:输出结果:a注意:这两个注意:这两个C是完是完全不同的全不同的 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 1717页页6) s格式符:格式符:用来输出一个字符串。

      有几种用法:用来输出一个字符串有几种用法: ①① %s 例如:例如: printf(“%s”,”CHINA”);; 输出:输出:CHINA 字符串字符串(不包括双引号不包括双引号) ②② %ms 输出的字符串占输出的字符串占m列,列, 如字符串本身长度如字符串本身长度 :: 大于大于m,,则则突破突破m的限制,将字符串全部输出;的限制,将字符串全部输出; 小于小于m,,则则左补空格左补空格 ③③ %-ms 若串长小于若串长小于m,,则在则在m列范围内,字符串列范围内,字符串右补空格右补空格;; ④④ %m.ns 输出占输出占m列,但列,但只取只取字符串字符串左端左端n个字符个字符 这这n个字符个字符输输出在出在m列列的的右侧右侧,,左补左补空格空格;; ⑤⑤ %-m.ns同上,只是这同上,只是这n个字符个字符输出在输出在m列的列的左侧左侧,,右补右补空格空格 说明:在说明:在④④和和⑤⑤项中,当项中,当n>m时时,,m会自动会自动取取n值值,保证,保证n个字符个字符正常输出。

      正常输出 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 1818页页例例4.5 字符串的输出字符串的输出main(){printf(“%3s,%7.2s,%.4s,%-5.3s\n”, ”CHINA”,”CHINA”,”CHINA”,”CHINA”);}输出的结果为:输出的结果为:CHINA, ,︺︺ ︺︺ ︺︺ ︺︺ ︺︺CH,CHIN,CHI ︺︺ ︺︺7) f格式符:用来输出实数(包括单、双精度),以小数格式符:用来输出实数(包括单、双精度),以小数形式输出形式输出 ①① %f 不指定字段宽度,由系统自动指定,使不指定字段宽度,由系统自动指定,使整数部整数部分全部输出分全部输出,另外再输出,另外再输出6位小数位小数。

      注意1:所输出的单精度实数的有效位数一般只有7位 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 1919页页例例4.6 输出实数时的有效位数输出实数时的有效位数main(){ float x,y; x=111111.111; y=222222.222; printf(“%f”,x+y);}运行结果:运行结果:333333.328125 显然,前面显然,前面7位数字为正确的有效的数字,而后面的位数字为正确的有效的数字,而后面的5位为不准确的位为不准确的注意注意2:双精度实数也可用:双精度实数也可用%f格式输出,它的格式输出,它的有效位数有效位数一一般为般为16位位,,小数部分仍为小数部分仍为6位位 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 2020页页 ②② %m.nf 指定输出的数据共占指定输出的数据共占m列,其中有列,其中有n位小数。

      位小数如果数值长度小于如果数值长度小于m,,则则左端补空格左端补空格 ③③ %-m.nf 同上,只是当数值长度小于同上,只是当数值长度小于m时,则时,则右端右端补空格补空格例例4.8 输出实数时指定位数输出实数时指定位数 main() { float f=123.456; printf(“%f︺︺︺︺%10f︺︺︺︺%10.2f︺︺︺︺%.2f︺︺︺︺ %-10.2f\n”, f, f, f, f, f); }运行运行结果:果:123.456001︺︺︺︺123.456001︺︺︺︺︺︺︺︺︺︺︺︺123.46︺︺︺︺123.46︺︺︺︺123.46︺︺︺︺︺︺︺︺其中其中︺︺ 表示由表示由“格式控制格式控制”串中原样输出的空格串中原样输出的空格注意:在指定的m列宽中,小数点也占1 位 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 2121页页8))e格式符:格式符:以指数形式输出实数。

      以指数形式输出实数注意:这部分P77有误)①① %e 不不指指定定输输出出数数据据所所占占的的宽宽度度和和小小数数的的位位数数,,由由Turbo C系系统统自自动动给给定定::1位位整整数数,,1个个小小数数点点,,5位位小小数数,,指指数数部部分分4位位((其其中中“e”占占1位位,,指指数数符符号号占占1位位,,指指数数占占2位位)),,共共计计宽宽度度11列列 数值按规范化指数形式数值按规范化指数形式(即小数点前有且只有即小数点前有且只有1位非零数字位非零数字)输出例如例如::printf(“%e”,123.456); 输出:输出:1.23456e+02②② %m.ne和和%-m.ne 参参见见第第7))项项,,但但此此处处的的n 指指拟拟输输出出数数据据的的小小数部分占数部分占n-1列(或者说指拟输出数据的列(或者说指拟输出数据的尾数占尾数占n 列列)例如:例如:float f=123.456; printf(“%10e︺︺︺︺%10.2e”,f, f);输出:输出:1.23456e+02︺︺︺︺︺︺︺︺︺︺1.2e+02突破10个字符的限定连同左边3个空格共10个字符9))g格式符:格式符:用来输出实数,它根据数值的大小,自动选用来输出实数,它根据数值的大小,自动选f格式或格式或e格格式之一式之一(选择输出时占宽度较小的一种)(选择输出时占宽度较小的一种),,且不输出无意义的零。

      且不输出无意义的零 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 2222页页Printf函数使用的注意事项:函数使用的注意事项:※ 除了除了X、、E、、G外,其他格式字符必须用小写字母;外,其他格式字符必须用小写字母;※ 一一个个正正确确的的格格式式说说明明总总是是以以“%”开开头头,,以以相相应应的的控控制制字字符符结结束束,,中间可以插入附加格式字符(也称修饰符)中间可以插入附加格式字符(也称修饰符)※ 格格式式控控制制串串中中的的“%”符符号号总总是是要要和和它它后后面面紧紧跟跟的的字字符符匹匹配配,,如如果果后后面面是是d、、o、、x、、u、、c、、s、、f、、e、、g等等字字符符之之一一,,则则匹匹配配为为相相应应的的格格式式控控制制字字符符;; 如如果果后后面面又又是是一一个个”%”符符号号,,则则表表示示要要输输出出一一个个”%”字字符符; 如如果果后后面面是是一一个个其其他他的的字字符符,,则则匹匹配配错错误误,,后面的字符全部原样输出。

      后面的字符全部原样输出例如:例如:printf(“%%%f”,1.0/3);输出:输出: %0.333333例如:例如:printf(“%%%,%f”,1.0/3);输出:输出:%%,%f※ printf的返回值是所输出字符的个数的返回值是所输出字符的个数例如:例如:int n=0; n=printf(“n=%d”,n); 最后:最后:n的值为的值为3%和后面的逗号匹配错误 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 2323页页4.5.2 4.5.2 scanfscanf函数(格式输入函数)函数(格式输入函数)1.1.一般形式一般形式 Scanf (格式控制,地址表列)格式控制,地址表列)说明:说明:““格式控制格式控制” ” 的含义同的含义同printfprintf函数;函数;““地址表列地址表列” ” 是由若干个是由若干个地址地址组成的表列,可以是组成的表列,可以是变量的地址,或字符串的首地址,或数组元素的地变量的地址,或字符串的首地址,或数组元素的地址。

      址例例4.9 用用scanf函数输入数据函数输入数据 main() { int a,b,c; Scanf(“%d%d%d”,&a,&b,&c); printf(“%d,%d,%d\n”,a,b,c); } LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 2424页页运行时按以下方式输入运行时按以下方式输入a、、b、、c的值:的值:3 ︺︺4 ︺︺5 ↙ ↙ (输入入a、、b、、c的的值)3,,4,,5 (输出出a、、b、、c的的值)程序运行程序运行过程:程:1)按照)按照a、、b、、c在内存的地址将在内存的地址将a、、b、、c的的值存存进去;去;2)然后再按照)然后再按照a、、b、、c在内存的地址将在内存的地址将a、、b、、c的的值取出来;取出来;acb354Scanf(“%d%d%d”,&a,&b,&c);…3…5…4printf(“%d,%d,%d\n”,a,b,c);354 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 2525页页在此例题中应注意:在此例题中应注意:1)本例中)本例中“%d%d%d”表示按十进制整数形式输入数据。

      表示按十进制整数形式输入数据2)输入)输入数值型数据数值型数据时,在两个数据之间以一个或多个时,在两个数据之间以一个或多个空格空格间隔,也可以使用间隔,也可以使用回车键回车键、、跳格键跳格键tab但是不能使用但是不能使用逗号作为分隔符逗号作为分隔符 合法输入有:合法输入有: 1))3︺︺4︺︺5 ↙ ↙ 2))3︺︺4︺︺︺︺︺︺︺︺5 ↙ ↙ 3))3↙ ↙ 4︺︺︺︺5 ↙ ↙ 4))3(按(按tab键)键)4︺︺︺︺5↙ ↙ LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 2626页页2.2.格式说明格式说明 和和printf函数中的格式说明相似,以函数中的格式说明相似,以%开始,以一个格式字开始,以一个格式字符结束,中间可以插入附加的字符。

      具体说明可参见符结束,中间可以插入附加的字符具体说明可参见P80表表4.3和和4.4说明几点:说明几点: 1))对对unsigned型变量所需的数据,可以用型变量所需的数据,可以用%u,,%d或或%o,,%x格式输入;格式输入; 2))可以指定输入数据所占列数,系统会自动依次截取所需可以指定输入数据所占列数,系统会自动依次截取所需数据,如:数据,如:scanf(“%3d%3d”,&a, &b); 输入:输入:123456 ↙ ↙则变量则变量a的值为的值为123,,b的值为的值为456 3))对对double型和型和long型变量所需的数据,型变量所需的数据,必须必须分别使用分别使用%lf和和%ld来录入若使用来录入若使用%f和和%d,,则会出现由于录入格式不匹配则会出现由于录入格式不匹配造成的数据错误,但变量类型本身却是匹配的造成的数据错误,但变量类型本身却是匹配的补充)(补充)比如:比如:double g; scanf(“%f”,&g);输入:输入:0.12345678999 ↙ ↙然后通过变量监视发现然后通过变量监视发现g的值为的值为4.65905335771326e231 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 2727页页5))如果在如果在“格式控制格式控制”字符串中除了字符串中除了格式说明字符格式说明字符以外还有以外还有其它字符,则在输入数据时应其它字符,则在输入数据时应原样输入原样输入这些字符。

      这些字符补充)(补充)如果输入格式为如果输入格式为“%d,%d,%d”,,则录入数据时要用逗号作为分隔符则录入数据时要用逗号作为分隔符 正确输入应为:正确输入应为:3,4,5 ↙ ↙如果输入格式为如果输入格式为“%d:%d:%d”,,则录入数据时要用冒号作为分隔符则录入数据时要用冒号作为分隔符 正确输入应为:正确输入应为:3:4:5 ↙ ↙如果此时还用逗号或空格作为分隔符,系统不会报错,但运如果此时还用逗号或空格作为分隔符,系统不会报错,但运行结果是错误的行结果是错误的 (演示演示P081.c)总之,总之,scanfscanf()()在输入数据时,要遵守与在输入数据时,要遵守与格式控制串格式控制串一一对一一对应的原则应的原则,这和,这和printfprintf()()的使用相似,只是后者用于输出数的使用相似,只是后者用于输出数据罢了4))输入数据时不能规定精度,例如:输入数据时不能规定精度,例如:scanf(“%7.2f”,&a); 是是不合法不合法的这点与的这点与printf不同,需要注意不同,需要注意 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 2828页页6))如果如果%后有一个后有一个“*”附加说明符,表示跳过它指定的列数,附加说明符,表示跳过它指定的列数,故故*又被称为又被称为“抑制字符抑制字符”。

      例如:例如:scanf(“%2d ︺︺ %*3d ︺︺ %2d”,&a,&b);如果输入如下信息:如果输入如下信息:12︺︺345︺︺67 ↙ ↙结果:结果:a的值为的值为12 b的值为的值为67说明:说明: %*3d 表示读入表示读入3位整数但不赋值给任何变量位整数但不赋值给任何变量7) 可用可用“%s”格式来输入一个字符串,这将在格式来输入一个字符串,这将在7.3.5中讨论 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 2929页页8))在用在用“%C”格式输入字符时,格式输入字符时,空格字符空格字符和和“转义字符转义字符”都会被作为有效字符输入都会被作为有效字符输入请区别于数值型数据的录请区别于数值型数据的录入入) Char c1,c2,c3; Scanf(“%c%c%c”, &c1,&c2,&c3);如果输入:如果输入:a︺︺b︺︺c 则:则:c1为为‘a’,,c2为为‘︺︺’,,c3为为‘b’提问:若输入的是提问:若输入的是 a↙ ↙ bc↙ ↙ 则:则:c1,,c2,,c3的的ASCII码值分别为多少?码值分别为多少?则:则:c1的值为的值为97,,c2的值为的值为10,,c3的值为的值为98 。

      (演示(演示P082.c)) LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 3030页页9))在输入在输入数值型数值型数据时,若遇以下情况之一则认为该数据结束:数据时,若遇以下情况之一则认为该数据结束: 1、遇、遇空格空格,或,或“回车回车”,或,或“跳格跳格” (Tab)键;键; 2、按、按指定的宽度指定的宽度结束,如结束,如“%3d”,,只取只取3列;列; 3、遇到、遇到非法输入非法输入;; 例如:例如:char b,d,f; int a=5,e=5,g=5; float c; scanf("%d%c%f%c%d",&a,&b,&c,&d,&e); scanf("%c%d",&f,&g); 若输入:若输入:123p123o.26 ↙ ↙ 这是字母这是字母 ‘o’ !!在实际的调试过程中,我们不提倡像上面这样输入数据,甚至反对采在实际的调试过程中,我们不提倡像上面这样输入数据,甚至反对采用这种纷繁复杂、让人迷惑的输入方法。

      用这种纷繁复杂、让人迷惑的输入方法 结果:结果:a为为123, b为为‘p’, c为为123.0, d为为‘o’, e为为5, f为为‘.’,g为为26 ※ scanf的返回值是的返回值是已经成功录入的数据个数已经成功录入的数据个数例如:例如:int a,b,n; n=scanf(“%d,%d”,&a,&b); 若输入:若输入:23,456 则则n的值得到的值得到2;若输入:;若输入:23 456 则则n为为1 LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 3131页页§§ 4.6 4.6 顺序结构程序设计举例顺序结构程序设计举例例例4.10 输入三角形的三边长,求三角形的面积输入三角形的三边长,求三角形的面积设输入的三边长设输入的三边长a、、b、、c能构成三角形,根据三角形面积的公式:能构成三角形,根据三角形面积的公式:其中:其中:则程序为:则程序为:#include main(){ float a,b,c,s,area; scanf(“%f,%f,%f”,&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n”,a,b,c,s); printf(“area=%7.2f\n”,area);}Why? LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 3232页页例例4.12 求求 方程的根。

      方程的根a,b,c由键由键盘输入,假设盘输入,假设 一元二次方程式的根为:一元二次方程式的根为:为了程序的简洁性,可以设:为了程序的简洁性,可以设:这样:这样:因此,程序可写为:因此,程序可写为: LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 3333页页#include /* P084.c */main(){float a,b,c disc,x1,x2,p,q;Printf(“a=”); scanf(“%f”, &a);Printf(“b=”); scanf(“%f”, &b); Printf(“c=”); scanf(“%f”, &c); disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;printf(“\n\nx1=%5.2f\nx2=%5.2f\n”,x1,x2);}本程序存在两个缺陷:本程序存在两个缺陷:1、没有判断、没有判断a是否为是否为0,以及,以及b*b-4ac是否大于是否大于0,容错性不好;,容错性不好;2、没有求解虚根的功能。

      没有求解虚根的功能详细请见例详细请见例5.6 ((P101)) LanJiming@LanJiming@ copyright copyright Tuesday, July 30, 2024Tuesday, July 30, 2024 四川理工学院计算机科学系四川理工学院计算机科学系 《《C C语言程序设计语言程序设计》》 第第 3434页页第四章第四章 顺序结构程序设计顺序结构程序设计 小结小结§4.1 C语句概述语句概述 §4.2 赋值语句赋值语句§4.3 数据输入输出的概念数据输入输出的概念 §4.4 字符数据的输入输出字符数据的输入输出§4.5 格式输入与输出格式输入与输出 §4.6 顺序结构程序设计举例顺序结构程序设计举例 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.