C语言顺序结构程序设计资料课件_第1页
C语言顺序结构程序设计资料课件_第2页
C语言顺序结构程序设计资料课件_第3页
C语言顺序结构程序设计资料课件_第4页
C语言顺序结构程序设计资料课件_第5页
已阅读5页,还剩109页未读 继续免费阅读

下载本文档

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

文档简介

4.1

C语句概述

C程序的结构:

4.1

C语句概述C程序的结构:1C语句可分为以下三类:1.控制语句2.表达式语句3.复合语句C程序的执行部分是由语句组成的。程序的功能也是由执行语句实现的。C语句可分为以下三类:C程序的执行部分是由语句组成的。程序21.控制语句

控制语句用于控制程序的流程,以实现程序的各种结构方式。可分成以下三类:1)条件判断语句:ifelse语句、switch语句;2)循环执行语句:dowhile语句、while语句、for语句;3)转向语句:break语句、goto语句、continue语句、return语句。

1.控制语句控制语句用于控制程序的流程,以实现程序32.表达式语句表达式语句由表达式加上分号“;”组成。执行表达式语句表示一个运算或者操作。其一般形式:表达式;常见形式有赋值语句、函数调用语句和空语句例如:x=y+z;y+z;i++;赋值语句加法运算语句,但计算结果不能保留,无实际意义自增1语句,i值增12.表达式语句表达式语句由表达式加上分号“;”组成。41)

赋值语句赋值语句是由赋值表达式再加上分号构成的表达式语句。其一般形式为:

变量=表达式;

赋值语句的功能和特点与赋值表达式相同。是程序中使用最多的语句之一。

1)

赋值语句赋值语句是由赋值表达式再加上分号构5在赋值语句的使用中需要注意以下几点:1、赋值表达式的嵌套:赋值符右边的表达式又是一个赋值表达式:

变量=(变量=表达式);展开之后的一般形式为:

变量=变量=…=表达式;例如:a=b=c=d=e=5;按照赋值运算符的右接合性,等效于:e=5;d=e;c=d;b=c;a=b;在赋值语句的使用中需要注意以下几点:1、赋值表达式的嵌套:62、变量说明中给变量赋初值和赋值语句的区别:给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。例如:inta=5,b,c;3、在变量说明中,不允许连续给多个变量赋初值:

如下述说明是错误的:

inta=b=c=5;而赋值语句允许连续赋值:

a=b=c=5;×√2、变量说明中给变量赋初值和赋值语句的区别:×√72)函数调用语句函数调用语句由函数名、实际参数加上分号“;”组成。执行函数语句就是调用函数体(在后面函数中再详细介绍)。其一般形式为:

函数名(实际参数表);例如:printf("CProgram");

调用库函数,输出字符串。

2)函数调用语句函数调用语句由函数名、实际参数加上83)空语句空语句只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。例如while(getchar()!='\n');空语句本语句的功能是,只要从键盘输入的字符不是回车则重新输入。3)空语句空语句只有分号“;”组成的语句称为空语句93.复合语句复合语句把多个语句用括号{}括起来组成的一个语句称复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。例如:{x=y+z;a=b+c;printf(“%d%d”,x,a);}是一条复合语句。复合语句内的各条语句都必须以分号“;”结尾,在括号“}”外不能加分号。3.复合语句复合语句把多个语句用括号{}括起来组成的104.2printf函数(格式输出函数)1.printf(······)功能:按格式控制所指定的形式(向用户屏)输出输出项的值。C不提供输入输出语句,只调用printf(······)函数4.2printf函数(格式输出函数)1.prin11例:voidmain(){inta,b,sum;a=123;b=456;sum=a+b;printf(”a=%d,b=%d,c=%d\n”,a,b,sum);}结果:a=123,b=456,c=579

原样输出格式控制符与输出项表列一一对应例:原样格式控制符与输出项表列一一对应12

2.格式:

printf(格式控制,输出项表列)

输出项表列:由一个或多个输出项组成(若多个、它们之间用逗号隔开),常量、变量、函数、表达式、字符数组名等均可做输出项。

