C语言数据输入输出、赋值、顺序程序设计.ppt
C语言语言数据输入输出、赋值、数据输入输出、赋值、顺序结构程序设计顺序结构程序设计徐艳艳徐艳艳1本次课程所讲内容本次课程所讲内容l数据的输入输出数据的输入输出l赋值表达式和赋值语句赋值表达式和赋值语句l顺序程序设计举例顺序程序设计举例2本次课程所讲内容本次课程所讲内容l数据的输入输出数据的输入输出l赋值表达式和赋值语句赋值表达式和赋值语句l顺序程序设计举例顺序程序设计举例3数据输入输出库函数数据输入输出库函数lC语语言言本本身身不不提提供供输输入入输输出出语语句句,输输入入输输出出操操作作需需要要调调用用函函数数库库中中的的标标准准输输入入输出函数输出函数l格式输入输出函数:格式输入输出函数:scanf,printfl字符输入输出函数:字符输入输出函数:getchar,putcharll调调用用标标准准输输入入输输出出函函数数时时,应应该该在在程程序序的开头引用的开头引用“头文件头文件”l#include 4为什么使用库函数?为什么使用库函数?编辑编辑编译编译链接链接运行运行.c.c.obj.obj.exe.exe库函数中的函数已被编库函数中的函数已被编译成目标文件译成目标文件(.obj)(.obj),到链接阶段再参与调试到链接阶段再参与调试5格式输出函数格式输出函数6l格式输出函数格式输出函数 printf 的一般形式的一般形式lprintf(格式控制格式控制,输出列表输出列表)lprintf(area=%f,circle=%f,area,circle)l格式控制格式控制l格式说明:由格式说明:由“%”和和格式字符格式字符组成,将数据组成,将数据按照指定的格式输出按照指定的格式输出l普通字符:按照原样输出普通字符:按照原样输出l输出列表输出列表l输出列表中的内容按顺序代替输出列表中的内容按顺序代替“格式控制格式控制”中的中的“格式字符格式字符”7#include void main()int a=1,b;b=a+;printf(a=%d,b=%dn,a,b);printf(The sum of a+b=%dn,a+b);printf(The step is%dn,5);c4_1.c输出列表中的内容可以是常量、输出列表中的内容可以是常量、变量或表达式变量或表达式程序运行结果:程序运行结果:a=2,b=1The sum of a+b=3The step is 58printf格式字符格式字符格式字符格式字符说说 明明%d带符号十进制整数带符号十进制整数%u无符号十进制整数无符号十进制整数%f小数形式的浮点数小数形式的浮点数%e,%E指数形式的浮点数指数形式的浮点数%c单个字符单个字符%s字符串字符串%o无符号八进制整数无符号八进制整数%x,%X无符号十六进制整数无符号十六进制整数%g,%G选用选用%f或者或者%e(E)中较短的格式中较短的格式9c4_2.c#include void main()int a=-1,b=-1;printf(a=%d,b=%un,a,b);程序运行结果为:程序运行结果为:a=-1,b=4294967295%d,%u举例举例10c4_3.c#include void main()int a=12,b=-1;printf(a8=%o,b16=%xn,a,b);printf(a10=%d,b10=%dn,a,b);程序运行结果:程序运行结果:a8=14,b16=f f f f f f f fa10=12,b10=-1%o,%x举例举例变为变为%X会怎么样?会怎么样?11c4_4.c#include void main()char c=a;int i=97;printf(%c,%dn,c,c);printf(%c,%dn,i,i);printf(%sn,CHINA);程序运行结果:程序运行结果:a,97a,97CHINA%c,%s举例举例12c4_5.c#include void main()float x,y;x=(float)111111.111;y=(float)222222.222;printf(%fn,x+y);程序运行结果:程序运行结果:333333.3281257 7位有效数字位有效数字无意义无意义整数部分全部输出,并输整数部分全部输出,并输出出6 6位小数位小数有效位数为有效位数为7 7位位%f格式输出格式输出float型变量举例型变量举例13c4_6.c#include void main()double x,y;x=11111111.11111111;y=22222222.22222222;printf(%fn,x+y);程序运行结果:程序运行结果:33333333.333333有效位数为有效位数为15151616位位%f%f只能输出只能输出6 6位小数位小数%f格式输出格式输出double型型变量举例变量举例14c4_7.c#include void main()double i;i=123.45672;printf(%e,i);程序运行结果:程序运行结果:1.234567e+002小小数数部部分分输输出出7 7位位,加加上上小数点共小数点共8 8列列指指 数数 部部 分分占占5 5列列变为变为%E会怎么样?会怎么样?%e举例举例15printf的附加格式说明字符的附加格式说明字符字字 符符说说 明明m输出数据的宽度输出数据的宽度n对浮点数,表示输出对浮点数,表示输出n位小数;对位小数;对字符串,表示截取的字符个数字符串,表示截取的字符个数-输出的数字或字符向左靠输出的数字或字符向左靠h用于输出短整型数用于输出短整型数16c4_8.c#include void main()int a=123,b;char c1=u;b=a*a;printf(%4d,%4dn,a,b);printf(%4cn,c1);程序运行结果:程序运行结果:123,15129 u%md,%mc举例举例变为变为%-4d会怎么样?会怎么样?17字符串的附加格式输出字符串的附加格式输出l%ms:输输出出的的字字符符串串占占m列列,若若字字符符串串长长大大于于m,将将字字符符串串全全部部输输出出;否否则则,左左端端补补空空格格l%-ms:若若字字符符串串长长小小于于m,字字符符串串向向左左靠靠,右端补空格右端补空格l%m.ns:输输出出占占m列列,但但只只取取字字符符串串中中左左端端的的n个个字字符符,并并且且输输出出在在m列列的的右右侧侧,左左端端补空格补空格l%-m.ns:m,n含含义义同同上上,n个个字字符符输输出出在在m列的左侧,右端补空格列的左侧,右端补空格18c4_9.c#include void main()printf(%-3s,%3sn,CHINA,CHINA);printf(%-6s,%6sn,CHINA,CHINA);printf(%-5.3s,%0.4s,%7.2sn,CHINA,CHINA,CHINA);CHINA,CHINACHINA ,CHINACHI ,CHIN,CH 程序运行结果程序运行结果%m.ns,%-m.ns举例举例19c4_10.c#include void main()float f;f=(float)123.456;printf(%f%10f%10.2f%.2f%-10.2fn,f,f,f,f,f);printf(%-10.2f,%10.2fn,f,f);程序运行结果:程序运行结果:123.456001123.456001 123.46123.46123.46 123.46 ,123.46%m.nf,%-m.nf举例举例20c4_11.c#include void main()float f;f=(float)123.456;printf(%e,%10e,%10.2e,%.2e,%-10.2e,f,f,f,f,f);printf(%-10.2e,%10.2en,f,f);%m.ne,%-m.ne举例举例21%hu举例举例#include void main()short a=-1,b=-1;printf(a=%d,b=%hun,a,b);程序运行结果为:程序运行结果为:a=-1,b=6553522格式输入函数格式输入函数23l格式输入函数格式输入函数 scanf 的一般形式的一般形式lscanf(“格式控制格式控制”,地址列表地址列表)lscanf(“r=%f,&r)lscanf(“u=%lf,&r)l格式控制格式控制l格式说明:由格式说明:由“%”和和格式字符格式字符组成,将数据组成,将数据按照指定的格式输入按照指定的格式输入l普通字符:按照原样输入普通字符:按照原样输入l地址列表地址列表l由若干个地址组成的列表由若干个地址组成的列表24scanf函数举例函数举例c4_12.c#include void main()int a,b,c;scanf(%d%d%d,&a,&b,&c);printf(a=%d,b=%d,c=%dn,a,b,c);错误做法:错误做法:输入输入345345(数字之间没有空格)(数字之间没有空格)输入输入3,4,53,4,525scanf函数举例函数举例c4_13.c#include#define PI 3.1415926void main()float r,area;scanf(The radius is%f,&r);area=(float)PI*r*r;printf(area=%fn,area);应该输入以下内容:应该输入以下内容:The radius is 3.6运行结果:运行结果:area=40.71503726scanf函数举例函数举例c4_14.c#include void main()char c1,c2,c3;scanf(%c%c%c,&c1,&c2,&c3);printf(c1=%c,c2=%c,c3=%cn,c1,c2,c3);printf(c1=%d,c2=%d,c3=%dn,c1,c2,c3);如如 果果 想想 给给 c1,c2,c3c1,c2,c3分分 别别 赋赋 值值a,a,b,b,cc,应应该该输输入入以以下下内内容容:abc(abc(字字符符之之间间没没有有空格)空格)abcabc之之间间有有空空格格或或者者其其他他符符号号会会怎么样?怎么样?27scanf函数举例函数举例c4_15.c#include void main()int a;char b;float c;scanf(%d%c%f,&a,&b,&c);printf(a=%d,b=%c,c=%fn,a,b,c);输入输入:1234a123o.26:1234a123o.26输出输出:a=1234,b=a,c=123.000000:a=1234,b=a,c=123.00000028scanf格式字符格式字符格式字符格式字符说说 明明%d带符号十进制整数带符号十进制整数%u无符号十进制整数无符号十进制整数%f小数形式的浮点数小数形式的浮点数%e,%E指数形式的浮点数指数形式的浮点数%c单个字符单个字符%s字符串字符串%o无符号八进制整数无符号八进制整数%x,%X无符号十六进制整数无符号十六进制整数%g,%G选用选用%f或者或者%e(E)中较短的格式中较短的格式29scanf的附加格式说明字符的附加格式说明字符字字 符符说说 明明l用于输入长整型以及用于输入长整型以及double型数据型数据m指定输入数据的列宽指定输入数据的列宽*输入时不将输入时不将*指定的列数中的内容赋指定的列数中的内容赋给任何变量给任何变量(比如比如%*2d)30字符输入字符输入/输出函数输出函数字符输入函数:字符输入函数:getchar()字符输出函数:字符输出函数:putchar()31c4_16.c#include void main()char c1,c2;c1=getchar();c2=getchar();putchar(c1);putchar(n);putchar(c2);putchar(n);输入:输入:ab输出:输出:a b32赋值运算符和赋值赋值运算符和赋值33赋值运算符赋值运算符l赋值运算符赋值运算符“=”l复合的赋值运算符复合的赋值运算符la+=3a=a+3la-=3 a=a-3lx*=y+8 x=x*(y+8)lx%=3 x=x%334变量赋初值变量赋初值lint a=3;lint a,b,c=5lint a=5,b=5,c=5;#include void main()int a=1,b;b=a+1;char c1=u;printf(%d,%c,b,c1);错误错误35顺序结构程序设计顺序结构程序设计36顺序结构顺序结构l所有语句按自上而下所有语句按自上而下的顺序执行的顺序执行l不发生流程的跳转不发生流程的跳转ABab37顺序程序结构设计顺序程序结构设计#include void main()int a,b,sum;a=123;b=456;sum=a+b;printf(sum is%dn,sum);38下面的程序是顺序结构吗?下面的程序是顺序结构吗?int max(int x,int y)int z;if(xy)z=x;elsez=y;return(z);char grade;scanf(%c,&grade);switch(grade)case A:printf(85100n);case B:printf(7084n);case C:printf(6069n);case D:printf(60n);default:printf(errorn);39下面的程序是顺序结构吗?下面的程序是顺序结构吗?l(求(求1+2+100=?)#include void main()int i,sum;i=1;sum=0;while(i=100)sum=sum+i;i=i+1;printf(sum=%dn,sum);40课下练习课下练习l书上的练习题书上的练习题41Thanks!42