北京信息科技大学最简单的C程序设计――顺序程序设计_第1页
北京信息科技大学最简单的C程序设计――顺序程序设计_第2页
北京信息科技大学最简单的C程序设计――顺序程序设计_第3页
北京信息科技大学最简单的C程序设计――顺序程序设计_第4页
北京信息科技大学最简单的C程序设计――顺序程序设计_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章最简单的C程序设计——顺序程序设计申闫春北京信息科技大学2021年9月4.1C语句概述从程序流程的角度来看,程序可以分为三种根本结构,即顺序结构、分支结构、循环结构。这三种根本结构可以组成所有的各种复杂程序。C语言提供了多种语句来实现这些程序结构。本章介绍这些根本语句及其在顺序结构中的应用,使读者对C程序有一个初步的认识,为后面各章的学习打下根底。C程序的结构:C程序的执行局部是由语句组成的。程序的功能也是由执行语句实现的。C语句可分为以下五类:1)表达式语句2)函数调用语句3)控制语句4)复合语句5)空语句1.表达式语句:表达式语句由表达式加上分号“;〞组成。其一般形式为:表达式;执行表达式语句就是计算表达式的值。例如:x=y+z;赋值语句;y+z;加法运算语句,但计算结果不能保存,无实际意义;i++;自增1语句,i值增1。2.函数调用语句:由函数名、实际参数加上分号“;〞组成。其一般形式为:函数名(实际参数表);执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调函数体中的语句,求取函数值(在后面函数中再详细介绍)。例如:printf("CProgram");调用库函数,输出字符串。

3.控制语句:控制语句用于控制程序的流程,以实现程序的各种结构方式。它们由特定的语句定义符组成。C语言有九种控制语句。可分成以下三类:1)条件判断语句:if语句、switch语句;2)循环执行语句:dowhile语句、while语句、for语句;3)转向语句:break语句、goto语句、continue语句、return语句。4.复合语句:把多个语句用括号{}括起来组成的一个语句称复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。例如:{x=y+z;a=b+c;printf(“%d%d〞,x,a);}是一条复合语句。复合语句内的各条语句都必须以分号“;〞结尾,在括号“}〞外不能加分号。5.空语句:只有分号“;〞组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。例如:while(getchar()!='\n');本语句的功能是,只要从键盘输入的字符不是回车那么重新输入。这里的循环体为空语句。4.2赋值语句