格式控制:是用双引号括起来的字符串,用来表示格式说明,也称为转换控制字符串。其中字符可由下面3类组成:普通字符(原样输出)转义字符(输出所表示的字符或实现其功能)格式说明:控制对应输出项的输出形式"a=""%d""\n"2.格式:"a=""%d""\n"13#include<math.h>voidmain(){intk=68;floatt=56.3;

printf(”%d\t%d\t%f\n”,k,k+123,sqrt(t));}结果:681917.503333转义字符,跳到下一区917转义字符,回车格式控制符,对应输出格式#include<math.h>转义字符,跳到下一区917转143.格式说明:控制对应输出项的输出形式(每个格式说明按先后顺序与输出项一一对应),输出结果中格式说明被对应的输出项值取代。(1)

格式说明基本形式:

①%d(或%i)、%o、%x(或%X)、%u、%c对应的输出项类型为字符型和整型。带符号十进制带符号八进制带符号十六进制无符号十进制字符3.格式说明:带符号带符号带符号无符号字15例:

voidmain(){inta=65;charc=’!’;printf(”%d,%c\n”,a,a);

printf(”c=%c,ItsASCIIcode=%d\n”,c,c);}结果:65,Ac=!,ItsASCIIcode=33例:

16main(){inta=-1;printf("%d,%o,%x,%u",a,a,a,a);}

/*假设int占2个字节*/-1的原码:1000,0000,0000,0001。-1在内存中的补码表示为:1111,1111,1111,1111=1,111,111,111,111,111=1,7,7,7,7,7=ffff输出:-1,177777,ffff,65535-1是十进制,177777是八进制,ffff是十六进制。%o、%x(或%X)、%u按unsigned型输出,且不带前导符号“o”和“x”main()%o、%x(或%X)、%u按unsigne17

②%s对应的输出项为字符串或字符数组例:

voidmain(){charname[]=”Jone”;

printf(”%s%s%c\n”,”Whois”,name,’?’);}结果:WhoisJone?字符串字符②%s对应的输出项为字符串或字符数组字符串字符18③%f、%e(或%E)、%g(或%G)对应float型输出项%lf、%le(或%E)、%lg(或%G)对应double型输出项%f——小数形式(6位小数)%e(或%E)——标准化指数形式(尾数的小数点前有一位且只有一位非零、6位小数)%g(或%G)——让系统自动选取%f(去掉小数点后多余的零)或%e中较短者——6位有效例:main(){floatf;f=123.46;printf(”%f,%e,%g\n”,f,f,f)}结果:123.459999,1.234600e+002,123.46数字③%f、%e(或%E)、%g(或%G)对应floa19(2)在格式说明基本形式中加附加格式说明符①若输出项为long型或unsignedlong型,则用下面格式说明控制:%ld、%lx、%lo、%lu若输出项为short型或unsignedshort型,则用下面格式说明控制:%hd、%hx、%ho、%hu②在格式说明%后加一个整数m——指定宽度为|m|位:若实际需要的位数>|m|位、则此m失效若m为无符号整数,则左边填空格若m为负整数,则右边填空格若m为带正号整数,则左边填空格且所输出的数据前有正负号(2)在格式说明基本形式中加附加格式说明符20例:

voidmain(){inta=12;longb=12345678;printf(”%6d\n”,a);printf(”%-6d\n”,a);printf(”%+6d\n”,a);printf(”%12ld\n”,b);printf(”%+8s\n”,”book”);}

1212+1212345678book字符串负数本身肯定带负符号,带正号必须这样写例:1212+1212345678book字符串负数本身21③在%s中间插入m.n:m含义同②,此m可省略、若省略则m=n。n为无符号整数、表示只输出对应字符串中左边n个字符。例:

voidmain(){printf(”%8.3s\n”,”book”);printf(”%.3s\n”,”book”);}输出:booboo宽度就是3③在%s中间插入m.n:m含义同②,此m可省略、若省略则m=22④在%f、%e(或%E)、%g(或%G)中间插入m.n:m含义同②,此m可省略、若省略则m=n。n为无符号整数、表示n位小数,其余四舍五例8:printf(”a=%+10.3lf\n”,123.45678);

