您好,欢迎访问三七文档
第6章用户与计算机的交互——输入和输出标准输入输出格式化输入输出字符输入输出字符串输入输出跟我上机第6章用户与计算机的交互——输入和输出标准输入输出格式化输入输出字符输入输出字符串输入输出跟我上机第6章用户与计算机的交互——输入和输出标准输入输出格式化输入输出字符输入输出字符串输入输出跟我上机第6章用户与计算机的交互——输入和输出标准输入输出格式化输入输出字符输入输出字符串输入输出跟我上机第6章用户与计算机的交互——输入和输出标准输入输出格式化输入输出字符输入输出字符串输入输出跟我上机第6章用户与计算机的交互——输入和输出标准输入输出格式化输入输出字符输入输出字符串输入输出跟我上机用户与计算机的交互——输入和输出输入/输出是计算机最基本的行为,也是任何语言必需的功能,起到了用户和计算机桥梁的作用,那么,在C语言的世界里,输入和输出是怎么实现的?怎么样高速、高效的进行输入和输出呢?我们就在这一章来进行讨论吧!6.1标准输入输出程序如何知道用户想要的内容,用户又如何得知程序运算的结果呢?可以通过输入输出来实现。我们先来看下面的程序运行结果。6.1标准输入输出在命令行中,提示用户输入1个整数,当用户输入100,并按【Enter】键后,程序显示“您输入的整数是:100”,这就是个简单的输入输出的过程:程序提示用户输入数据程序读取后输出,实现了用户和计算机的交互。6.1标准输入输出此程序的代码如下。01#includestdio.h02intmain(void)03{04inti;05printf(请输入1个整数:\n);/*提示用户输入*/06scanf(%d,,&i);/*读取输入数据*/07printf(您输入的整数是:%d\n,i);/*输出数据*/08return0;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(格式化字符串,参数列表);例如:01inti=10,j=20;02printf(“欢迎来到C语言的世界!\n”);/*输出引号内的内容并换行*/03printf(“i=%d,j=%d\n”,i,j);/*输出变量i和j的值并换行*/6.2.1格式化输出函数——printf()我们再来看以下代码。01printf(“Hello\n”)02printf(a,A\n);03printf(班级平均成绩为:%f\n,avg);04printf(Firstoutputi=%d\n,i);从这些语句中,我们可以很容易的看出第1行和第2行没有参数,原样输出,第3行和第4行都用到了参数。6.2.1格式化输出函数——printf()我们还可以把该函数的使用格式细分一下。⑴没有参数时,调用格式如下:printf(非格式字符串);使用这种格式输出的是双引号内的原样内容,通常用于提示信息的输出。⑵有参数时,调用格式如下:printf(“格式字符串”,参数列表);使用这种格式时,格式字符串内包含一个或多个格式控制字符。格式控制字符以“%“开头,紧跟其后的d、s、f、c等字符,用以说明输出数据的类型。格式控制字符的个数与参数列表中参数的个数相等,并且一一对应,输出时,用参数来代替对应的格式控制字符。参数可以是变量,也可以是表达式等。6.2.1格式化输出函数——printf()【范例6-1】printf函数的使用。01#includestdio.h02intmain(void)03{04intnum;05charr;06floatf;07printf(请输入1个整数,1个字符,1个浮点型的数据:\n);/*输出引号中的内容并换行*/08scanf(%d,%c,%f,&num,&r,&f);/*输入数据,给num,r,f分别赋值*/09printf(输入的数据是:num=%d,r=%c,f=%f,num,r,f);/*输出变量的值*/10printf(\n);/*换行*/11return0;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#includestdio.h02intmain(void)03{04inti=123456;/*初始化变量*/05printf(%d\n,i);/*按%d格式输出数据*/06printf(%5d\n,i);/*按%md格式输出数据*/07printf(%7d\n,i);/*按%md格式输出数据*/08return0;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#includestdio.h02intmain(void)03{04floatf1=11.110000811;/*定义一个float类型的变量f1并赋值*/05floatf2=11.110000;/*定义一个float类型的变量f2并赋值*/06printf(%f\n,f1);/*按%f的格式输出f1*/07printf(%f\n,f2);/*按%f的格式输出f2*/08return0;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#includestdio.h02intmain(void)03{04floatf=123.456;/*初始化变量*/05printf(%f\n,f);/*按%f格式输出*/06printf(%10.1f\n,f);/*按%m.nf格式输出*/07printf(%5.1f\n,f);08printf(%10.3faaa\n,f);09printf(%-10.3faaa\n,f);/*按%-m.nf格式输出*/10return0;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#includestdio.h02intmain(void)03{04printf(%s\n,Hello);/*按%s格式输出*/05printf(%5.3s\n,Hello);/*按%m.ns格式输出*/06printf(%-5.3s\n,Hello);/*按%-m.ns格式输出*/07return0;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#includestdio.h02intmain(void)03{04intn1=0,n2=1,n3=-1;/*初始化三个变量*/05printf(%d,%o,%x\n,n1,n1,n1);/*分别按%d,%o,%x格式输出n1*/06printf(%d,%o,%x\n,n2,n2,n2);/*分别按%d,%o,%x格式输出n2*/07printf(%d,%o,%x\n,n3,n3,n3);/*分别按%d,%o,%x格式输出n3*/08return0;9}这个例子是在比较%d,%o,%x三种格式对输出同一个数结果有什么不同,特举了1,0和-1三个具有代表性的数字进行试验。我们知道0既可以看成是正数,也可以看成是负数,与运行时的计算机系统有关,有的系统把它作为正数存储,本次运行的计算机就是这样,但也有的计算机把它
本文标题:通信工程第6章
链接地址:https://www.777doc.com/doc-321762 .html