赋值语句是由赋值表达式再加上分号构成的表达式语句。其一般形式为:变量=表达式;赋值语句的功能和特点都与赋值表达式相同。它是程序中使用最多的语句之一。在赋值语句的使用中需要注意以下几点:1.由于在赋值符“=〞右边的表达式也可以又是一个赋值表达式,因此,下述形式变量=(变量=表达式);是成立的,从而形成嵌套的情形。其展开之后的一般形式为:变量=变量=…=表达式;例如:a=b=c=d=e=5;按照赋值运算符的右接合性,因此实际上等效于:e=5;d=e;c=d;b=c;a=b;2.注意在变量说明中给变量赋初值和赋值语句的区别。给变量赋初值是变量说明的一局部,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句那么必须用分号结尾。例如:inta=5,b,c;3.在变量说明中,不允许连续给多个变量赋初值。如下述说明是错误的:inta=b=c=5必须写为inta=5,b=5,c=5;而赋值语句允许连续赋值。4.注意赋值表达式和赋值语句的区别。赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句那么不能。下述语句是合法的:if((x=y+5)>0)z=x;语句的功能是,假设表达式x=y+5大于0那么z=x。下述语句是非法的:if((x=y+5;)>0)z=x;因为x=y+5;是语句,不能出现在表达式中。4.3数据输入输出的概念及在C语言中的实现1、所谓输入输出是以计算机为主体而言的。2、本章介绍的是向标准输出设备显示器输出数据的语句。3、在C语言中,所有的数据输入/输出都是由库函数完成的。因此都是函数语句。4、在使用C语言库函数时,要用预编译命令#include将有关“头文件〞包括到源文件中。使用标准输入输出库函数时要用到“〞文件,因此源文件开头应有以下预编译命令:#include<>或#include〞〞stdio是standardinput&outupt的意思。5、考虑到printf和scanf函数使用频繁,系统允许在使用这两个函数时可不加#include<>或#include〞〞。C语言中的根本输入输出由标准的输入和输出函数完成。这些函数的原型均在特定的这个头文件中定义。1、所谓输入输出是以计算机为主体而言的。从计算机向外部输出设备〔如显示器、打印机等〕输出数据称为“输出〞,从输入设备〔如键盘、光盘、扫描仪等〕向计算机输入数据称为“输入〞。2、C语言本身不提供输入输出语句,输入输出操作是由函数实现的。3、标准输入输出函数:以标准的输入输出设备〔终端设备〕为输入输出对象。终端:终端是指通过通信线路连接到计算机的输入输出设备,它通常由显示器和键盘组成。putchar()getchar()puts()gets()printf()scanf()预编译命令:在使用C语言库函数时,要用预编译命令“#include〞将有关的“头文件〞包括到用户源文件中。举例:#include<stdio.h>main(){printf(“Hello!〞);}4、#include<stdio.h>或:#include“stdio.h〞在调用标准输入输出函数时必须使用#include文件包含命令将stdio.h头文件包含进来。#include文件包含命令都是放在程序的开头。注意:#include<stdio.h>在.c文件中可以省略,在.cpp文件中不能省略。在TC环境中,假设使用printf()或scanf()函数,那么前面的预编译命令可以省略!在VC++环境中不能省略!4.4字符数据的输入输出4.4.1putchar函数〔字符输出函数〕putchar函数是字符输出函数,其功能是在显示器上输出单个字符。其一般形式为:putchar(字符变量)例如:putchar('A');〔输出大写字母A〕putchar(x);〔输出字符变量x的值〕putchar(‘\101’);〔也是输出字符A〕putchar('\n');〔换行〕对控制字符那么执行控制功能,不在屏幕上显示。使用本函数前必须要用文件包含命令:#include<>或#include“〞单个字符的输出——putchar函数作用:向终端〔显示器、输出设备〕输出一个字符。格式:putchar(ch);注:其中ch可以是字符型〔整型〕变量、常量或表达式也可以是一个转义字符,如putchar(‘\n’)、putchar('\101')举例:#include<stdio.h>voidmain(){charch1=’B’,ch2=‘O’,ch3=‘Y’;putchar(‘\〞’);/*输出双引号*/putchar(ch1);putchar(ch2);putchar(ch3);/*输出BOY*/putchar(‘\〞’);putchar('\n');/*输出双引号*/}该程序输出〞BOY〞。例:利用putchar()函数将字符输出到显示终端上。#include<>voidmain(){inta; a=100;printf("outputthecharacter\n");putchar(a);}例4.1:输出单个字符。#include<stdio.h>main(){chara='B',b='o',c='k';putchar(a);putchar(b);putchar(b);putchar(c);putchar('\t');putchar(a);putchar(b);putchar('\n');putchar(b);putchar(c);}4.4.2getchar函数〔键盘输入函数〕getchar函数的功能是从键盘上输入一个字符。其一般形式为:getchar();通常把输入的字符赋予一个字符变量,构成赋值语句,如:charc;c=getchar();例4.2:输入单个字符。#include<stdio.h>voidmain(){charc;printf("inputacharacter\n");c=getchar();putchar(c);}使用getchar函数还应注意几个问题:1)getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。2)使用本函数前必须包含文件“stdio.h〞。3)在TC屏幕下运行含本函数程序时,将退出TC屏幕进入用户屏幕等待用户输入。输入完毕再返回TC屏幕。4)程序最后两行可用下面两行的任意一行代替:putchar(getchar());printf(“%c〞,getchar());例:getchar()函数的应用。#include<>voidmain(){intc;printf("pleaseinputacharacter:");c=getchar();printf("Whatinputedis%c\n",c);}单个字符的输入——getchar函数作用:从终端〔键盘、输入设备〕输入一个字符。格式:getchar();注:getchar函数没有参数,所接受的字符可以赋给字符型或整型变量,也可以作为表达式的一局部。举例:#include<>voidmain(){charc1;c1=getchar();putchar(c1);putchar(getchar());}输入:a输出a_输入:ab输出ab_?

思考:分别输入a和ab时输出为什么不同?输出框中的下划线表示光标。