输出:注:若②与④中m为正整数且m前加0,则输出的左边空位填0例9:printf(”a=%+010.3lf\n”,123.45678);输出:a=+123.457a=+00123.457四舍五入④在%f、%e(或%E)、%g(或%G)中间插入m.n23⑤在%x、%o、%lx、%lo的%后加#输出带前导的八进制或十六进制数据例10:voidmain(){intx=7281;printf(”%o,%#o\n”,x,x);printf(”%x,%#x\n”,x,x);}输出:16161,0161611c71,0x1c71注:格式控制中,连续的两个%表示一个%(不是格式说明符)

(16161)8(1c71)16⑤在%x、%o、%lx、%lo的%后加#输出带前导的八进制24C语言顺序结构程序设计资料课件25C语言顺序结构程序设计资料课件26Printf函数输出列表的运算顺序程序示例main(){inti=1,j=2;printf("%d%d%d",i+j,++i,i);}421求值顺序自右至左Printf函数输出列表的运算顺序程序示例42274.3

scanf函数(格式输入函数)1格式scanf(格式控制,输入项地址表列)地址:1)变量名前加&——变量在内存中的地址;2)数组名——数组在内存中的首地址。例如:&a,&b分别表示变量a和变量b的地址。这个地址就是编译系统在内存中给a,b变量分配的地址。一个或多个地址组成(若多个之间用逗号隔开)4.3scanf函数(格式输入函数)1格式s28变量的地址和变量值的关系如下:1、在赋值表达式中给变量赋值:如:a=5672、scanf函数在本质上也是给变量赋值,但要求写变量的地址:

如:scanf(”%d”,&a);

3、这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。变量名,不能写地址变量的值变量a的地址变量的地址和变量值的关系如下:变量名,不能写地址变量变量a的294.6.2功能:系统切换到用户屏、要求并等待用户按格式控制形式和顺序输入要赋给输入项的常量,按回车键结束,系统立即把所输入的赋给相应输入项。它是一个标准库函数,与printf函数相同,使用scanf函数之前不必包含stdio.h文件。4.6.3注意:格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址表列中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。不能是符号常量,不加单撇号或双撇号,直接输入一定要有4.6.2功能:系统切换到用户屏、要求并等待用户按格式控制30

例:

voidmain(){inta,b,sum;scanf(”%d,%d”,&a,&b);sum=a+b;printf(“sum=%d\n”,sum);}执行程序时应输入123,456↙如果要输入a=123;b=456;

例:

如果要输入31

使用scanf函数还必须注意以下几点:1)scanf函数中没有精度控制,如:scanf("%5.2f",&a);是非法的。不能用此语句输入小数为2位的实数。2)scanf中要求给出变量地址,如给出变量名则会出错。如scanf("%d",a);是非法的,应改为scnaf("%d",&a)。3)在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。C编译在碰到这些符号即认为该数据结束。

使用scanf函数还必须注意以下几点:324)在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。如:

scanf("%c%c%c",&a,&b,&c);输入为:则赋值:如果在格式控制中加入空格作为间隔,如:scanf("%c%c%c",&a,&b,&c);输入时数据之间可加空格。d

ef↙bcabcad

ef↙bca空格,输入多少个无关def↙4)在输入字符数据时,若格式控制串中无非格式字符,则认为所有335)如果格式控制串中有非格式字符则输入时也要输入该非格式字符。

scanf("%d,%d,%d",&a,&b,&c);输入时应为:

scanf("a=%d,b=%d,c=%d",&a,&b,&c);则输入应为:非格式符“,”作间隔符5,6,7↙a=5,b=6,c=7↙“a=“、”,”、“b=“、

”c=“为间隔符5)如果格式控制串中有非格式字符则输入时也要输入该非格式字符346)如输入的数据与输出的类型不一致,scanf("a=%d,b=%d,c=%d",&a,&b,&c);输入:虽然编译能够通过,但结果将不正确。scanf(”%d:%d”,&a,&b);应输入:

a=5;b=6;c=7↙123:456↙6)如输入的数据与输出的类型不一致,a=5;b=6;c=735

scanf(”%d,%d\n”,&a,&b);应输入:scanf(”%d%d”,&a,&b);应输入:123,456↙1↙按格式控制符输入123

