1、 C 程序设计程序设计 电子教案电子教案教师:教师:葛龙葛龙主要内容:主要内容:C C语句的构成语句的构成 putcharputchar函数函数 getchargetchar函数函数 printfprintf函数函数 scanfscanf函数函数顺序程序设计顺序程序设计C C语句语句C C语言由函数构成,函数包含语言由函数构成,函数包含声明部分声明部分和和执行部分执行部分,执,执行部分即由语句组成。行部分即由语句组成。C C语言的语句用来向计算机系统发出操作指令,一个语语言的语句用来向计算机系统发出操作指令,一个语句经编译后产生若干条机器指令。句经编译后产生若干条机器指令。声明部分的内容不是语
2、句,如:声明部分的内容不是语句,如:int a;int a;不是不是C C语句,它语句,它不产生机器操作,而只是对变量的定义。不产生机器操作,而只是对变量的定义。C C语句的分类语句的分类控制语句:控制语句:C C共有共有9 9种控制语句,它们的名字全都是种控制语句,它们的名字全都是关键字关键字。if().else.if().else.for()for()while()while()do.while()do.while()continue continue break break switch switch goto goto return return函数调用语句:函数调用语句:由一个函数调
3、用加上分号构成。如由一个函数调用加上分号构成。如printf(printf(“Hello World!Hello World!”););表达式语句:表达式语句:由任何表达式加上分号构成。如由任何表达式加上分号构成。如 i+;i+;j=i,5,x+3;j=i,5,x+3;空语句:空语句:;C C语句的分类语句的分类复合语句:复合语句:用用 把一些语句括起来构成,又称为分程序。如把一些语句括起来构成,又称为分程序。如product*=i;product*=i;sum+=product/j;sum+=product/j;i+;i+;j+;j+;C C语句的分类语句的分类注意:在分程序的首部可以声明变
4、量。如注意:在分程序的首部可以声明变量。如 int temp;int temp;temp=x,x=y,y=temp;temp=x,x=y,y=temp;输出一个字符到终端屏幕。如输出一个字符到终端屏幕。如putchar(putchar(A A););putchar(putchar(nn););putchar(putchar(141141););char ch1,ch2,ch3;char ch1,ch2,ch3;ch1=ch1=1212;ch2=ch2=1515;ch3=ch3=A A+32;+32;putchar(ch1);putchar(ch1);putchar(ch2);putchar(c
5、h2);putchar(ch3);putchar(ch3);putcharputchar函数函数注意:使用注意:使用putcharputchar函数时,函数时,需先在程序首部添加一行包需先在程序首部添加一行包含命令含命令#include#include从键盘输入一个字符。如从键盘输入一个字符。如char chchar ch;ch=getchar();ch=getchar();getchargetchar函数函数注意:注意:getchargetchar没有参数没有参数类型为整型类型为整型返回值是字符的返回值是字符的ASCIIASCII码码输出给定格式类型的数据到终端屏幕。如输出给定格式类型的数据
6、到终端屏幕。如printf(printf(“%dt%f%dt%f”,i,x);,i,x);printfprintf函数函数printfprintf可以使用的格式字符有:可以使用的格式字符有:类型字符:类型字符:标志字符:标志字符:宽度:宽度:精度:精度:长度:长度:用以表示输出数据的类型。用以表示输出数据的类型。类型字符类型字符字符字符意意 义义d,id,i输输出十出十进进制制带带符号整数符号整数o o输输出八出八进进制无符号整数制无符号整数(不不输输出前出前缀缀0)0)x,Xx,X输输出十六出十六进进制无符号整数制无符号整数(不不输输出前出前缀缀Ox)Ox)u u输输出十出十进进制无符号整数
7、制无符号整数f f输输出小数形式的出小数形式的单单、双精度、双精度实实数数e,Ee,E输输出指数形式的出指数形式的单单、双精度、双精度实实数数g,Gg,G自自动选择动选择%f%f或或%e%e中中输输出出宽宽度短的来度短的来输输出出c c输输出字符出字符s s输输出字符串出字符串对数据的显示做一些设置。对数据的显示做一些设置。标志字符标志字符字符字符意意 义义-结结果左果左对齐对齐,右,右边边填空格填空格+输输出符号出符号(正号或正号或负负号号)空格空格输输出出值为值为正正时时冠以空格,冠以空格,为负时为负时冠以冠以负负号号#c,s,d,i,u c,s,d,i,u 无影响;无影响;o o 在在输
8、输出出时时加前加前缀缀0 0;x x 在在输输出出时时加前加前缀缀0 x0 x;e,f,g e,f,g 总总是是给给出小数点出小数点宽度:宽度:用十进制整数来表示输出的最少位数。若实际位数多用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或定义的宽度则补以空格或0 0。n n 输出宽度至少是输出宽度至少是n n,不够则用空格填充,不够则用空格填充 0n0n 输出宽度至少是输出宽度至少是n n,不够则用,不够则用0 0填充填充 *跳过对应的输出项跳过对应的输出项 精度:精度:精度格式符以
9、精度格式符以“.”开头,后跟十进制整数。如开头,后跟十进制整数。如果输出数字,则表示小数的位数;如果输出的是字符,果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。度数,则截去超过的部分。长度:长度:长度格式符为长度格式符为h,lh,l两种,两种,h h表示按短整型量输出,表示按短整型量输出,l l表示按长整型量输出。表示按长整型量输出。练习:练习:printf(printf(“%8d,%2dn%8d,%2dn”,a,a);,a,a);printf(printf(“%#x%#x”,
10、b);,b);printf(printf(“%f,%8f,%8.1f,%.2f,%.2en%f,%8f,%8.1f,%.2f,%.2en”,f,f,f,f,f,f,f,f,f,f););printf(printf(“%3cn%3cn”,ch);,ch);printf(printf(“%2.3s%2.3s”,”abcdefgabcdefg”););int a=1234;int a=1234;int b=-1;int b=-1;float f=123.456;float f=123.456;char ch=char ch=a a;上机时验证自己的答案。上机时验证自己的答案。按指定格式从键盘读入数据
11、,存入地址表指定的存储按指定格式从键盘读入数据,存入地址表指定的存储地址中,并按回车键结束。如地址中,并按回车键结束。如scanf(scanf(“%d%d%d%d”,&i,&j);,&i,&j);scanfscanf函数函数scanfscanf可以使用的格式字符和可以使用的格式字符和printfprintf的一样的一样scanfscanf一般用一般用空格空格、TABTAB或或回车键回车键作为分隔符作为分隔符scanfscanf在遇到分隔符或非法输入时认为该数据结束在遇到分隔符或非法输入时认为该数据结束scanfscanf函数中的后面部分应当是变量地址函数中的后面部分应当是变量地址上机时运行:上
12、机时运行:/*/*输入三角形边长求面积输入三角形边长求面积*/#include#include#include#include main()main()float a,b,c,s,area;float a,b,c,s,area;scanf(%f%f%f,&a,&b,&c);scanf(%f%f%f,&a,&b,&c);s=1.0/2*(a+b+c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(area=%7.2fn,area);printf(area=%7.2fn,area
13、);本章常见错误本章常见错误忘记定义变量:忘记定义变量:main()main()x=1;x=1;y=2;y=2;printf(printf(“%d%d”,x+y);,x+y);变量没赋值就引用:变量没赋值就引用:main()main()z=x+y;z=x+y;printf(printf(“%d%d”,z);,z);int x,y;int x,y;int x,y,z;int x,y,z;int x=1,y=2,z;int x=1,y=2,z;本章常见错误本章常见错误在在scanfscanf中忘记用地址运算符:中忘记用地址运算符:main()main()int a,b;int a,b;在在scanfscanf中加入中加入“nn”等多余字符:等多余字符:main()main()int a,b;int a,b;scanf(scanf(“%d%d%d%d”,&a,&,&a,&b);b);scanf(scanf(“%d%d%d%d”,a,b);,a,b);scanf(scanf(“%d%d%d%d ”,&a,&b);,&a,&b);scanf(scanf(“%d%d,%d%d”,&a,&b);,&a,&b);nnnn