思考?

想从键盘输入三个字母,然后将字母输出。编写程序。想从键盘输入三个小写字母,然后将字母变成大写,再输出。编写程序。想从键盘输入三个大写字母,然后将字母变成小写,再输出。编写程序。4.5格式输入与输出4.5.1printf函数〔格式输出函数〕printf函数称为格式输出函数,其关键字最末一个字母f即为“格式〞(format)之意。其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。在前面的例题中我们已屡次使用过这个函数。1.printf函数调用的一般形式printf函数是一个标准库函数,它的函数原型在头文件“〞中。但作为一个特例,不要求在使用printf函数之前必须包含文件。printf函数调用的一般形式为:printf(“格式控制字符串〞,输出表列)其中格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如:“%d〞表示按十进制整型输出;“%ld〞表示按十进制长整型输出;“%c〞表示按字符型输出等。非格式字符串在输出时原样照印,在显示中起提示作用。输出表列中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应。例4.3:main(){inta=88,b=89;printf("%d%d\n",a,b);printf("%d,%d\n",a,b);printf("%c,%c\n",a,b);printf("a=%d,b=%d",a,b);}本例中四次输出了a,b的值,但由于格式控制串不同,输出的结果也不相同。第四行的输出语句格式控制串中,两格式串%d之间加了一个空格(非格式字符),所以输出的a,b值之间有一个空格。第五行的printf语句格式控制串中参加的是非格式字符逗号,因此输出的a,b值之间加了一个逗号。第六行的格式串要求按字符型输出a,b值。第七行中为了提示输出结果又增加了非格式字符串。2.格式字符串在TurboC中格式字符串的一般形式为:[标志][输出最小宽度][.精度][长度]类型其中方括号[]中的项为可选项。各项的意义介绍如下:1)类型:类型字符用以表示输出数据的类型,其格式符和意义如下表所示:

2)标志:标志字符为-、+、#、空格四种,其意义下表所示:3)输出最小宽度:用十进制整数来表示输出的最少位数。假设实际位数多于定义的宽度,那么按实际位数输出,假设实际位数少于定义的宽度那么补以空格或0。4)精度:精度格式符以“.〞开头,后跟十进制整数。本项的意义是:如果输出数字,那么表示小数的位数;如果输出的是字符,那么表示输出字符的个数;假设实际位数大于所定义的精度数,那么截去超过的局部。5)长度:长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。例4.4:main(){inta=15;floatb=123.1234567;doublec=12345678.1234567;chard='p';printf("a=%d,%5d,%o,%x\n",a,a,a,a);printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);printf("c=%lf,%f,%8.4lf\n",c,c,c);printf("d=%c,%8c\n",d,d);}本例第七行中以四种格式输出整型变量a的值,其中“%5d〞要求输出宽度为5,而a值为15只有两位故补三个空格。第八行中以四种格式输出实型量b的值。其中“%f〞和“%lf〞格式的输出相同,说明“l〞符对“f〞类型无影响。“%5.4lf〞指定输出宽度为5,精度为4,由于实际长度超过5故应该按实际位数输出,小数位数超过4位局部被截去。第九行输出双精度实数,“%8.4lf〞由于指定精度为4位故截去了超过4位的局部。第十行输出字符量d,其中“%8c〞指定输出宽度为8故在输出字符p之前补加7个空格。使用printf函数时还要注意一个问题,那就是输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右,也可从右到左。TurboC是按从右到左进行的。请看下面两个例子:例4.5:main(){inti=8;printf(“%d\n%d\n%d\n%d\n%d\n%d\n〞,++i,--i,i++,i--,-i++,-i--);}例:main(){inti=8;printf("%d\n",++i);printf("%d\n",--i);printf("%d\n",i++);printf("%d\n",i--);printf("%d\n",-i++);printf("%d\n",-i--);}这两个程序的区别是用一个printf语句和多个printf语句输出。但从结果可以看出是不同的。为什么结果会不同呢?就是因为printf函数对输出表中各量求值的顺序是自右至左进行的。在第一例中,先对最后一项“-i--〞求值,结果为-8,然后i自减1后为7。再对“-i++〞项求值得-7,然后i自增1后为8。再对“i--〞项求值得8,然后i再自减1后为7。再求“i++〞项得7,然后i再自增1后为8。再求“--i〞项,i先自减1后输出,输出值为7。最后才求输出表列中的第一项“++i〞,此时i自增1后输出8。但是必须注意,求值顺序虽是自右至左,但是输出顺序还是从左至右,因此得到的结果是上述输出结果。格式化输出函数——printf函数Printf(〞格式描述串〞,输出项表列)“格式描述串〞由一系列“格式转换说明符〞组成。作用:向终端〔或输出设备〕输出假设干个任意类型的数据。格式:printf(“格式控制字符串〞[,输出列表]);说明:1、“格式控制字符串“是用双撇号引起来的字符串,包括三种信息:〔1〕格式说明:由%和格式字符组成。(如%d、%f)〔将输出的数据转换为指定的格式输出。〕〔2〕普通字符:需要按原样输出的字符。〔3〕转义字符:(如\t、\n、\b、\r等)2、“输出列表〞是需要输出的一些数据,可以是表达式。3、printf函数和putchar函数的区别:putchar函数只能输出字符,而且只能时一个字符;而printf函数可以输出多个数据,而且是任意类型。必须强调:“格式控制字符串〞中的格式字符,必须与“输出列表〞中输出项的数据类型兼容,否那么会引起输出错误。注:1〕整型和字符型可以通用。2〕\t\b连写,退一个制表位。如:printf(“abc\b\thello〞);输出结果为:abchello。例2#include<>voidmain(){inta,b;a=3;b=4;printf(“输出结果为:〞);printf(“%d%d\n〞,a,b);printf(“a=%d,b=%d\n〞,a,b);printf(“a+b=%d〞,a+b);}输出结果为:34a=3,b=4a+b=7_例1printf(“sum=%d\n%c〞,x,ch);普通字符格式说明转义字符如果x=100,ch=‘A’,那么下面的输出语句将输出什么结果?输出列表输出sum=100A_输出例1:体会printf函数中不同组成局部的输出形式例2:输出列表分别为空、变量或表达式时的输出。注:输出框中的下划线表示光标的位置。格式说明必须以%开始,以格式字符结束。一般形式如下:%[标志][宽度][.精度][l][格式字符]--nmd/f/c/u/s等长整型整数输出数据向左靠拢输出数据最小宽度对实数:输出小数点位数;对字符串:截取字符的个数格式说明的一般形式注意:m和n都是正整数。m指数据输出的最小宽度,假设指定的宽度m小于数据的实际宽度,那么按实际宽度输出。格式字符格式字符格式说明d,i以带符号的十进制数输出整数(正数不输出符号)c以字符形式输出,只输出一个字符f以小数形式输出单、双精度数,隐含6位小数e,E以指数形式输出实数o以八进制无符号形式输出整数(不输出前导符0)x,X以十六进制无符号形式输出整数(不输出前导符0x)…………附加格式说明字符字符说明l用于长整型数据输出,可加在doxu前面m数据最小宽度n对实数,表示输出n位小数;对字符串,表示截取的字符个数-输出数据向左靠拢格式字符必须强调:“格式控制字符串〞中的格式字符,必须与“输出列表〞中输出项的数据类型兼容,否那么会引起输出错误。注:整型和字符型可以通用。格式字符X,x:用X时,以大写字母输出a~f,否那么以小写输出a~f。#include<>main(){intnum1=123;longnum2=123456;/*用3种不同格式,输出int型数据num1的值*/printf("num1=%d,num1=%5d,num1=%-5d,num1=%2d\n",num1,num1,num1,num1);/*用3种不同格式,输出long型数据num2的值*/printf("num2=%ld,num2=%8ld,num2=%5ld\n",num2,num2,num2);printf("num1=%ld\n",num1);} 格式输出举例——d格式符对于整数,还可用八进制、无符号形式〔%o(小写字母o)〕和十六进制、无符号形式〔%x〕输出。对于unsigned型数据,也可用%u格式符,以十进制、无符号形式输出。所谓无符号形式是指,不管正数还是负数,系统一律当作无符号整数来输出。例如,printf("%d,%o,%x\n",-1,-1,-1);综合举例floatx,y;x=111111.111;y=222222.222;printf(“%f〞,x+y);整数局部全部输出,小数局部输出6位因有效位数为7位,因此后面数字不准确。floatx=123.456;printf(“%f〞,x);printf(“%10f〞,x);printf(“%10.2f〞,x);printf(“%.2f〞,x);printf(“%-10.2f〞,x);实数最常用的两种输出格式格式输出举例——f格式符对于实数,也可使用格式符%e,以标准指数形式输出:尾数中的整数局部大于等于1、小于10,小数点占一位,尾数中的小数局部占6位;指数局部占5位〔如e-003〕,其中e占一位,指数符号占一位,指数占3位,共计13位。也可使用格式符%g,让系统根据数值的大小,自动选择%f或%e格式、且不输出无意义的零。floatx=123.456;printf(“%e〞,x);printf(“%10e〞,x);printf(“%10.2e〞,x);printf(“%.2e〞,x);printf(“%-10.2e〞,x);综合举例1.234560e+0021.234560e+002