456↙数据分割,多少个无关123,456↙按格式控制符输入123456↙数据分割,36scanf(”%d”,&a);scanf(”%d”,&b);应输入:或输入:scanf(”%d\n”,&a);scanf(”%d”,&b);应输入:或输入:123↙456↙123

456↙多少个无关123↙456↙123

456↙多少个无关scanf(”%d”,&a);scanf(”%d”,&b)37voidmain(){chara,b;

scanf("%c%c",&a,&b);printf("%c%c\n",a,b);

scanf("%c%c",&a,&b);printf("\n%c%c\n",a,b);}输入:显示:

输入:显示:MN↙MMN↙MNvoidmain()MN↙MMN↙MN38说明1.格式控制中不包含附加格式说明符m.n,一般不包含转义字符(\n可以)。2.double型输入项必须使用如下格式说明:%lf、%le、%lg(输出一样)3.*

——在格式说明%后插入*表示跳过它所指定的列数,如:scanf(”%d%*5%d\n”,&a,&b);输入:结果:用%f只能输出6位小数,输出10位用%20.10lf

12398765456↙a值:123b值:456如果只有%*d则表示本输入项再度入后不赋给相应的变量说明1.格式控制中不包含附加格式说明符m.n,一般不包含39voidmain(){inta;scanf("%d",&a);printf("%ld",a);}

输入:123显示:8061051main(){longa;scanf("%ld",&a);printf("%ld",a);}

输入:1234567890显示:1234567890voidmain()404、在格式说明基本形式中加附加格式说明符①l——若输出项为long型或unsignedlong型,则必须用下面格式说明控制:%ld、%lx、%lo、%lu②h——若输出项为short型或unsignedshort型,则可用下面格式说明控制:%hd、%hx、%ho、%hu。4、在格式说明基本形式中加附加格式说明符414.4

其它输入、输出函数1.getchar函数(字符输入函数)形式:getchar()功能:c=getchar();同scanf(”%c”,&c);注意:需在文件开头加#include”stdio.h”

输入一个字符,赋给变量c4.4其它输入、输出函数1.getchar函数(字符42例:#include<stdio.h>voidmain(){chara,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c);}

输入:$#↙abc结果:$#输入:$↙#↙abc结果:$#换行例:#include<stdio.h>输入:$#↙abc结43使用getchar函数还应注意几个问题:

1)getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。2)使用本函数前必须包含文件“stdio.h”。3)在TC屏幕下运行含本函数程序时,将退出TC屏幕进入用户屏幕等待用户输入。输入完毕再返回TC屏幕。使用getchar函数还应注意几个问题:442.

putchar函数(字符输出函数)

格式:putchar(一个整形或字符型输出项)

功能:同printf(”%c”,输出项),在显示器上输出单个字符。例如:putchar('A');(输出大写字母A)putchar(x);(输出字符变量x的值)putchar(‘\101’);(也是输出字符A)putchar('\n');(换行)对控制字符则执行控制功能,不在屏幕上显示。使用本函数前必须要用文件包含命令:#include<stdio.h>或#include“stdio.h”2.putchar函数(字符输出函数)格式:pu45例:#include<stdio.h>voidmain(){charc=’A’;putchar(66);putchar(’\53’);putchar(c+2);putchar(’\n’);putchar(’7’);putchar(’\n’);}结果:B+C7B+C7换行换行例:#include<stdio.h>B+C7换行换行463.puts函数puts函数(字符串、字符数组中字符串输出函数)一般形式:puts(char*str);功能:将字符串或字符数组中存放的字符串输出到显示器上。例如:putstr(“China\nBeijing\n”);3.puts函数puts函数(字符串、字符数组中字符串输出474.gets函数(字符串输入函数)gets函数(字符串输入函数)一般形式:gets(char*str);功能:接收从键盘输入的一个字符串,存放在字符数组中。例如:chars[81];gets(s);4.gets函数(字符串输入函数)gets函数(字符串输入484.5算法及其表示方法1算法:为解决一个问题而采取的方法和步骤称为“算法”。2算法的5大特性

(1)有穷性(有限的步骤)

