c语言(输入输出).ppt

上传人:xin****828 文档编号:19957000 上传时间:2021-01-18 格式:PPT 页数:46 大小:320.86KB
返回 下载 相关 举报
c语言(输入输出).ppt_第1页
第1页 / 共46页
c语言(输入输出).ppt_第2页
第2页 / 共46页
c语言(输入输出).ppt_第3页
第3页 / 共46页
点击查看更多>>
资源描述
第 6章 用户与计算机的交互 输入和输出 标准输入输出 格式化输入输出 字符输入输出 字符串输入输出 跟我上机 第 6章 用户与计算机的交互 输入和输出 标准输入输出 格式化输入输出 字符输入输出 字符串输入输出 跟我上机 第 6章 用户与计算机的交互 输入和输出 标准输入输出 格式化输入输出 字符输入输出 字符串输入输出 跟我上机 第 6章 用户与计算机的交互 输入和输出 标准输入输出 格式化输入输出 字符输入输出 字符串输入输出 跟我上机 第 6章 用户与计算机的交互 输入和输出 标准输入输出 格式化输入输出 字符输入输出 字符串输入输出 跟我上机 第 6章 用户与计算机的交互 输入和输出 标准输入输出 格式化输入输出 字符输入输出 字符串输入输出 跟我上机 用户与计算机的交互 输入和输出 输入 /输出是计算机最基本的行为,也是任 何语言必需的功能,起到了用户和计算机桥 梁的作用,那么,在 C语言的世界里,输入 和输出是怎么实现的?怎么样高速、高效的 进行输入和输出呢?我们就在这一章来进行 讨论吧! 6.1 标准输入输出 程序如何知道用户想要的内容,用户又如何 得知程序运算的结果呢?可以通过输入输出 来实现。我们先来看下面的程序运行结果。 6.1 标准输入输出 在命令行中,提示用户输入 1个整数,当用 户输入 100,并按 【 Enter】 键后,程序显 示 “ 您输入的整数是: 100”,这就是个简单 的输入输出的过程:程序提示 用户输入数 据 程序读取后输出,实现了用户和计算机 的交互。 6.1 标准输入输出 此程序的代码如下。 01 #include 02 int main(void) 03 04 int i; 05 printf(请输入 1个整数 :n); /*提示用户输入 */ 06 scanf(%d, /*读取输入数据 */ 07 printf(您输入的整数是: %dn,i); /*输出数据 */ 08 return 0; 09 以上程序是通过 printf()函数和 scanf()函数来实现输入输出的, 这些函数都包含在 C语言的库函数中。 6.1 标准输入输出 C语言本身并不提供输入输出语句,而是用一组库 函数来实现数据的输入和输出,由于不同的 C系统 提供不同的输入输出函数,而一些常用的函数是各 系统中共有的,称之为标准输入输出函数。 本章就来学习这些标准的输入输出函数,包括上面 程序所提到的格式化输入( printf)输出( scanf) 函数,以及字符输入( getchar)输出( putchar) 函数和字符串输入( gets)输出( puts)函数等。 6.2 格式化输入输出 6.2.1 格式化输出函数 printf() 6.2.2 格式控制字符 6.2.3 格式化输入函数 scanf() 6.2 格式化输入输出 格式化是指按照一定的格式,格式化输入输 出就是指按照一定的格式读取来自输入设备 的数据和向输出设备输出数据。符合格式化 输入输出的代表函数是 printf()函数和 scanf()函数。这两个函数是程序中用的最 多的输入输出函数,也是本章的重点。 6.2.1 格式化输出函数 printf() 在前面章节中我们用的最多的就是 print()函数,但代码中包含 的 %d、 %f和 %c有什么含义和区别呢?本节就来深入学习此 函数详细用法。 printf()函数,作用是将计算机中数据,按照特定的格式输出 到终端,使用户能从终端查看数据,它是输出数据的接口。使 用格式如下: printf(,); 例如: 01 int i=10,j=20; 02 printf(“欢迎来到 C语言的世界! n”); /*输出引号内的内容 并换行 */ 03 printf(“i=%d,j=%dn”,i,j); /*输出变量 i和 j的值并换行 */ 6.2.1 格式化输出函数 printf() 我们再来看以下代码。 01 printf(“Hello n”) 02 printf(a,A n); 03 printf(班级平均成绩为 :%fn,avg); 04 printf(First output i=%dn,i); 从这些语句中,我们可以很容易的看出第 1 行和第 2行没有参数,原样输出,第 3行和第 4行都用到了参数。 6.2.1 格式化输出函数 printf() 我们还可以把该函数的使用格式细分一下。 没有参数时,调用格式如下: printf(非格式字符串 ); 使用这种格式输出的是双引号内的原样内容,通常用于提示信 息的输出。 有参数时,调用格式如下: printf(“格式字符串 ” ,参数列表 ); 使用这种格式时,格式字符串内包含一个或多个格式控制字符。 格式控制字符以 “ “ 开头,紧跟其后的 d、 s、 f、 c等字符, 用以说明输出数据的类型。格式控制字符的个数与参数列表中 参数的个数相等,并且一一对应,输出时,用参数来代替对应 的格式控制字符。参数可以是变量,也可以是表达式等。 6.2.1 格式化输出函数 printf() 【 范例 6-1】 printf函数的使用。 01 #include 02 int main(void) 03 04 int num; 05 char r; 06 float f; 07 printf(请输入 1个整数 ,1个字符 ,1个浮点型的数据 :n); /*输出引号中的 内容并换行 */ 08 scanf(%d,%c,%f, /*输入数据,给 num,r,f分别赋值 */ 09 printf(输入的数据是: num=%d,r=%c,f=%f,num,r,f); /*输出变量的值 */ 10 printf(n); /*换行 */ 11 return 0; 12 此段代码定义了 3个变量,分别是 int、 char和 float类型,第 7行没有参数是原样输出引 号中的内容后换行,第 8行是输入数据,给 num, r和 f分别赋值,第 9行是输出变 量的值,用到了格式控制字符 %d、 %c和 %f, %d代表的是 int类型的格式, %c 代表的是 char类型的格式, %f代表的是 float类型的格式,与后面的参数类型一一 对应。第 10行的调用格式与第 7行的一样,但第 10行双括号内的是转义字符,所以 起到了换行的作用。 6.2.2 格式控制字符 在上面的程序中, 我们所使用的 %d、 %c和 %f就是格式 控制字符,除了这 些外还有很多,下 表所示就是 C语言 程序中常用的格式 控制字符。 格式控制字 符 含义 d 以十进制形式输出整数值 o 以八进制形式输出整数值 x 以十六进制形式输出整数值 u 以无符号数形式输出整数值 c 输出字符值 s 输出字符串 f 输出十进制浮点数 e 以科学计数法输出浮点数 g 等价于 %f或 %e,输出两者中占位较短的 6.2.2 格式控制字符 下面详细介绍这些格式控制字符的使用方法。 1. d格式控制字符 使用如下。 %d:以十进制形式输出整数。 %md:与 %d相比,用 m限制了数据的宽度,是指数据 的位数,当数据的位数小于 m时,以前面补空格的方式 输出,反之,如果位数大于 m,则按原数输出。 %ld:输出长整型的数据,其表示数据的位数比 %d多。 6.2.2 格式控制字符 【 范例 6-2】 格式控制字符 d的应用。 01 #include 02 int main(void) 03 04 int i=123456; /*初始化变量 */ 05 printf(%dn,i); /*按 %d格式输出数据 */ 06 printf(%5dn,i); /*按 %md格式输出数据 */ 07 printf(%7dn,i); /*按 %md格式输出数据 */ 08 return 0; 9 第 6、 7行中使用了 %md形式,其中第 6行的 m=5,数据位数 6m,输出原数据;第 7行中的 m=7,数据位数 6m,以前 面补空格的方式输出,所以在输出结果中第 3行的 123456前 多了一个空格。 6.2.2 格式控制字符 2. u格式控制字符 %u:以十进制形式输出无符号的整数。 %mu:与 %md类似,限制了数据的位数。 %lu:与 %ld类似,输出的数据是长整型,范 围较大。 6.2.2 格式控制字符 3. f格式控制字符 %f:以小数形式输出实数,整数部分全 部输出,小数部分为六位。 【 范例 6-3】 格式控制字符 f的应用。 6.2.2 格式控制字符 01 #include 02 int main(void) 03 04 float f1=11.110000811; /*定义一个 float类型的变量 f1并 赋值 */ 05 float f2=11.110000; /*定义一个 float类型的变量 f2并赋值 */ 06 printf(%fn,f1); /*按 %f的格式输出 f1*/ 07 printf(%fn,f2); /*按 %f的格式输出 f2*/ 08 return 0; 9 本例中定义的 f1和 f2的小数位数不同,但是输出后位数都为 6位,这是问什么 呢?是因为 %f格式输出的数据小数部分必须是 6位,如果原数据不符合, 位数少的时候补零,位数多的时候小数部分取前 6位,第 7位四舍五入。 6.2.2 格式控制字符 %m.nf:以固定的格式输出小数, m指 的是包括小数点在内的数据的位数, n是指 小数的位数,当总的数据位数小于 m时,数 据左端补空格,如果大于 m时,原样输出。 %-m.nf:除了 %m.nf以外,要求输出 的数据向左靠齐,右端补空格。 6.2.2 格式控制字符 【 范例 6-4】 格式控制字符 %m.nf和 %-m.nf格式符练习。 01 #include 02 int main(void) 03 04 float f=123.456; /*初始化变量 */ 05 printf(%fn,f); /*按 %f格式输出 */ 06 printf(%10.1fn,f); /*按 %m.nf格式输出 */ 07 printf(%5.1fn,f); 08 printf(%10.3faaan,f); 09 printf(%-10.3faaan,f); /*按 %-m.nf格式输出 */ 10 return 0; 11 6.2.2 格式控制字符 4. c格式控制字符:输出单个字符 5. s格式控制字符:输出字符串 %s、 %ms和 %-ms与前面介绍的几种用法相同, 故省略,在此,我们介绍一下 %m.ns和 %- m.ns两种。 %m.ns:输出 m位的字符,从字符串的左端开 始截取 n位的字符,如果, n位小于 m位,则左 端补空格。 %-m.ns:与 %m.ns相比是右端补空格。 6.2.2 格式控制字符 【 范例 6-5】 m.ns和 -m.ns格式符练习。 01 #include 02 int main(void) 03 04 printf(%sn,Hello); /*按 %s格式输出 */ 05 printf(%5.3sn,Hello); /*按 %m.ns格式输出 */ 06 printf(%-5.3sn,Hello); /*按 %-m.ns格式输出 */ 07 return 0; 8 这个例子是练习 %m.ns格式和 %-m.ns输出,并比较二者输出的区别。第 4 行是原样输出, %s格式。第 5行是 %m.n格式输出,共 m位,从 “ Hello” 中截取前 3位,并在前面补两个空格。第 6行与第 5行的不能是空格是补在 字符的后端。若 nm时, m就等于 n,保证字符显示 n位。 6.2.2 格式控制字符 6. 格式控制字符 以八进制形式表示数据。即把内存中数据的二进制 形式转换为八进制后输出,由于二进制中有符 号位,那么就把符号位也作为八进制的一部分 进行输出。 7. 格式控制字符 以十六进制形式表示数据。与 %o一样,也把二进 制中的符号位作为十六进制中的一部分进行输 出。 6.2.2 格式控制字符 【 范例 6-6】 %o和 %x格式符练习。 01 #include 02 int main(void) 03 04 int n1=0,n2=1,n3=-1; /*初始化三个变量 */ 05 printf(%d,%o,%xn,n1,n1,n1); /*分别按 %d, %o, %x格式输出 n1*/ 06 printf(%d,%o,%xn,n2,n2,n2); /*分别按 %d, %o, %x格式输出 n2*/ 07 printf(%d,%o,%xn,n3,n3,n3); /*分别按 %d, %o, %x格式输出 n3*/ 08 return 0; 9 这个例子是在比较 %d, %o, %x三种格式对输出同一个数结果有什么不同,特举了 1, 0和 -1三个具有代表性的数字进行试验。我们知道 0既可以看成是正数,也可以看 成是负数,与运行时的计算机系统有关,有的系统把它作为正数存储,本次运行的 计算机就是这样,但也有的计算机把它作为负数。 8. e格式控制字符:以指数形式输出数据。 9. g格式控制字符:在 %e和 %f中自动选择宽度较小的一种格式输出。 6.2.3 格式化输入函数 scanf() scanf()函数:把从终端读取的符合特定格式的数 据输入计算机程序中使用,是输入数据的接口。函 数调用格式: scanf (,); 例如: 01 int i,j ; 02 scanf(“%d”,%i); /*把输入的数据赋值给变量 i*/ 03 scanf(“%d,%d”, /*分别把输入的数据赋值 给变量 i和 j*/ 6.2.3 格式化输入函数 scanf() 我们知道变量是存储在内存中的,变量名就是一个代号,内存 为每个变量分配一块存储空间,当然,存储空间也有地址,也 可是说成是变量的地址。但是,计算机怎么找到这个地址呢? 这就要到地址操作符 05 printf(请输入一个整数: ); 06 scanf(%d, /*输入数据,给变量 i赋值 */ 07 printf(i=%dn,i); /*输出 i的值 */ 08 printf(i在内存中的地址为: %on, /* 以八进制形式输出变量 i在内存中的地址 */ 09 return 0; 10 6.2.3 格式化输入函数 scanf() 【 范例 6-8】 输入多个值。 01 #include 02 int main(void) 03 04 int i=0; 05 char a=0; 06 float f=0.0; 07 printf(请输入 1个整型、 1个字符型和 1个浮点型的值: n); 08 scanf(%d,%c,%f, /*输入三个数据,分别给变量赋 值 */ 09 printf(i=%d,a=%c,f=%fn,i,a,f); /*输出三个变量的值 */ 10 return 0; 11 6.3 字符输入输出 6.3.1 字符输出函数 putchar() 6.3.2 字符输入函数 getchar() 6.3 字符输入输出 字符的输入输出是程序经常使用的操作,频 率比较高,所以 C库函数中专门设置了 putchar函数和 getchar函数对字符的输入 输出进行控制。 6.3.1 字符输出函数 putchar() putchar函数:把单个字符输出到标准输出 设备。调用格式: putchar(v); /*v是一个变量 */ 例如: 01 char v=0; 02 putchar(A); /*输出单个字符 A*/ 03 putchar(v); /*输出变量 v的值 */ 04 putchar(n); /*执行换行效果,屏幕不显 示 */ 6.3.1 字符输出函数 putchar() 【 范例 6-9】 putchar函数的用法。 01 #include 02 int main(void) 03 04 char r=0; /*初始化变量 */ 05 printf(请输入一个字符: ); /*输出提示 */ 06 scanf(%c, /*输入及给 r赋值 */ 07 putchar(r); /*输出 r的值 */ 08 putchar(n); /*换行 */ 09 putchar(a); /*输出字符常量 */ 10 putchar(n); /*换行 */ 11 return 0; 12 从这个例子中我们可以看出, putchar函数可以输出字符变量,字符常量,也可以使用 转义字符,起到一些特殊的作用。在这里 putchar(r)和 printf(%c,r)作用是一样 的 ,都是输出字符变量 r的值。而 printf(n)和 putchar(n)作用是相同的,都是 换行。不光是换行,只要是转义字符,这两种形式的作用是相同的。 6.3.2 字符输入函数 getchar() getchar函数:从标准输入设备上读取单个 字符,返回值为字符。调用格式: getchar(); 例如: char c; c=getchar(); /*把输入的字符赋给变量 c*/ 6.3.2 字符输入函数 getchar() 【 范例 6-10】 getchar函数的使用。 01 #include 02 int main(void) 03 04 char r=0; /*变量初始化 */ 05 r=getchar(); /*字符输入 */ 06 putchar(r); /*输出变量 */ 07 putchar(n); /*换行 */ 08 return 0; 9 第 5行是输入字符的语句,和 scanf(%c, /*s为字符串变量 */ 例如: 01 char str=”Hello ,C!”; /*定义一个数组,储存了一 串字符串 */ 02 char *f; /*定义了一个指针 */ 03 f=” Hello ,C!”; /*指针指向一个字符串 */ 04 puts(str); /*输出字符串 */ 05 puts(f); /*输出字符串 */ 格式里的字符串变量 s在这里是数组 str和指针 f。 puts()函数的 作用与 printf(%sn, s)相同 输出字符串并换行。 6.4.1 字符串输出函数 puts() 注 意:数组是同一类型的数据的集合,指 针是用来表示内存地址的,后面会有独立的 章节介绍,这里我们只要知道数组变量和指 针变量可以存储字符串就行了。 6.4.2 字符串输入函数 gets() gets函数:读取标准输入设备输入的字符串,直到 回车结束。函数调用格式: gets(); 例如: 01 char s20,*f; /*定义一个数组和一个指针 */ 02 gets(s); /*获取输入的字符串 */ 03 gets(f); /*获取输入的字符串 */ 用 gets函数获取的字符串一般是放在字符变量里, 也是用数组变量和指针变量。 6.4.2 字符串输入函数 gets() 【 范例 6-11】 字符串的读写。 01 #include 02 int main(void) 03 04 char str15; 05 printf(请输入字符串: ); 06 gets(str); /*输入字符至数组变量 str*/ 07 printf(输入的字符串是: ); 08 puts(str); /*输出字符串 */ 09 return 0; 10 第 6行是输出字符串,第 7行是输出,大家可以看到程序中没有换行的语句, 但是输出结果中却换行了,这是因为什么呢?这主要是 gets函数的功劳, gets函数除了有输入字符串的功能外,还有换行的作用。 6.6 跟我上机 编写程序,实现输入一名学生的姓名,课程 名和成绩,并把这些信息在屏幕上显示出来。 注意:姓名,课程名是字符串,成绩是浮点 型的数字,显示时只能显示一位小数。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!