1.23e+0021.23e+0021.23e+002

输出:1.234560e+002指数局部尾数局部格式输出举例——e格式符265总宽度为13格式输出举例——c格式符#include<>voidmain(){charc='A';inti=65;printf("c=%c,%5c,%d\n",c,c,c);printf("i=%d,%c",i,i);}输出c=A,A,65i=65,A注意

在C语言中,整数可以用字符形式输出,字符数据也可以用整数形式输出。将整数用字符形式输出时,系统首先求该数与256的余数,然后将余数作为ASCII码,转换成相应的字符输出。

需要强调的是:在C语言中,整数可以用字符形式输出,字符数据也可以用整数形式输出。将整数用字符形式输出时,系统首先求该数与256的余数,然后将余数作为ASCII码,转换成相应的字符输出。#include<>main(){charc='A';inti=65;printf("c=%c,%5c,%d\n",c,c,c);printf("i=%d,%c",i,i);}格式输出举例——s格式符#include<>voidmain(){printf("%s,%5s,%-10s,","Internet","Internet","Internet");printf("%10.5s,%-10.5s,%4.5s\n","Internet","Internet","Internet");}Internet,Internet,Internet,Inter,Inter,Inter输出:系统输出字符和字符串时,不输出单引号和双引号。注意4.5.2scanf函数(格式输入函数)scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。1.scanf函数的一般形式scanf函数是一个标准库函数,它的函数原型在头文件“〞中,与printf函数相同,C语言也允许在使用scanf函数之前不必包含文件。scanf函数的一般形式为:scanf(“格式控制字符串〞,地址表列);其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址表列中给出各变量的地址。地址是由地址运算符“&〞后跟变量名组成的。例如:&a,&b分别表示变量a和变量b的地址。这个地址就是编译系统在内存中给a,b变量分配的地址。在C语言中,使用了地址这个概念,这是与其它语言不同的。应该把变量的值和变量的地址这两个不同的概念区别开来。变量的地址是C编译系统分配的,用户不必关心具体的地址是多少。变量的地址和变量值的关系如下:在赋值表达式中给变量赋值,如:a=567那么,a为变量名,567是变量的值,&a是变量a的地址。但在赋值号左边是变量名,不能写地址,而scanf函数在本质上也是给变量赋值,但要求写变量的地址,如&a。这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。例:main(){inta,b,c;printf("inputa,b,c\n");scanf("%d%d%d",&a,&b,&c);printf("a=%d,b=%d,c=%d",a,b,c);}在本例中,由于scanf函数本身不能显示提示串,故先用printf语句在屏幕上输出提示,请用户输入a、b、c的值。执行scanf语句,那么退出TC屏幕进入用户屏幕等待用户输入。用户输入789后按下回车键,此时,系统又将返回TC屏幕。在scanf语句的格式串中由于没有非格式字符在“%d%d%d〞之间作输入时的间隔,因此在输入时要用一个以上的空格或回车键作为每两个输入数之间的间隔。如:789或789