(2)确定性(不能有歧义)(3)有0个或多个输入(4)有1个或多个输出(即算法必须得到结果)(5)有效性:算法的每个步骤都应当能有效执行,并能得到确定的结果。4.5算法及其表示方法1算法:493算法的表示方法常用的算法表示方法:自然语言,传统流程图,结构化流程图(N-S流程图),伪代码、计算机语言等。(1)用自然语言表示算法(2)

用流程图表示算法流程图表示算法:用一些图框表示各种操作,用箭头表示算法流程。用图形表示算法直观形象,易于理解。美国标准化协会ANSI规定了一些常用的流程图符号,已为世界各国程序工作者普遍采用。3算法的表示方法504.5算法及其表示方法4.5算法及其表示方法514.6顺序结构程序设计举例例:输入三角形的三边长,求三角形面积。为简单起见,设输入的三边长a,b,c能构成三角形。从数学知识已知求三角形面积的公式为:4.6顺序结构程序设计举例例:输入三角形的三边长,求三角52#include<math.h>main(){floata,b,c,s,area;scanf("%f%f%f",&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));/*sqrt()求平方根的函数*/

printf("a=%7.2f,b=%7.2f,c=%7.2f\n",a,b,c);printf("area=%8.3f\n",area);}

346<CR>a=3.00,b=4.00,c=6.00area=5.333#include<math.h>53求ax2+bx+c=0方程的根。a,b,c由键盘输入,设b2-4ac>0。一元二次方程的根为:

求ax2+bx+c=0方程的根。a,b,c由键盘输入,设b254#include<math.h>main(){floata,b,c,disc,p,q,x1,x2;scanf("%f%f%f",&a,&b,&c);/*输入a,b,c*/disc=b*b-4*a*c;/*计算δ*/p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;/*计算2个方程的根*/printf("x1=%f\nx2=%f\n",x1,x2);/*输出*/}132x1=-1.000000x2=-2.000000

#include<math.h>55C语言顺序结构程序设计资料课件56C语言顺序结构程序设计资料课件574.1

C语句概述

C程序的结构:

4.1

C语句概述C程序的结构:58C语句可分为以下三类:1.控制语句2.表达式语句3.复合语句C程序的执行部分是由语句组成的。程序的功能也是由执行语句实现的。C语句可分为以下三类:C程序的执行部分是由语句组成的。程序591.控制语句

控制语句用于控制程序的流程,以实现程序的各种结构方式。可分成以下三类:1)条件判断语句:ifelse语句、switch语句;2)循环执行语句:dowhile语句、while语句、for语句;3)转向语句:break语句、goto语句、continue语句、return语句。

1.控制语句控制语句用于控制程序的流程,以实现程序602.表达式语句表达式语句由表达式加上分号“;”组成。执行表达式语句表示一个运算或者操作。其一般形式:表达式;常见形式有赋值语句、函数调用语句和空语句例如:x=y+z;y+z;i++;赋值语句加法运算语句,但计算结果不能保留,无实际意义自增1语句,i值增12.表达式语句表达式语句由表达式加上分号“;”组成。611)

赋值语句赋值语句是由赋值表达式再加上分号构成的表达式语句。其一般形式为:

变量=表达式;

赋值语句的功能和特点与赋值表达式相同。是程序中使用最多的语句之一。

1)

赋值语句赋值语句是由赋值表达式再加上分号构62在赋值语句的使用中需要注意以下几点:1、赋值表达式的嵌套:赋值符右边的表达式又是一个赋值表达式:

变量=(变量=表达式);展开之后的一般形式为:

变量=变量=…=表达式;例如:a=b=c=d=e=5;按照赋值运算符的右接合性,等效于:e=5;d=e;c=d;b=c;a=b;在赋值语句的使用中需要注意以下几点:1、赋值表达式的嵌套:632、变量说明中给变量赋初值和赋值语句的区别:给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。例如:inta=5,b,c;3、在变量说明中,不允许连续给多个变量赋初值:

如下述说明是错误的:

inta=b=c=5;而赋值语句允许连续赋值:

