收藏 分销(赏)

C语言项目实战学生成绩的输入与计算.pptx

上传人:精**** 文档编号:4610130 上传时间:2024-10-07 格式:PPTX 页数:72 大小:231.18KB
下载 相关 举报
C语言项目实战学生成绩的输入与计算.pptx_第1页
第1页 / 共72页
C语言项目实战学生成绩的输入与计算.pptx_第2页
第2页 / 共72页
点击查看更多>>
资源描述
l技能目标技能目标n n能够定义各种简单类型的常量和变量能够定义各种简单类型的常量和变量能够定义各种简单类型的常量和变量能够定义各种简单类型的常量和变量n n能对数值常量、字符常量和符号常量正确的定义和使用能对数值常量、字符常量和符号常量正确的定义和使用能对数值常量、字符常量和符号常量正确的定义和使用能对数值常量、字符常量和符号常量正确的定义和使用n n初步学会利用初步学会利用初步学会利用初步学会利用C C语言中运算符和表达式解决现实中的相关问语言中运算符和表达式解决现实中的相关问语言中运算符和表达式解决现实中的相关问语言中运算符和表达式解决现实中的相关问题题题题n n能进行不同数据类型之间的混合运算能进行不同数据类型之间的混合运算能进行不同数据类型之间的混合运算能进行不同数据类型之间的混合运算n n能编写输入输出数据的程序能编写输入输出数据的程序能编写输入输出数据的程序能编写输入输出数据的程序l知识目标知识目标n n能够正确理解数据类型及其特征能够正确理解数据类型及其特征能够正确理解数据类型及其特征能够正确理解数据类型及其特征n n能够正确定义、输入、输出并使用常用数据类型:整型、实能够正确定义、输入、输出并使用常用数据类型:整型、实能够正确定义、输入、输出并使用常用数据类型:整型、实能够正确定义、输入、输出并使用常用数据类型:整型、实型、字符型型、字符型型、字符型型、字符型n n掌握常量的正确使用方法掌握常量的正确使用方法掌握常量的正确使用方法掌握常量的正确使用方法n n理解字符数据在内存中的存储方式理解字符数据在内存中的存储方式理解字符数据在内存中的存储方式理解字符数据在内存中的存储方式n n能够正确使用能够正确使用能够正确使用能够正确使用printf()printf()和和和和scanf()scanf()进行各种数据正确格式的输入进行各种数据正确格式的输入进行各种数据正确格式的输入进行各种数据正确格式的输入输出输出输出输出l项目任务与解析项目任务与解析n n本项目实现班级学生成绩管理系统的基本功能,本项目实现班级学生成绩管理系统的基本功能,本项目实现班级学生成绩管理系统的基本功能,本项目实现班级学生成绩管理系统的基本功能,如系统中用到的数据、学生成绩的输入如系统中用到的数据、学生成绩的输入如系统中用到的数据、学生成绩的输入如系统中用到的数据、学生成绩的输入/输出;总分输出;总分输出;总分输出;总分与平均分的计算等。与平均分的计算等。与平均分的计算等。与平均分的计算等。n n本项目包含下面几个任务:本项目包含下面几个任务:本项目包含下面几个任务:本项目包含下面几个任务:n n 任务任务任务任务2 2:学生成绩的输入:学生成绩的输入:学生成绩的输入:学生成绩的输入/输出输出输出输出n n 任务任务任务任务3 3:总分与平均分的计算:总分与平均分的计算:总分与平均分的计算:总分与平均分的计算l 主要内容主要内容2.1 2.1 任务任务2 2:学生成绩的输入、输出:学生成绩的输入、输出2.2 2.2 任务任务3 3:总分与平均分的计算:总分与平均分的计算2.3 2.3 扩展知识与理论扩展知识与理论2.4 2.4 运行程序的步骤和方法运行程序的步骤和方法2.1 任务2:学生成绩的输入、输出1.问题描述问题描述一个班进行了一次考试,现要将几个学生的成绩输入电一个班进行了一次考试,现要将几个学生的成绩输入电脑,并按要求输出。脑,并按要求输出。假定这个班有三个学生,考试成绩均为整数。假定这个班有三个学生,考试成绩均为整数。2.具体实现具体实现P18-P19程序3.知识分析知识分析在学习C语言输入输出函数前,我们必须首先了解C语言中的数据类型、常量与变量的使用方式、计算时数据类型的转换方式等。2.2 任务3:总分与平均分的计算1.问题描述问题描述一个班进行了一次考试,现要将几个学生的成绩输入电一个班进行了一次考试,现要将几个学生的成绩输入电脑,并计算他们的平均分及总分,然后按要求输出。脑,并计算他们的平均分及总分,然后按要求输出。假定这个班有三个学生,考试成绩均为整数。但计算出假定这个班有三个学生,考试成绩均为整数。但计算出的平均分就是实数了。的平均分就是实数了。2.具体实现具体实现P19程序3.知识分析知识分析在学习了C语言输入输出函数后,我们就可以使用C语言中提供的输入输出函数对输入的成绩进行计算:总分的计算、平均分的计算。2.3 必备知识与理论程序中使用的各种变量都应预先加以程序中使用的各种变量都应预先加以定义,即先定义,后使用。对变量的定义,即先定义,后使用。对变量的定义可以包括三个方面:定义可以包括三个方面:数据类型数据类型 存储类型存储类型 作用域作用域数据类型是对程序所处理数据的一种“抽象”,通过类型名对数据赋予一些约束,以便进行高效处理与词法检查,这些约束包括:取值范围每种数据类型对应于不同的取值范围,也就是说数据类型是数值的一个集合。存储空间大小每种数据类型对应于不同规格的存储空间。运算方式即数据类型是一个数据集合及其运算的集合。C语言提供的数据类型数据类型数据类型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型(void)整型整型实型实型(浮点型浮点型)枚举类型枚举类型字符型字符型结构体类型结构体类型共用体类型共用体类型数组类型数组类型 C语言提供的基本数据类型包括char(字符)型、int(整)型、float(单精度实)型、double(双精度实)型。并且还可以通过使用short、long、signed和unsigned修饰char和int,用long修饰double,形成更多的类型。2.3.1 数值的定点表示与浮点表示 定点表示和浮点表示,是C语言基本数据类型的重要特征。为了说明什么是“定点”,什么是“浮点”,先看值的几种表示形式:日常的表示法 C语言中的表示形式3.14159100 3.14159e00.3141591010.314159e+10.03141591020.0314159e+231.415910-131.4159e-13141.5910-33141.59e-3浮点形式存储 3 .1 4 1 5 9+1数值部分(尾数)指数(阶码)2.3.2 整数的有符号类型与无符号类型内存中的数值是以补码形式存放的。在C语言中,有符号的整数用“signed”修饰,无符号整数用“unsigned”修饰,并且有符号的整数的定义可以将符号修饰符缺省,如:signed int a,b;/*a,b为有符号整数*/int a,b;/*a,b为有符号整数*/unsigned int a,b;/*a,b为无符号整数*/2.3.3 类型宽度与取值范围 C语言对不同类型的数据分配不同宽度的存储空间,典型的存储空间宽度有:1个字节(8位)、2个字节(16位)、4个字节(32位)、8个字节(64位)和10个字节(80位)几种。显然,不同的长度,对应的数据的取值范围是不同的。当然,同样长度的取值范围还与有无符号、是定点表示(整型)还是浮点表示(实型)有关。另外还取决于所用的编译系统。大多数编译系统对一个带符号整数的数值范围处理为:-2n-1 2n-1-1。其中n为该整数所占的比特数。如果一个整数所占的比特数为16,则该整数的范围为-32 767 32 767。不同长度整型数据的取值范围 数据长度(比特)取值范围signed(有符号)unsigned(无符号)8-127 1270 25516-32 767 32 7670 65 53532-2 147 483 647 2 147 483 6470 4 294 967 29564-(263-1)263-10 264-1(18 446 744 073 709 551 615)C语言中不同长度实型数据的取值范围和表数精度 宽度(比特)数据类型机内表示(位数)取值范围有效数字和精度阶码尾数符号32float 8231|3.4e-38|3.4e+38|大约7位十进制有效数字,7位精度64double11521|1.7e-308|1.7e+308|16或17位十进制有效数字,7位精度80long double由具体实现确定|1.2e-4932|1.2e+4932|18位十进制有效数字,7位精度 C语言提供了一个测定某一种类型数据所占存储空间长度的运算符“sizeof”它的格式为:sizeof(类型标识符或数据)当不了解所使用的编译器中的某数据类型的宽度时,可以使用这个运算符计算之。2.3.4 整型常量1.整数常量的三种进制 在C语言中,整型常量可以使用十进制数、八进制数、十六进制数等几种形式书写。C语言规定,程序中凡出现以数字0开头的数字序列,一律作为八进制数处理;凡出现以0 x开头,后面跟若干位数字的,一律作为十六进制数处理;其它数字作为十进制数处理。下面是合法的整型常量:5121(十进制正整数)0111(八进制正整数,等于十进制数73)010007(八进制正整数,等于十进制数4103)0177777(八进制正整数,等于十进制65537)0XFFFF(十六进制正整数,等于十进制数65537)0 xA3(十六进制正整数,等于十进制数163)-32768(十进制负整数)下面不是合法的整型常量:09876(非十进制数,又非八进制数,因为有数字8和9)20fa(非十进制数,又非十六进制数,因为不是以0 x开头)0 x10fg(出现了非法字符)2.整数常量的后缀 在C语言中整数可以进一步分为short、int、long和long logn等类型。那么,对于一个常数如何分辨其类型呢?一般说来,有以下原则:1)默认原则:在没有任何特别标志的情况下,可以按照常数所在的范围,决定其类型。例如,在16位的机器中,当一个常整数的值在十进制-3276832767(八进制数00177777、十六制数0 x00 xFFFF),则被看作一个short int或int型整数。超出上述范围的整常数,则被看作长整数(32位)表示。例如,234、32766、0177776、0 xFFFE等被看作是int型,而-32769、32768、0200000、0 x10000等被看作是long型。2)后缀字母标识法:用L或l表示long类型整数。用LL或ll表示long long类型整数。用U或u表示unsigned类型。例如:-12L(十进制long整数)-12LL(十进制long long整数)774545L(十进制long整数)076L(八进制long整数,等于十进制数32768)0100000L(八进制long整数,等于十进制62)0 x12l(十六进制long整数,等于十进制数18)0X8000l(十六进制long整数,等于十进制数32768)12345u(十进制unsigned int类型)12345UL(十进制unsigned long类型)在16位字长的机器中,一旦把一个常数表示成long整数,系统便将其存储空间扩充为4个字节。从值的大小上看,12L与12没有区别,但它们占用的存储空间不相同 2.3.5 实型常量C语言中的实型(浮点)数据常量用带小数点和小数分量的形式表示,如12.345,也可以用科学记数法表示。C语言将实型数据分为:float、double和long double三种类型,并且默认的实型数据是double类型的。因此,对于带小数点的常量,C语言编译器会将之作为double类型看待。如果要特别说明某带小数点的常量是float类型或long double类型,可以使用后缀字母:用f或F表示float类型,如123.45f 1.2345e+2F.用l或L表示long double类型,如1234.5l 1.2345E+3L。使用科学记数法(指数形式)时,要求e的左边必须有数值部分(有效数字),可以是整数,也可以是小数形式;指数必须是整数形式。例如,e5、2e1.23、.e5等都是不合法的。2.3.6 字符类型及其常量1.可打印字符 字符类型的数据在内存中以相应的ASCII代码存放。例如,a的ASCII码为97,则在内存中的二进制存储形式为:01100001。打印字符是指在ASCII表中其ASCII在32至127之间的这95个字符。这些字符在打印时可以采用十进制整数输出(用“%d”,输出的是ASCII数值),也可采用输出字符的格式码(用“%c”,输出的是ASCII符号)。例2-3#include int main(void)char ch;int i;ch=A;ch=ch+32;i=ch;printf(%d is%cn,i,ch);/*注意格式码*/printf(%c is%dn,ch,ch);/*注意格式码*/return 0;运行结果如下:97 is AA is 972.字符常量 ASCII字符分为可打印字符和不可打印字符两种。在C语言程序中,可打印字符常量是用一对单撇号括起来的一个字符,如a,A,?,。需要注意如下几点:单撇号只是字符与其它部分的分隔符,或者说是字符常量的定界符,不是字符常量的一部分,当输出一个字符常量时不输出此撇号。数字被定义为字符型之后就不再做数字,不能参与数值运算。不能用双引号代替撇号,如a不是字符常量。撇号中的字符不能是单撇号或反斜杠,如或不是合法的字符常量。3.转义字符转义字符(反斜杠码)是C语言提供的处理一些特殊字符(包括一些不可打印字符)方法。转义字符如表2-4所示。表2-4 转义字符表 转义字符形式意 义n换行t水平制表v垂直制表b退格r回车f走纸换页a报警(如铃声)反斜杠?问号“双撇号单撇号ddd13位八进制常数xhh12位十六进制常数例2-3打印人民币符号¥#include int main(void)printf(Yb=n);return 0;该程序运行时先打印一个字符“Y”。这时打印头已走到下一个位置,用控制代码b使打印头回退一格,即回到原先已打印好的Y位置再打印字符“=”,两字符重迭形成人民币符号“¥”。当然,这一输出只能在打印机上实现,而不能在显示器上实现。因为显示器无此重迭显示功能(在显示后一字符时原在该位置上的字符消失)。转义字符除用来形成一个外设控制命令外,还用来输出不能直接从键盘上输入或不能用字符常量书写出的ASCII字符。这时要在反斜杠后跟一个代码值,这个代码值最多用三位八进制码数(不加前缀)或两位十六进制数(以x作前缀)表示。4.字符串常量在C语言中,把用一对双撇号括起来的零个或多个字符序列称为字符串常数。如:hello,Programming in C,A,a,等。字符串以双撇号为定界符,但双撇号并不属于字符串。要在字符串中插入撇号,应借助转义字符。例如要处理字符串I say:Goodby!时,可以把它写为I say:Goodby!字符串中的字符数称为该字符串的长度。字符串常数在机器内存储时,系统自动在字符串的末尾加一个“字符串结束标志”,它是转义字符“0”。如字符串“hello”在内存中存储为:hello02.3.7 2.3.7 符号常量符号常量符号常量则是在一个程序(或程序的一部分)中指定的用名字代表的常量,从字面上不能直接看出其类型和值。例2-4 求圆面积。#include define PI 3.141592654/*定义符号常量*/define R 2.0int main(void)float s;s=PI*R*R;printf(area=%f,s);return 0;2.3.8 2.3.8 变量的定义变量的定义变量是存储数据的值的空间,或者说变量是指在程序的运行中,其值可以改变的量。变量定义必须放在变量使用之前。一般放在函数体的开头部分。变量的定义采用下面的格式:类型标识符 变量名,变量名,;1.整型变量的类型整型变量的类型整型变量的类型是由基本类型(int)、有符号(signed)、无符号(unsigned)、短整型(short)、长整型(long)及其组合来表示,包括:有符号短整型:short、short int、signed short、signed short int;无符号短整型:unsigned short、unsigned short int;有符号整型:int、signed、signed int;无符号整型:unsigned、unsigned int;有符号长整型:long、long int、signed long、signed long int;无符号整型:unsigned long、unsigned long int;2.实型变量的类型实型变量的类型实型变量可分为单精度(float)、双精度(double)和长双精度(long double)。2.3.9 变量的初始化在定义变量的同时给变量直接赋值,其格式为:类型标识符 变量名=初值,变量名=初值,;2.3.10 2.3.10 数据类型转换数据类型转换 在下列情况下,C语言编译器,可能将数据从一种类型转换成另一种类型:(1)强制类型转换:使用转换表达式。(2)自动类型转换,包括:当二元运算符两端的操作数类型不同时进行的转换;函数参数传递中的数据类型转换;函数返回时的数据类型转换;其他情形。在运算时,不同类型数值必须转换为同一类型数值。其转换规律是:自动转换(由系统自动进行,无须干预),就高不就低(把低级类型转换为高级类型,再进行运算。所谓高级、低级指的是数据类型占用字节数较多的是高级类型,否则是低级类型)。转换等级如下:低级 高级 字符型 整型 浮点型 双精度型1.赋值转换2.一般表达式转换按照优先级顺序将各二元运算符两端的操作数提升成同一类型。转换按照下面的算法进行:IF(一个操作数为long double)另一个操作数转换为long doubleELSE IF(一个操作数为double)另一个操作数转换为doubleELSE IF(一个操作数为float)另一个操作数转换为floatELSE IF(一个操作数为unsigned long)另一个操作数转换为unsigned longELSE IF(一个操作数为long)另一个操作数转换为longELSE IF(一个操作数为unsigned)另一个操作数转换为unsigned char c;int i;float f;double d;int result;result=c *i +f /d -(f +i);floatintdoubledoubledoubleintdoublefloatdoubledoubledoubleint2.3.11 强制类型转换 C语言提供一种“强制类型转换”运算符,将一个类型的变量强制转换为另一种类型:(类型标识符)表达式2.4 扩展知识与理论 输入输出的对象是数据,而数据是以介质为载体的,因此进行输入输出操作就要与各种外部设备发生联系,要指定从哪个设备(文件)读入数据,将数据输出到哪个设备(文件)上去。这里只讨论从终端(键盘)输入和输出到终端(显示器)的输入输出函数。通常也把这些函数称为控制台输入输出函数。scanf和printf用于格式化输入输出。2.4.1 printf()函数printf()函数的一般形式如下:int printf(格式控制字符串,输出表达式1,输出表达式2,);格式字段结构%修饰宽度精度长度修正 格式码a/A,c,d,e/E,f,g/G,i,n,o,p,s,u,x/X,%l/L,h,ll,hh,j,z,t.十进制整数十进制整数-,0,+,空格,#1.格式码格式码意义d/i带符号十进制定点格式u无符号十进制定点格式o无符号八进制定点格式x/X无符号十六进制定点格式c字符s字符串f小数形式十进制e/E科学记数法g/Gf和e中短者,不印无效0p输出地址,格式由实现定义%2.长度修正符长度修正符可修饰的格式码参数类型ld,i,o,u,x,Xlong,lld,i,o,u,x,Xlong long int,unsigned long long inthd,i,o,u,x,Xshort,unsigned shorthhd,i,o,u,x,Xchar,unsigned charLa,A,e,E,f,g,Glong double3.域宽与精度 域宽与精度说明的格式为:m.n。其中:m为输出域宽,用字符数表示。对实数,包括了一个小数点的位置。n为精度,其用法有如下几种情形:配合格式码f、e/E时,指定小数点后面的位数;未指定精度时,默认小数点后6位。配合格式码g/G时,指定有效位的数目。用于字符串时,精度符限制最大域宽。用于整型数据时,指定必须显示的最小位数,不足时左恻补先导0。#include int main(void)printf(“%12.5fn”,123.1234567);printf(“%12fn”,123.1234567);printf(“%12.5gn”,123.1234567);printf(“%5.10s%sn”,”abcdefghijklm”,”a”);printf(“%12.8dn”,12345);return 0;执行结果如下所示。域宽12,精度5123.12346123.123457123.12abcdefghija00012345域宽12,未指定精度,默认6位精度域宽12,有效位5位最少5个字符,最大域宽10域宽12,未必须最少显示8位,不足时左恻补04.前缀修饰符修饰符意 义-数据在输出域中左对齐显示0用“0”而非空格进行前填充+在有符号数前输出前缀“+”或“-”空格对正数加前缀空格,对负数加前缀“-”#在g,f和f前,确保输出字段中有一个小数点;在x前,确保输出的十六进制数前有前缀0 x*做占位符号2.4.2 2.4.2 格式化输入函数格式化输入函数scanf()scanf()scanf()函数的功能是将输入数据送入相应的存储单元。具体地说,它是按格式参数的要求,从终端上把数据传送到地址参数所指定的内存空间中。其原型为:int scanf(格式控制字符串,地址1,地址2,);1.地址参数 C语言允许程序员间接地使用内存地址,这个地址是通过对变量名“求地址”运算得到的。求地址的运算符为&。例如对于定义:short a;float b;&a给出的是变量a的首地址,&b给出的是变量b的首地址。2.格式说明字段 scanf()的格式说明字段的结构如下图所示。%宽度长度修正 格式码a/A,c,d,e/E,f,g/G,i,n,o,p,s,u,x/X,%l/L,h,ll,hh,j,z,t十进制整数格式码长度修正符输入数据类型说 明d无hhhlllint charshortlonglong long输入带符号十进制整数,可选加+或-ihhhlllcharshortlonglong long输入带符号整数,可选加+或-以及0(八进制)、0 x(十六进制)u无unsigned输入带符号十进制整数ohhunsigned char输入无符号八进制整数,可选加+或-xhlllunsigned shortunsigned longunsigned long long输入无符号十六进制整数,可选加+或-c无char读取字符s无字符串连续读取字符,直到遇到文件结束符、空白或达到指定字段宽度n无hhhlllint charshortlonglong long不读取字符,而是而是把scanf()所处理的字符总数写入到对应参数指定的变量中。p无地址读取地址f,e,g,a无lLfloatdoublelong double读取带符号十进制实数 无字符搜索集合只能输入定义在搜索集合中的字符,例如%abcdefgh或%a-h%无%读取%#include int main(void)double a,b,c,d;scanf(%f%f,&a,&b);printf(na=%1f,b=%1fn,a,b);scanf(%lf%lf,&c,&d);printf(nc=%lf,d=%lfn,c,d);return 0;执行结果如下:3.数据输入流的分隔 scanf()是从输入数值数据流中接收非空的字符,再转换成格式项描述的格式,传送到与格式项对应的地址中去。当操作者在终端上键入一串字符时,系统怎么知道哪几个字符算作一个数据项呢?有以下几种方法:(1)使用默认分隔符:空格、制表符(t)、换行符(n)。#include int main(void)int a;float b,c;scanf(%d%f%f,&a,&b,&c);/*格式码之间没有其它符号*/printf(a=%d,b=%f,c=%f,a,b,c);return 0;运行输入输出如下:12 345 6789 87654321 a=12,b=345.000000,c=6789.000000 注意,当从键盘上键入一串字符流后,只有键入回车时,系统才开始执行执行scanf()规定的操作。(2)根据格式项中指定的域宽分隔出数据项。#include int main(void)int a;float b,c;scanf(%2d%3f%4f,&a,&b,&c);printf(a=%d,b=%f,c=%f,a,b,c);return 0;一次运行情况如下:12345678987654321 a=12,b=345.000000,c=6789.000000 (3)根据格式字符的含义从输入流中取得数据,当输入流中数据类型与格式字符要求不符时,就认为这一数据项结束。#include int main(void)int a;char b;float c;printf(input a,b,c:n);scanf(%d%c%f,&a,&b,&c);printf(a=%d,b=%c,c=%f,a,b,c);return 0;一次执行结果为:input a b c:1234r1234.567(带下划线者为输入流)a=1234,b=r,c=1234.567017(4)格式控制字符串中的非空白字符 在scanf()中的格式控制字符串中,除了格式说明字段中的字符外,所出现的其他字符,都必须在输入数据流时照样输入(一般用空格和逗号)。#include int main(void)int a,b;scanf(input:%d$%d,&a,&b);printf(%d,%dn,a,b);return 0;输入的情形如下:input:123$456123,4564.scnaf()与输入缓冲区 在输入数据时,实际上并不是输入完一个数据项就被读入送给一个变量,而是在键入一行字符并按回车键之后才被输入,这一行字符先放在一个缓冲区中,然后按scanf()格式说明的要求从缓冲区中读数据。如果输入的数据多于一个scanf()所要求的个数,余下的数据可以为下一个scanf()接着使用。#include int main(void)int a,b,c,d,e,f;scanf(%d%d,&a,&b);scanf(%d%d,&c,&d);scanf(%d,&e);scanf(%d,&f);printf(a=%d,b=%d,c=%d,d=%d,e=%d,f=%d,a,b,c,d,e,f);return 0;运行情况如下:13 24 35 46 5768 79 a=13,b=24,c=35,d=46,e=57,f=68这个程序中的操作图 13 24 35 46 57 68 79缓冲区键盘键入数据流&a&b&c&d&e&fscanf(%d%d,&a,&b);scanf(%d%d,&c,&d);scanf(%d,&e);scanf(%d,&f);内存数据区5.scanf()用于字符输入(1)所有空白字符、转义字符都将作为有效字符被接收,因此不能再使用空白或其他字符进行数据项的分隔。(2)当定义有字段宽度时,scanf()将在缓冲区中的输入流上,按宽度间隔地跳取字符。6.scanf()的停止与返回scanf()函数操作有四个作用:(1)首先从缓冲区中提取需要的数据。(2)如果缓冲区中没有需要的数据,则要求从键盘输入一个数据流。输入操作以回车操作结束。(3)遇到下面的情形终止执行:格式参数中的格式项用完正常结束;发生格式项与输入域不匹配时非正常结束。例如从键盘输入的数据数目不足。(4)执行成功,返回成功匹配的项数,执行失败,返回0。2.4.3 字符输入输出函数字符输入输出函数getchar()与与putchar()为了方便字符的输入输出,标准C还提供了两个简单的库函数:getchar()和putchar()。它们的原型分别为:int getchar(void);int putchar(int c);getchar()被执行后,就等待击键操作,然后从返回一个字符值,并自动把击键结果回显在屏幕上。它虽然被定义为返回int类型,但由于所读取的字符被保存在低字节中,所以可以赋值给一个char型变量。读取失败,返回-1。putchar(c)函数是将字符变量c中的字符输出到标准输出设备(一般也是用户终端)上。/*文件名:ex022401.c*/#include int main(void)char ch1,ch2,ch3;ch1=getchar();ch2=getchar();ch3=getchar();putchar(ch1);putchar(ch2);putchar(ch3);putchar(n);return 0;注意:在执行getchar()时,虽然是读入一个字符,就回显一个字符,但并不是从键盘按一个字符,该字符就被立即送给一字符变量,而是等到一个回车键后,才将一行字符输入缓冲区,然后getchar函数从缓冲区中取一个字符给一个字符变量。这种情况称为行缓冲。getchar()的行缓冲(等回车)和回显也会为某些交互性应用带来不便。这时,可以用下面的两个库函数代替:getche():读字符,并回显,不等回车;getch():读字符,但不回显,不等回车。不过,这两个库函数在ANSI C标准中并没有定义,是一种常见扩充。对于多数C编译器,这两个函数的原型被定义在头文件中。在有的编译器(如Visual C+)中,它们可能被冠以下划线前缀:_getche()和_getch()。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服