2.格式字符串格式字符串的一般形式为:%[*][输入数据宽度][长度]类型其中有方括号[]的项为任选项。各项的意义如下:1)类型:表示输入数据的类型,其格式符和意义如下表所示。2)“*〞符:用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。如:scanf("%d%*d%d",&a,&b);当输入为:123时,把1赋予a,2被跳过,3赋予b。3)宽度:用十进制整数指定输入的宽度(即字符数)。例如:scanf("%5d",&a);输入:12345678只把12345赋予变量a,其余局部被截去。又如:scanf("%4d%4d",&a,&b);输入:12345678将把1234赋予a,而把5678赋予b。4)长度:长度格式符为l和h,l表示输入长整型数据(如%ld)和双精度浮点数(如%lf)。h表示输入短整型数据。使用scanf函数还必须注意以下几点:1)scanf函数中没有精度控制,如:scanf("%5.2f",&a);是非法的。不能企图用此语句输入小数为2位的实数。2)scanf中要求给出变量地址,如给出变量名那么会出错。如scanf("%d",a);是非法的,应改为scnaf("%d",&a);才是合法的。3)在输入多个数值数据时,假设格式控制串中没有非格式字符作输入数据之间的间隔那么可用空格,TAB或回车作间隔。C编译在碰到空格,TAB,回车或非法数据(如对“%d〞输入“12A〞时,A即为非法数据)时即认为该数据结束。4)在输入字符数据时,假设格式控制串中无非格式字符,那么认为所有输入的字符均为有效字符。例如:scanf("%c%c%c",&a,&b,&c);输入为:def那么把'd'赋予a,''赋予b,'e'赋予c。只有当输入为:def时,才能把'd'赋于a,'e'赋予b,'f'赋予c。如果在格式控制中参加空格作为间隔,如:scanf("%c%c%c",&a,&b,&c);那么输入时各数据之间可加空格。例4.8:main(){chara,b;printf("inputcharactera,b\n");scanf("%c%c",&a,&b);printf("%c%c\n",a,b);}由于scanf函数"%c%c"中没有空格,输入MN,结果输出只有M。而输入改为MN时那么可输出MN两字符。例4.9:main(){chara,b;printf("inputcharactera,b\n");scanf("%c%c",&a,&b);printf("\n%c%c\n",a,b);}本例表示scanf格式控制串"%c%c"之间有空格时,输入的数据之间可以有空格间隔。5)如果格式控制串中有非格式字符那么输入时也要输入该非格式字符。例如:scanf("%d,%d,%d",&a,&b,&c);其中用非格式符“,〞作间隔符,故输入时应为:5,6,7又如:scanf("a=%d,b=%d,c=%d",&a,&b,&c);那么输入应为:a=5,b=6,c=76)如输入的数据与输出的类型不一致时,虽然编译能够通过,但结果将不正确。例:main(){inta;printf("inputanumber\n");scanf("%d",&a);printf("%ld",a);}由于输入数据类型为整型,而输出语句的格式串中说明为长整型,因此输出结果和输入数据不符。如改动程序如下:例:main(){longa;printf("inputalonginteger\n");scanf("%ld",&a);printf("%ld",a);}运行结果为:inputalonginteger12345678901234567890当输入数据改为长整型后,输入输出数据相等。例:main(){chara,b,c;printf("inputcharactera,b,c\n");scanf("%c%c%c",&a,&b,&c);printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);}输入三个小写字母,输出其ASCII码和对应的大写字母。例:main(){inta;longb;floatf;doubled;charc;printf("\nint:%d\nlong:%d\nfloat:%d\ndouble:%d\nchar:%d\n",sizeof(a),sizeof(b),sizeof(f),sizeof(d),sizeof(c));}输出各种数据类型的字节长度。格式输入函数——scanf函数Scanf(〞格式描述串〞,输入项表列);与printf()函数类似,“格式描述串〞也是由一系列“格式转换说明符〞所组成。作用:从终端〔或系统默认的输入设备〕输入假设干个任意类型的数据。格式:scanf(“格式控制字符串〞[,地址列表]);说明:1、“格式控制字符串〞与printf函数类似。可以包含以下三种类型的信息:格式说明:与printf类似,以%开始,以一个格式字符结束;空白字符〔空格、\t、\n〕:输入多个数据时的缺省分隔符,可以省略,在输入数据时可以以任一种空白字符分隔;普通字符〔照原样输入〕。2、“地址表列〞是由假设干个地址组成的列表,各地址之间用逗号分隔。如变量的地址表示为:&变量名。格式指示符的一般形式为:%[*][宽度][F|N][h|l]类型字符1.类型字符类型字符如表2-7所示。例如,在scanf()函数语句中,格式字符串“%f%f〞。2.宽度n指定该项输入数据所占列数为n。换句话说,读取输入数据中相应的n位,但按需要的位数赋给相应的变量,多余局部被舍弃。例如,scanf("%3c%3c",&ch1,&ch2);printf("ch1=%c,ch2=%c\n",ch1,ch2);假设输入“abcdefg〞,那么系统将读取的“abc〞中的“a〞赋给变量ch1;将读取的“def〞中的“d〞赋给变量ch2,所以printf()函数的输出结果为:ch1=a,ch2=d。3.赋值抑制字符*表示本输入项对应的数据读入后,不赋给相应的变量〔该变量由下一个格式指示符输入〕。例如,scanf("%2d%*2d%3d",&num1,&num2);printf("num1=%d,num2=%d\n",num1,num2);假设输入“123456789〞,那么系统将读取“12〞并赋值给num1;读取“34〞、但舍弃掉〔“*〞的作用〕;读取“567〞并赋值给num2。所以,printf()函数的输出结果为:num1=12,num2=567。4.类型修饰符──F、N、h、l。其含义与printf()中的一样,分别为远指针、近指针、短整型和长整型。inta,b;scanf(“%d%d〞,&a,&b);printf(“%d,%d〞,a,b);343,4inta,b;scanf(“%d,%d〞,&a,&b);printf(“%d,%d〞,a,b);3,43,4格式输入举例——d格式符注意举例当输入多个数据时,假设各个格式说明之间没有其他字符,那么系统默认使用空格键、回车键和Tab键进行间隔;假设格式说明之间有其他字符,那么必须照原样输入。343,4提示:假设输入三个以上数据,且各个格式说明之间没有其他字符,三种默认间隔方式可以混用。讨论:指定输入数据所占列数以及“*〞号附加说明符是否作要求?指定输入宽度的例子:inta,b;scanf(“%3d%3d〞,a,b);printf(“%d,%d〞,a,b);输入和输出123456123,456floata;scanf(“%f〞,&a);printf(“%f〞,a);输入:floata;scanf(“%3.2f〞,&a);printf(“%f〞,a);格式输入举例——f格式符注意举例当输入实型数据时,不能规定精度。如果指定了精度,编译时不会报错,但输入的数据将不可预知。输出:输入:输出:

提示:当输入实型数据时,如果指定了精度,编译时不会报错,但输入的数据将不可预知。注意:e、E、g、G的作用与f相同,相互之间可以互换。charch1,ch2,ch3;scanf(“%c%c%c〞,&ch1,&ch2,&ch3);printf(“ch1=%c,ch2=%c,ch3=%c\n〞,ch1,ch2,ch3);格式输入举例——c格式符注意举例使用格式说明符“%c〞输入单个字符时,空格和转义字符均作为有效字符被输入。提示:当输入实型数据时,如果指定了精度,编译时不会报错,但输入的数据将不可预知。输入:abcch1=a,ch2=,ch3=b输出:其中:ch2的值为空格。例:从键盘输入任意三个整型数,然后输出这三个数并计算其平均值。#include<>voidmain(){inta,b,c; /*定义整型变量名*/floataverage;/*定义实型变量名*/printf("\n请输入a、b和c的值:");scanf("%d%d%d",&a,&b,&c); printf("\na=%db=%dc=%d",a,b,c);average=〔a+b+c〕/3;printf(“\naverage=%f“,average);}例:求ax2+bx+c=0的根,设b2-4ac≥0。#include""#include"" main(){floata,b,c,disc,x1,x2,p,q;scanf("%f%f%f",&a,&b,&c);printf("a=%f\nb=%f\nc=%f\n",a,b,c);disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;printf("\nx1=%5.2f\nx2=%5.2f\n",x1,x2);}例1从键盘输入一个大写字母,转换成相应的小写字母输出。#include<>voidmain(){charc1,c2;//增强人机交互性。printf(“请输入一个大写字母:〞);c1=getchar();printf(“%c,%d\n〞,c1,c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论