a=b=c=5;×√2、变量说明中给变量赋初值和赋值语句的区别:×√642)函数调用语句函数调用语句由函数名、实际参数加上分号“;”组成。执行函数语句就是调用函数体(在后面函数中再详细介绍)。其一般形式为:

函数名(实际参数表);例如:printf("CProgram");

调用库函数,输出字符串。

2)函数调用语句函数调用语句由函数名、实际参数加上653)空语句空语句只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。例如while(getchar()!='\n');空语句本语句的功能是,只要从键盘输入的字符不是回车则重新输入。3)空语句空语句只有分号“;”组成的语句称为空语句663.复合语句复合语句把多个语句用括号{}括起来组成的一个语句称复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。例如:{x=y+z;a=b+c;printf(“%d%d”,x,a);}是一条复合语句。复合语句内的各条语句都必须以分号“;”结尾,在括号“}”外不能加分号。3.复合语句复合语句把多个语句用括号{}括起来组成的674.2printf函数(格式输出函数)1.printf(······)功能:按格式控制所指定的形式(向用户屏)输出输出项的值。C不提供输入输出语句,只调用printf(······)函数4.2printf函数(格式输出函数)1.prin68例:voidmain(){inta,b,sum;a=123;b=456;sum=a+b;printf(”a=%d,b=%d,c=%d\n”,a,b,sum);}结果:a=123,b=456,c=579

原样输出格式控制符与输出项表列一一对应例:原样格式控制符与输出项表列一一对应69

2.格式:

printf(格式控制,输出项表列)

输出项表列:由一个或多个输出项组成(若多个、它们之间用逗号隔开),常量、变量、函数、表达式、字符数组名等均可做输出项。

格式控制:是用双引号括起来的字符串,用来表示格式说明,也称为转换控制字符串。其中字符可由下面3类组成:普通字符(原样输出)转义字符(输出所表示的字符或实现其功能)格式说明:控制对应输出项的输出形式"a=""%d""\n"2.格式:"a=""%d""\n"70#include<math.h>voidmain(){intk=68;floatt=56.3;

printf(”%d\t%d\t%f\n”,k,k+123,sqrt(t));}结果:681917.503333转义字符,跳到下一区917转义字符,回车格式控制符,对应输出格式#include<math.h>转义字符,跳到下一区917转713.格式说明:控制对应输出项的输出形式(每个格式说明按先后顺序与输出项一一对应),输出结果中格式说明被对应的输出项值取代。(1)

格式说明基本形式:

①%d(或%i)、%o、%x(或%X)、%u、%c对应的输出项类型为字符型和整型。带符号十进制带符号八进制带符号十六进制无符号十进制字符3.格式说明:带符号带符号带符号无符号字72例:

voidmain(){inta=65;charc=’!’;printf(”%d,%c\n”,a,a);

printf(”c=%c,ItsASCIIcode=%d\n”,c,c);}结果:65,Ac=!,ItsASCIIcode=33例:

73main(){inta=-1;printf("%d,%o,%x,%u",a,a,a,a);}

/*假设int占2个字节*/-1的原码:1000,0000,0000,0001。-1在内存中的补码表示为:1111,1111,1111,1111=1,111,111,111,111,111=1,7,7,7,7,7=ffff输出:-1,177777,ffff,65535-1是十进制,177777是八进制,ffff是十六进制。%o、%x(或%X)、%u按unsigned型输出,且不带前导符号“o”和“x”main()%o、%x(或%X)、%u按unsigne74

②%s对应的输出项为字符串或字符数组例:

voidmain(){charname[]=”Jone”;

printf(”%s%s%c\n”,”Whois”,name,’?’);}结果:WhoisJone?字符串字符②%s对应的输出项为字符串或字符数组字符串字符75③%f、%e(或%E)、%g(或%G)对应float型输出项%lf、%le(或%E)、%lg(或%G)对应double型输出项%f——小数形式(6位小数)%e(或%E)——标准化指数形式(尾数的小数点前有一位且只有一位非零、6位小数)%g(或%G)——让系统自动选取%f(去掉小数点后多余的零)或%e中较短者——6位有效例:main(){floatf;f=123.46;printf(”%f,%e,%g\n”,f,f,f)}结果:123.459999,1.234600e+002,123.46数字③%f、%e(或%E)、%g(或%G)对应floa76(2)在格式说明基本形式中加附加格式说明符①若输出项为long型或unsignedlong型,则用下面格式说明控制:%ld、%lx、%lo、%lu若输出项为short型或unsignedshort型,则用下面格式说明控制:%hd、%hx、%ho、%hu②在格式说明%后加一个整数m——指定宽度为|m|位:若实际需要的位数>|m|位、则此m失效若m为无符号整数,则左边填空格若m为负整数,则右边填空格若m为带正号整数,则左边填空格且所输出的数据前有正负号(2)在格式说明基本形式中加附加格式说明符77例:

