【文档说明】C语言最简单的C程序设计课件.ppt,共(53)页,199.500 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44614.html
以下为本文档部分文字说明:
C语言程序设计最简单的C程序设计顺序程序设计一、C语句概述[案例]已知圆半径radius=1.5,求圆周长和圆面积。#include<stdio.h>#definePi=3.1415926main(){floatradius
,length,area;radius=1.5;length=2*Pi*radius;/*求圆周长*/area=Pi*radius*radius;/*求圆面积*/printf(“radius=%f\n”,radius);/*输
出圆半径*/printf(“length=%7.2f,area=%7.2f\n”,length,area);/*输出圆周长、面积*/}预处理命令全局变量函数C语言提供的语句分五大类:(1)控制语句,完成控制功能
①if()~else~条件②for()~循环③while()~循环④do~while()循环⑤continue结束本次循环⑥break中止switch或循环⑦switch多分支选择⑧goto转向⑨return从函数返回(2)函数调用语句函数名(参数);如:printf(“ThisisaC
program.\n”);max(a,b);(3)表达式语句在表达式后加“;”构成a=6a=5;如i=i+2是表达式而i=i+2;是表达式语句x+yx+y;(4)空语句;无任何操作,但合法,可用于循环中的转折(5)复合
语句用{}将若干语句括起来而构成的语句。如:if(x>y)与if(x>y)意义不同z=x;{z=x;x++;x++;y--;y--;}二、赋值语句由赋值表达式与“;”组成。形式:变量=表达式;功能:计算表达式的值,然后赋给
左边的变量。说明:1.赋值号与数学上的等号意义不同,如x=x+2;2.在C语言中,赋值号作为赋值运算符使用,具有计算的功能。3.赋值表达式可以包含在其它表达式之中。如:if((a=b)>0)t=a;但赋值语句不能包含在条件表
达式中,如:if((a=b;)>0)t=a;三、数据输入输出(1)输入输出:相对主机而言的输入设备:键盘、扫描仪、磁盘、光盘等输出设备:显示器、打印机、磁盘等。(2)C本身不提供I/O语句:①I/O操作通过函数实现,C标准函数库中提供了一些I/O函数,如prin
tf,scanf等,它们不是C的关键字,而是函数名。②好处是:使编译系统简化、通用性强、可移植性好。C函数库提供的一些标准I/O函数是以终端设备为I/O对象的,如:putchar,getchar,printf,scanf,puts,gets。(3)使用库函数时:用预编译命令#incl
ude将有关头文件包含到用户源文件中,在头文件中包含了与用到的函数有关的信息,如使用输入输出函数时要用到stdio.h文件。#include放在程序开头如#include“stdio.h”或#include<stdio.h>注意:区别#include语句中用<>和’’的区别。(2)C本身不提供I
/O语句:①I/O操作通过函数实现,C标准函数库中提供了一些I/O函数,如printf,scanf等,它们不是C的关键字,而是函数名。②好处是:使编译系统简化、通用性强、可移植性好。C函数库提供的一些标准I/O函数是以终端设备为I/O
对象的,如:putchar,getchar,printf,scanf,puts,gets。四、字符数据的输入输出功能:向输出设备输出一个字符。形式:putchar(参数)其中,参数可以是整型或字符型变量或常量。例如:putchar(97);putchar(„a‟);都输出字符a,c
harc=„b‟;putchar(c);输出字符b。注意:在C语言中,除printf和scanf两个函数外,使用其它I/O函数时,都必须在源文件的开始处加上预编译命令:#include“stdio.h”意义:将标准I/O
函数库中的函数包含到所在文件中来4.1、putchar(字符输出函数)#include<stdio.h>main(){chara,b,c;a=„B‟;b=„O‟;c=„Y‟;putchar(a);putchar(b);putchar(c);}运行结果:BOY若无文件包
含编译预处理,在编译连接时系统将指出:LinkingError:Undefinesymbol„_putchar‟inmoduelXXX.c另:putchar()函数还可以输出控制字符如:‘\n‟或‘\012’‘\a‟或‘\007’‘\r‟或‘\015’换行
响铃回车#include“stdio.h”main(){chara=„A‟,b=„B‟,c=„\007‟;putchar(a);putchar(b);putchar(„\n‟);putchar(c);sleep(3);putchar
(c);putchar(65);putchar(66);putchar(„\007‟);sleep(3);putchar(„\007‟);}运行结果:AB响延时3秒响AB响延时3秒响功能:从键盘输入一个字符形式:getchar()特点
:无参数,其值是从输入设备得到的字符。#include“stdio.h”main(){charc;c=getchar();putchar(c);putchar(getchar());printf(“%
c\n”,getchar());}输入:abc输出:abc如果一个一个输入呢?换行符4.2getchar函数五、格式输入与输出功能:向输出设备输出若干个任意类型的数据1、printf函数的一般格式printf(格式控制,输出表列)(1)格式控制:由双引号括起来的一
串字符(格式说明和普通字符)。①格式说明:由%和格式字符(c,d,u,f,e,o,x,s,g)组成。②普通字符:需要原样输出的字符。(2)输出表列:需要桉格式说明所指定的格式输出的数据,可以是常量、变量、表达式。格式控制一般形式:printf(参数1,参数2,…参数n)将参数2
~n按参数1的格式输出。中间由逗号隔开。5.1printf格式输出函数2、格式字符(1)d格式符:输出十进制整数①%d:按十进制数据的实际长度输出。②%md:m为指定输出字段的宽度。<m时数据左边补空格当数据位数>m时按数据的实际位数输出。main(){inta=123,b=12345
;printf(“a=%4d,b=%4d\n”,a,b);}运行结果:a=_123,b=12345③%ld:输出长整型数据①对于长整型数据只能按长整型的格式说明符输出,否则,输出的数据有误。②在长整型格式说
明中,还可指出其输出宽度.main(){longa=134579;printf(“a=%d\n”,a);}结果:a=3507(2)o格式符,输出八进制数特点:无论是正是负,输出的都是不带符号的数(3)x格式符,输出十六进制数特点:无论数据是正是负,输出的都是不带符号的数(4)u格式符,输出无
符号数据①无符号类型的数据可用%d,%u,%o,%x格式输出。②带符号的char和int整型数据可用%u格式输出。③单、双精度实型数据用%u格式输出时,则得到错误的结果。如果实际值的范围超出格式的范围,输出结果不正确。(5)C格式符,输出一个字符字符型数据:占一个字节,数据表示范围:0~2
55例main(){charc=„a‟;inti=97,j=355,k=232;printf(%c,%c,%c,%c\n”,c,i,j,k);printf(%d,%d,%d,%d\n”,c,i,j,k);}输出结果:a,a,c,
ф97,97,355,232对于整型数据,若用字符格式输出,由于整型数据占两个字节,如果整型数据的值在0~255之间时,则输出对应的字符,若其值在256~32767之间时,则截取其低8位部分,然后输出对应的字符.(6)S格式符,用来输出一个字符串,有几种方
法①%s:按实际长度输出字符串。②%ms:m为列宽当串长>m时,按实际长度输出当串长<m时,串靠右输出,左边补空格。③%-ms:m为列宽当串长>m时,按串实际长度输出,当串长<m时,串靠左输出,右边补空格。④%m.ns:输出占m列,但只取串的左边n个字符在m列的右端输出,左端补空
格。⑤%-m.ns:输出串占m列,但只取串的左边n个字符在m列的左端输出,右端补空格。注意:当n>m时,m自动取n值,m只能是整常量,而不能是变量或表达式。main(){printf(“%3s,%7.2s,%.4s,%-5.3s\n”,“CHINA”,“CHINA”,“CHIN
A”,“CHINA”);}运行结果:CHINA,_____CH,CHIN,CHI__(7)f格式符:输出单、双精度实数①%f:单精度浮点输出,有效位7位,通常小数点后有6位数字。%lf:双精度浮点输出,有效位1
6位,通常小数点后有6位数字。例,输出双精度有效位main(){floatx1,y1;doublex2,y2;x1=1111111111111.111111111;y1=2222222222222.222222222;x2=1111111111111.111111111;y2=
2222222222222.222222222;printf(“x1+y1=%f\nx2+y2=%lf\n”,x1+y1,x2+y2);}运行结果:x1+y1=3333333319680.000000x2+y2=3333333333333.333010①%m.nf:输出数
据共占m列,其中小数占n位,当数据长度<m时,左补空格。②%-m.nf:输出数据占m列,其中小数占n位,当数据长度<m时,右补空格。main(){floatf=123.456;printf(“%f,__%10f__%10.2f__
%.2f__%-10.2f\n”,f,f,f,f,f);运行结果:123.456001,__123.456001______123.46__123.46__123.46____(8)e格式,以指数形式
输出实数①%e:小数点前有一位数字,小数点后有5位数字规范化数float:x.xxxxxe±xx形式:double:x.xxxxxe±xxx②%m.ne:m为输出数据的列数,n是小数的位数.m<数据长度,数据按实际长度输出m>数据长
度,数据靠右输出,左端补空格③%-m.ne:m为输出数据的列数,n是小数的位数.m<数据长度,数据按实际长度输出m>数据长度,数据靠左输出,右端补空格在Tc中的n:指在e左边的数字个数,不包括小数点.在不同的C系统中输出结果可能不同书中例子指小数位数(9)g格式符,用来输出实数根据数据的大
小,自动选取e,f格式中占位数较少的一种格式输出。(10)print函数的使用说明:①格式符用小写字母而不能用大写字母,如%d而不是%D。②格式控制的字符串中可包含转义字符,如:\n,\t,\b,\r,\377,\x4
1③由%和格式字符d,f,e,g,u,c,s,o,x构成格式输出符号④特殊字符:%和\的输出,如下所示:main(){printf(“\\,%%,\“\n”);printf(“%f%%\n”,1.0/3);}输出:
\,%,“0.333333%⑤定义数据类型与格式符说明要一致,否则将输出错误结果。1、一般形式scanf(格式控制,地址表列)(1)格式控制:是字符串,内容有:①格式说明:由%和格式字符d,f,e,c,s,o,x中之一组成。②普通
字符:需原样输入的字符③转义字符:\n,\t用来实现换行和制表输入(2)地址表列:变量名前加&,表示将输入的数据存入变量所指定的存储单元内,字符数组前不加&5.2scanf:格式输入函数main(){inta,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“a=%d,b
=%d,c=%d\n”,a,b,c);}输入方法:①3_4_5②3__4____5③345④3Tab4Tab5输出:a=3,b=4,c=5常见问题:scanf(“%d,%d,%d”,&a,&b,&c);2、格式说明以%开始,以一个格式符(d,f,e(E),g(G),c,s,o,
x(X))结束,中间可插普通字符。附加格式说明符有:%ld,%lo,%lx:用于输入长整型数据(十、八、十六进制数)%lf,%le:用于输入双精度类型数据%hd,%ho,%hx:用于输入十、八、十六进制短整型
数据域宽n:指出输入数据所占的列数n。*:本输入项读入后不赋给任何变量。(1)指出输入数据所占列数,系统自动按其截取数据。main(){inta,b;scanf(“%3d%3d”,&a,&b);printf(“a=%d,b=%d\n”,a
,b);}输入:123456789输出:a=123,b=456(2)字符型数据若指出n位宽度,则只将第一个字符赋给变量。main(){charch;scanf(“%3c”,&ch);printf(“%c\n”,ch);}输入:abcd输出:a(3)%后加*,表示跳过相应数
据例main(){inta,b;scanf(“%2d%*3d%2d”,&a,&b);printf(“a=%d,b=%d\n”,a,b);}输入:12_345_678输出:a=12,b=67(4)格式说明中不能规定精度,编译虽不指
出错误,但结果不对。main(){floata;scanf(“%6.2f”,&a);printf(“a=%f\n”,a);}TC:输入:系统通过,不让输入数据输出:a=0.000000(5)o,x格式输入main(){inta,b,c;scanf(“%o%x%c”,&a,&b,&c);prin
tf(“%d,%d,%d\n”,a,b,c);}输入:121212输出:10,18,493、使用sacnf函数应注意的问题(1)、sacnf()中的变量必须使用地址。inta,b;scanf("%d,%d",a,b);scanf(
"%d,%d",&a,&b);(2)、scanf()的“格式控制中”,可以使用其它字符,但在输入时必须输入这些相同的字符。scanf("%d,%d",&a,&b);输入:3,4↙(逗号与"%d,%d"中的逗号对应)scanf("%d□□%d",&a,&b);输入:3□□4↙
(两个或以上空格)scanf("%d:%d:%d",&h,&m,&s);输入:12:23:36↙(与格式控制中的冒号对应)scanf("a=%d,b=%d,c=%d",&a,&b,&c);输入:a=12,b=24,c=36↙(a=,b=,c=及逗号与格式控制相对应)在用"%c"输入
时,空格和“转义字符”均作为有效字符。例、scanf("%c%c%c",&c1,&c2,&c3);输入:a□b□c↙结果:a→c1,□→c2,b→c3(其余被丢弃)(4)、输入数据时,遇以下情况结束一个数据的输
入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。①遇空格、“回车”、“跳格”键。②遇宽度结束。③遇非法输入。六、程序举例[例]输入三角形的三边长,计算其面积。设三边长a、b、
c,面积area的算法是:求平方根函数sqrt()在math.h中定义。求平方根函数sqrt()在math.h中定义。运行情况如下:3,4,6↙a=3.00,b=4.00,c=6.00area=5.33#include"math.h"main
(){floata,b,c,s,area;scanf("%f,%f,%f",&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=7.2f,b=%7.2f,c=%
7.2f\n",a,b,c);printf("area=%7.2f\n",area);}#include<stdio.h>#include<math.h>main(){floata,b,c,disc,x1,x2,p,q;scanf("a=
%f,b=%f,c=%f",&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("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2);}[例]分析:华氏温度(F)与摄氏温度(c)之间
的关系由公式:c=5/9(F-32)确定.分析:所需的变量:华氏温度f数据类型:floatf;摄氏温度c数据类型:floatc;表达式:c=5/9*(f-32)程序执行过程:1、输入f2、计算c3、输出c由此不难直接写出以下程序:main()
{floatf,c;Printf(”Fahrenheittemperature:\nf=")scanf("%f",&f);c=(5.0/9.0)*(f一32);printf("Celsiustrmperature:\nc=%.2f\n",c");}运行结果;Fanrenhettte
mperature:f=98.5Celsiustemperature:C=36.94[例]输出两个整型变量交换前后的值。分析:所需的变量:整型变量ainta整型变量bintb中间变量tempinttemp//用来两个值交换时作临时保
存用算法:1、先把a的值保存到:temp=a2、把b的值赋给a:a=b;3、把temp中保存的a值给b:b=temp;main(){inta,b;scanf("%d,%d",&a,&b);printf("origenalnumber:\na=%d,b=%d\n",a,b);{inttemp;tem
p=a;a=b;b=temp;}printf("swappednumbers:\na=%d,b=%d\n”,a,b);/*printf("tempnumbers:\ntemp=%d\n",temp);*/}运行结果:3.5origenalnumbers:a=3,b=5swappednum
bebers:a=5、b=3