voidmain(){inta=12;longb=12345678;printf(”%6d\n”,a);printf(”%-6d\n”,a);printf(”%+6d\n”,a);printf(”%12ld\n”,b);printf(”%+8s\n”,”book”);}

1212+1212345678book字符串负数本身肯定带负符号,带正号必须这样写例:1212+1212345678book字符串负数本身78③在%s中间插入m.n:m含义同②,此m可省略、若省略则m=n。n为无符号整数、表示只输出对应字符串中左边n个字符。例:

voidmain(){printf(”%8.3s\n”,”book”);printf(”%.3s\n”,”book”);}输出:booboo宽度就是3③在%s中间插入m.n:m含义同②,此m可省略、若省略则m=79④在%f、%e(或%E)、%g(或%G)中间插入m.n:m含义同②,此m可省略、若省略则m=n。n为无符号整数、表示n位小数,其余四舍五例8:printf(”a=%+10.3lf\n”,123.45678);

输出:注:若②与④中m为正整数且m前加0,则输出的左边空位填0例9:printf(”a=%+010.3lf\n”,123.45678);输出:a=+123.457a=+00123.457四舍五入④在%f、%e(或%E)、%g(或%G)中间插入m.n80⑤在%x、%o、%lx、%lo的%后加#输出带前导的八进制或十六进制数据例10:voidmain(){intx=7281;printf(”%o,%#o\n”,x,x);printf(”%x,%#x\n”,x,x);}输出:16161,0161611c71,0x1c71注:格式控制中,连续的两个%表示一个%(不是格式说明符)

(16161)8(1c71)16⑤在%x、%o、%lx、%lo的%后加#输出带前导的八进制81C语言顺序结构程序设计资料课件82C语言顺序结构程序设计资料课件83Printf函数输出列表的运算顺序程序示例main(){inti=1,j=2;printf("%d%d%d",i+j,++i,i);}421求值顺序自右至左Printf函数输出列表的运算顺序程序示例42844.3

scanf函数(格式输入函数)1格式scanf(格式控制,输入项地址表列)地址:1)变量名前加&——变量在内存中的地址;2)数组名——数组在内存中的首地址。例如:&a,&b分别表示变量a和变量b的地址。这个地址就是编译系统在内存中给a,b变量分配的地址。一个或多个地址组成(若多个之间用逗号隔开)4.3scanf函数(格式输入函数)1格式s85变量的地址和变量值的关系如下:1、在赋值表达式中给变量赋值:如:a=5672、scanf函数在本质上也是给变量赋值,但要求写变量的地址:

如:scanf(”%d”,&a);

3、这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。变量名,不能写地址变量的值变量a的地址变量的地址和变量值的关系如下:变量名,不能写地址变量变量a的864.6.2功能:系统切换到用户屏、要求并等待用户按格式控制形式和顺序输入要赋给输入项的常量,按回车键结束,系统立即把所输入的赋给相应输入项。它是一个标准库函数,与printf函数相同,使用scanf函数之前不必包含stdio.h文件。4.6.3注意:格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址表列中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。不能是符号常量,不加单撇号或双撇号,直接输入一定要有4.6.2功能:系统切换到用户屏、要求并等待用户按格式控制87

例:

voidmain(){inta,b,sum;scanf(”%d,%d”,&a,&b);sum=a+b;printf(“sum=%d\n”,sum);}执行程序时应输入123,456↙如果要输入a=123;b=456;

例:

如果要输入88

使用scanf函数还必须注意以下几点:1)scanf函数中没有精度控制,如:scanf("%5.2f",&a);是非法的。不能用此语句输入小数为2位的实数。2)scanf中要求给出变量地址,如给出变量名则会出错。如scanf("%d",a);是非法的,应改为scnaf("%d",&a)。3)在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。C编译在碰到这些符号即认为该数据结束。

使用scanf函数还必须注意以下几点:894)在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。如:

scanf("%c%c%c",&a,&b,&c);输入为:则赋值:如果在格式控制中加入空格作为间隔,如:scanf("%c%c%c",&a,&b,&c);输入时数据之间可加空格。d

ef↙bcabcad

ef↙bca空格,输入多少个无关def↙4)在输入字符数据时,若格式控制串中无非格式字符,则认为所有905)如果格式控制串中有非格式字符则输入时也要输入该非格式字符。

scanf("%d,%d,%d",&a,&b,&c);输入时应为:

scanf("a=%d,b=%d,c=%d",&a,&b,&c);则输入应为:非格式符“,”作间隔符5,6,7↙a=5,b=6,c=7↙“a=“、”,”、“b=“、

”c=“为间隔符5)如果格式控制串中有非格式字符则输入时也要输入该非格式字符916)如输入的数据与输出的类型不一致,scanf("a=%d,b=%d,c=%d",&a,&b,&c);输入:虽然编译能够通过,但结果将不正确。scanf(”%d:%d”,&a,&b);应输入:

a=5;b=6;c=7↙123:456↙6)如输入的数据与输出的类型不一致,a=5;b=6;c=792

scanf(”%d,%d\n”,&a,&b);应输入:scanf(”%d%d”,&a,&b);应输入:123,456↙1↙按格式控制符输入123

456↙数据分割,多少个无关123,456↙按格式控制符输入123456↙数据分割,93scanf(”%d”,&a);scanf(”%d”,&b);应输入:或输入:scanf(”%d\n”,&a);scanf(”%d”,&b);应输入:或输入:123↙456↙123

456↙多少个无关123↙456↙123

456↙多少个无关scanf(”%d”,&a);scanf(”%d”,&b)94voidmain(){chara,b;

scanf("%c%c",&a,&b);printf("%c%c\n",a,b);

scanf("%c%c",&a,&b);printf("\n%c%c\n",a,b);}输入:显示:

输入:显示:MN↙MMN↙MNvoidmain()MN↙MMN↙MN95说明1.格式控制中不包含附加格式说明符m.n,一般不包含转义字符(\n可以)。2.double型输入项必须使用如下格式说明:%lf、%le、%lg(输出一样)3.*

——在格式说明%后插入*表示跳过它所指定的列数,如:scanf(”%d%*5%d\n”,&a,&b);输入:结果:用%f只能输出6位小数,输出10位用%20.10lf

12398765456↙a值:123b值:456如果只有%*d则表示本输入项再度入后不赋给相应的变量说明1.格式控制中不包含附加格式说明符m.n,一般不包含96voidmain(){inta;scanf("%d",&a);printf("%ld",a);}

输入:123显示:8061051main(){longa;scanf("%ld",&a);printf("%ld",a);}

输入:1234567890显示:1234567890voidmain()974、在格式说明基本形式中加附加格式说明符①l——若输出项为long型或unsignedlong型,则必须用下面格式说明控制:%ld、%lx、%lo、%lu②h——若输出项为short型或unsignedshort型,则可用下面格式说明控制:%hd、%hx、%ho、%hu。4、在格式说明基本形式中加附加格式说明符984.4

其它输入、输出函数1.getchar函数(字符输入函数)形式:getchar()功能:c=getchar();同scanf(”%c”,&c);注意:需在文件开头加#include”stdio.h”

输入一个字符,赋给变量c4.4其它输入、输出函数1.getchar函数(字符99例:#include<stdio.h>voidmain(){chara,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c);}

输入:$#↙abc结果:$#输入:$↙#↙abc结果:$#换行例:#include<stdio.h>输入:$#↙abc结100使用getchar函数还应注意几个问题:

1)getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。2)使用本函数前必须包含文件“stdio.h”

温馨提示

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

评论

0/150

提交评论