《C语言新教材PPT课堂课件-第4章_简单程序 .pdf》由会员分享,可在线阅读,更多相关《C语言新教材PPT课堂课件-第4章_简单程序 .pdf(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第第第四四四四章章章章l l 主主要要内内容容4.1 C4.1 C语语句句概概述述4.2 4.2 赋赋值值语语句句4.3 4.3 数数据据输输入入输输出出的的概概念念及及在在c c语语言言中中的的实实现现4.4 4.4 字字符符数数据据的的输输入入输输出出4.5 4.5 格格式式输输入入与与输输出出4.6 4.6 顺顺序序结结构构程程序序设设计计举举例例 4 4 4 4. . . .1 1 1 1 C C C C语语语语句句句句概概概概述述述述C程序源程序文件1源程序文件2源程序文件n预处理命令函数n函数1数据声明函数首部函数体数据声明执行语句 4.1 C 4.1 C 4.1 C 4.1 C
2、语语语语句句句句概概概概述述述述 一个c程序可以有若干个源程序文件组成一个源文件可以有若干个函数和预处理命令以及全局变量声明部分组成一个函数有函数首部和函数体组成函数体由数据声明和执行语句组成C语句分为5类类控制语句函数调用语句表达式语句空语句复合语句 4.1 C 4.1 C 4.1 C 4.1 C语语语语句句句句概概概概述述述述 (一)控制语句 完成一定的控制功能1 if() else 条条件件语语句句 6 break 间间断断语语句句 2 for() 循循环环语语句句 7 switch() 开开关关语语句句3 while()循循环环语语句句 8 goto 转转向向语语句句 4 do whi
3、le();循循环环语语句句 9 return 返返回回语语句句5 continue 继继续续语语句句 4.1 C 4.1 C 4.1 C 4.1 C语语语语句句句句概概概概述述述述 (二)函数调用语句 有一个函数调用加一个分号构成一个语句 Printf(“This is a C statement.”); 4.1 C 4.1 C 4.1 C 4.1 C语语语语句句句句概概概概述述述述 (三)表达式语句 有一个表达式加一个分号构成一个语句 a = 3 ;分号赋值表达式表达式语句 4.1 C 4.1 C 4.1 C 4.1 C语语语语句句句句概概概概述述述述 (四)空语句 只有一个分号的语句 (什
4、什么么也也不不做做)用用来来做做流流程程的的转转向向点点用用来来作作为为循循环环语语句句中中的的循循环环体体 4.1 C 4.1 C 4.1 C 4.1 C语语语语句句句句概概概概述述述述 (五)复合语句 用一对括起来的语句 z=x+y;t=z/100;printf(“%f”,t); 4 4 4 4. . . .2 2 2 2 赋赋赋赋值值值值语语语语句句句句赋值语句是由赋值表达式加上一个分号构成例例:a=100 赋值表达式 a=100; 赋值语句条件中不能含有赋值符号,但是赋值表达式可以包含于条件表达式中例例:if(a=b) t=a; 错误 if(a=b)0) t=a; 正确 4 4 4 4
5、. . . .2 2 2 2 赋赋赋赋值值值值语语语语句句句句 1 1 1 1:C语言中的赋值号“=”是一个运算符,在其他大多数语言中赋值号不是运算符.2 2 2 2:其他大多数高级语言没有“赋值表达式”这一概念.问问问问题题题题:c c c c语语语语言言言言中中中中的的的的赋赋赋赋值值值值语语语语句句句句于于于于其其其其他他他他高高高高级级级级语语语语言言言言的的的的赋赋赋赋值值值值语语语语句句句句有有有有什什什什么么么么不不不不同同同同点点点点? ? ? ? 4.3 4.3 4.3 4.3 数数数数据据据据输输输输入入入入输输输输出出出出的的的的概概概概念念念念及及及及在在在在C C C
6、 C 语语语语言言言言中中中中的的的的实实实实现现现现(一).所谓输入输出是以计算机主机为主体而言的输输出出:从计算机向外部输出设备(显示器,打印机) 输出数据输输入入:从输入设备(键盘,鼠标,扫描仪)向计算机 输入数据.(二).C语言本身不提供输入输出语句,输入和输出操作是由C函数库中的函数来实现的例例如如: :字符输入函数: getchar 字符输出函数:putchar格式输入函数: scanf 格式输出函数: printf字符串输入函数:gets 字数穿输出函数:puts 4.3 4.3 4.3 4.3 数数数数据据据据输输输输入入入入输输输输出出出出的的的的概概概概念念念念及及及及在在
7、在在C C C C 语语语语言言言言中中中中的的的的实实实实现现现现(三).在使用系统库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中.例如:在调用标准输入输出库函数时,文件开头应该有: #include “stdio.h” 或: #include 头文件 4.3 4.3 4.3 4.3 数数数数据据据据输输输输入入入入输输输输出出出出的的的的概概概概念念念念及及及及在在在在C C C C 语语语语言言言言中中中中的的的的实实实实现现现现 4 4 4 4. . . .4 4 4 4 字字字字符符符符数数数数据据据据的的的的输输输输入入入入输输输输出出出出(一).
8、字符输出函数一般形式:putchar(c) 函数作用:向终端输出一个字符 字符型变量整型变量 4 4 4 4. . . .4 4 4 4 字字字字符符符符数数数数据据据据的的的的输输输输入入入入输输输输出出出出 例4.1 输出单个字符。#includevoid main()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);putchar(n);运行结果:BOYputchar(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);运行结果:B O Y 4 4 4 4. .
9、. .4 4 4 4 字字字字符符符符数数数数据据据据的的的的输输输输入入入入输输输输出出出出 (二).字符输入函数一般形式:getchar() 函数作用:从终端(或系统隐含指定的输入设备)输入一个字符。函数值: 从输入设备得到的字符。 4 4 4 4. . . .4 4 4 4 字字字字符符符符数数数数据据据据的的的的输输输输入入入入输输输输出出出出 例4.2 输入单个字符。#includevoid main() char c; c=getchar(); putchar(c); putchar(n);运行程序:从键盘输入字符a按Enter键屏幕上将显示输出的字符aaa 4 4 4 4. .
10、. .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出出出(一).格式输出函数函函数数作作用用:向向终终端端(或或系系统统隐隐含含指指定定的的输输出出设设备备)输输出出若若干干个个任任意意类类型型的的数数据据。一一般般格格式式:printfprintf(格格式式控控制制,输输出出表表列列)%d%d: :以以带带符符号号的的十十进进制制形形式式输输出出整整数数%o%o: :以以八八进进制制无无符符号号形形式式输输出出整整数数%x%x: :以以十十六六进进制制无无符符号号形形式式输输出出整整数数To be continuedTo be continued 4 4 4 4. .
11、. .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出出出 %u%u: :以以无无符符号号十十进进制制形形式式输输出出整整数数%c%c: :以以字字符符形形式式输输出出,只只输输出出一一个个字字符符%s%s: :输输出出字字符符串串%f%f: :以以小小数数形形式式输输出出单单,双双精精度度数数,隐隐含含输输出出六六位位小小数数%e%e: :以以指指数数形形式式输输出出实实数数%g%g: :选选用用%f%f或或%e%e格格式式中中输输出出宽宽度度较较短短的的一一种种格格式式,不不输输 出出无无意意义义的的0 0 4 4 4 4. . . .5 5 5 5 格格格格式式式式输
12、输输输入入入入与与与与输输输输出出出出 几种常见的格式符的修饰符:L:用于长整型整数,可加在格式符d,o,x,u前面M(代表一个正整数):数据最小宽度N(代表一个正整数):对实数,表示输出n位小数; 对字符串,表示截取的字符个数:输出的数字或字符在域内向左靠 4 4 4 4. . . .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出出出 (1)格格式式符符。用来输出十进制整数。几种用法: :按十进制整型数据的实际长度输出。 :为指定的输出字段的宽度。如果数据的位数小于, 则左端补以空格,若大于,则按实际位数输出。 例: (,); 若,则输出结果为 , :输出长整型数据。
13、例: ;/* 定义a为长整型变量*/ (,); 4 4 4 4. . . .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出出出 (2) 格格式式符符。以八进制整数形式输出。输出的数值不带符号,符号位也一起作为八进制数的一部分输出。例:int a=-1; printf(%d,%o,a,a); 在内存单元中的存放形式(以补码形式存放)如下: 1111111111111111 输出为: ,不会输出带负号的八进制整数。对长整数(型)可以用“”格式输出。还可以指定字段宽度,例:(,); 输出为: 177777。 (数字前有2个空格) 4 4 4 4. . . .5 5 5 5 格格
14、格格式式式式输输输输入入入入与与与与输输输输出出出出 (3)格格式式符符。以十六进制数形式输出整数。同样不会出现负的十六进制数。例: ; (,); 输出结果为: ffff,可以用“”输出长整型数,也可以指定输出字段的宽度例: “” 4 4 4 4. . . .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出出出 (4)格格式式符符,用来输出型数据.一个有符号整数(型)也可以用格式输出;一个型数据也可以用格式输出。型数据也可用或格式输出。(5)格格式式符符,用来输出一个字符。如:d; (,d); 输出字符.一个整数,只要它的值在范围内,可以用“”使之按字符形式输出,在输出前,
15、系统会将该整数作为ASCII码转换成相应的字符;一个字符数据也可以用整数形式输出。 4 4 4 4. . . .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出出出 例4.3 无符号数据的输出。#includevoid main()unsigned int a=65535;int b=-2;printf(“a=%d,%o,%x,%un”,a,a,a,a);printf(“b=%d,%o,%x,%un”,b,b,b,b); 运运行行结结果果:a=-1a=-1,177777177777,ffffffff,6553565535b=-2b=-2,177776177776,fffef
16、ffe,6553465534 4 4 4 4. . . .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出出出 例4.4 字符数据的输出。#includevoid main()char c=a;int i=97;printf(“%c,%dn”,c,c);printf(“%c,%dn”,i,i); 运运行行结结果果:a,97a,97a,97a,97指指定定输输出出字字数数的的宽宽度度,printf(“%3c”,c);printf(“%3c”,c);则则输输出出: a a 4 4 4 4. . . .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出出出 (6
17、)s s格格式式符符 输出字符串. 。例如: (,) 输出字符串“”(不包括双引号)。 %ms,输出的字符串占m列,若串长大于m,则全部输出,若串长 小于m,则左补空格。 %-ms,若串长小于m,字符串向左靠,右补空格。 %m. ns,输出占m列,只取字符串中左端n个字符,输出在m列的 右侧,左补空格。 %-m.ns,n个字符输出在m列的左侧,右补空格,若nm,m自 动取n值。 4 4 4 4. . . .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出出出 例例4.54.5字符串的输出。#includevoid main()printf(“%3s,%7.2s,%.4s,%
18、-5.3sn”, “CHINA”, “CHINA”, “CHINA”, “CHINA”); 运运行行结结果果:CHINACHINA, CH ,CHIN,CHI CH ,CHIN,CHI 4 4 4 4. . . .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出出出 (7)格格式式符符。用来以小数形式输出实数(包括单双精度)有以下几种用法: 。不指定字段宽度,由系统自动指定字段宽度,使整数部分全部输出,并输出位小数。应当注意,在输出的数字中并非全部数字都是有效数字。单精度实数的有效位数一般为位。.。指定输出的数据共占列,其中有位小数。如果数值长度小于,则左端补空格。.与.基
19、本相同,只是使输出的数值向左端靠,右端补空格。 4 4 4 4. . . .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出出出 例例4.6 4.6 输出实数时的有效位数。#include void () ,;(,); 运运行行结结果果:. . 4 4 4 4. . . .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出出出 例例4.74.7输出双精度数时的有效位数。#include void () ,;x=1111111111111.111111111;y=2222222222222.222222222;printf(“%f”,x+y); 运运行行结结
20、果果:3333333333333.3330103333333333333.333010 4 4 4 4. . . .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出出出 例4.8 输出实数时指定小数位数。#include void ()float f=123.456;printf(“%f%10f%10.2f%.2f%-10.2fn”,f,f,f,f,f); 运运行行结结果果:123.455994 123.455994 123.455994 123.455994 123.455994123.455994123.455994123.455994 123.46 123.46 12
21、3.46 123.46 123.46123.46123.46123.46 123.46123.46123.46123.46 4 4 4 4. . . .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出出出 (8)格格式式符符,以指数形式输出实数。可用以下形式: 。不指定输出数据所占的宽度和数字部分的小数位数.例: (,);输出: 6列 5列所输出的实数共占列宽度。(注:不同系统的规定略有不同) 4 4 4 4. . . .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出出出 m.ne和-m.ne。、和“”字符的含义与前相同。 此处指拟输出的数据的小数部分
22、(又称尾数)的小数位数。 若,则:printf(%e %10e %10.2e %.2e %-10.2e,f,f,f,f,f); 输出如下:1.234560e+002 1.234560e+002 1.23e+002 1.23e+002 13列 13列 10列 9列 1.23e+002 10列说明:未指定,自动使.超过给定的列,乃突破列的限制,按实际长度输出。第3个数据共占列,小数部分占列。只指定,未指定,自动使等于数据应占的长度。第5个数据应占列,数值只有列,由于是“”,数值向左靠,右补一个空格。(注:有的C系统的输出格式与此略有不同) 4 4 4 4. . . .5 5 5 5 格格格格式式式
23、式输输输输入入入入与与与与输输输输出出出出 (9) )格格式式符符,用来输出实数. 它根据数值的大小,自动选格式或格式(选择输出时占宽度较小的一种),且不输出无意义的零。例:若,则( ,);输出如下:123.468000 1.234680e+002 123.468 10列 13列 10列说明:用格式输出占列,用格式输出占列,用格式时,自动从上面两种格式中选择短者(今以格式为短)故占列,并按格式用小数形式输出,最后3个小数位为无意义的,不输出,因此输出123.468,然后右补3个空格。格式用得较少。 4 4 4 4. . . .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出
24、出出 说明:除了X,E,G外,其他各式字符必须用小写。可以在printf函数中的“格式控制”字符串中包含转义字符。一个格式说明必须以“%”开头,以9个格式字符之一为结束,中间可以插入附加格式字符。想输出%,则应该在格式控制字符串中用连续两个%表示 4 4 4 4. . . .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出出出 (一).格式输入函数函数作用:按照变量在内存的地址将变量值存 进去。一般格式:scanf(格式控制,地址表列)同同printf函函数数是是由由若若干干个个地地址址组组成成的的表表列列,可可以以是是变变量量的的地地址址,或或字字符符串串的的首首地地址址
25、 4 4 4 4. . . .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出出出 例4.9 用scanf函数输入数据。#includevoid main()int a,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“%d,%d,%dn”,a,b,c); 运运行行情情况况:3 4 5 (3 4 5 (输输入入a,b,ca,b,c的的值值) )3 3,4 4,5 5 (输输出出a,b,ca,b,c的的值值)a a在在内内存存中中的的地地址址& &是是地地址址运运算算符符 4 4 4 4. . . .5 5 5 5 格格格格式式式式输输输输入入入入与与
26、与与输输输输出出出出 说明:对unsigned型变量所需要的数据,可以用%u,%d或%o,%x格式输入。可以指定输入数据所占的列数,系统自动按它截取所需数据。如果在%后有一个“*”附加说明符,表示跳过它指定的列数。输入数据时不能规定精度。 4 4 4 4. . . .5 5 5 5 格格格格式式式式输输输输入入入入与与与与输输输输出出出出 使使用用函函数数时时应应注注意意的的问问题题 :(1)函数中的“格式控制”后面应当是变量地址,而不应 是变量名。 (2) 如果在“格式控制”字符串中除了格式说明以外还有其他字符, 则在输入数据时在对应位置应输入与这些字符相同的字符。 (3) 在用“”格式输入
27、字符时,空格字符和“转义字符”都作为 有效字符输入 (4) 在输入数据时,遇以下情况时认为该数据结束。 遇空格,或按“回车”或“跳格”(Tab)键; 按指定的宽度结束,如“”,只取列; 遇非法输入。 4 4 4 4. . . .6 6 6 6 顺顺顺顺序序序序结结结结构构构构程程程程序序序序设设设设计计计计举举举举例例例例例4.10 输入三角形的三边长,求三角形面积。假设:三个边长a,b,c能构成三角形。已知面积公式:area=s=(a+b+c)*0.5开始输入三边长计算s计算面积结束 4 4 4 4. . . .6 6 6 6 顺顺顺顺序序序序结结结结构构构构程程程程序序序序设设设设计计计计
28、举举举举例例例例 #include#includevoid main()float a,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, s=%7.2fn”,a,b,c,s);printf(“area=%7.2fn”,area); 数学函数库因为要用到其中的sqrt函数运运行行情情况况:3 3,4 4,6 6a= 3.00, b= 4.00, c= 6.00, s= 6.50a= 3.00, b= 4.00,
29、c= 6.00, s= 6.50area= 5.33area= 5.33 4 4 4 4. . . .6 6 6 6 顺顺顺顺序序序序结结结结构构构构程程程程序序序序设设设设计计计计举举举举例例例例 例例4.114.11 从键盘输入一个大写字母,要求改用小写字母输出。 void () ,; (); (,); ; (,);运运行行情情况况:, 4 4 4 4. . . .6 6 6 6 顺顺顺顺序序序序结结结结构构构构程程程程序序序序设设设设计计计计举举举举例例例例 例例4.12 4.12 求x2方程的根。 a,b,c由键盘输入,设 。众所周知,一元二次方程式的根为x1= x2= 可以将上面的分式分为两项:p= , q= x1=p+q, x2=p-q 4 4 4 4. . . .6 6 6 6 顺顺顺顺序序序序结结结结构构构构程程程程序序序序设设设设计计计计举举举举例例例例 #include #include void main ( ) float a,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(nnx1=%5.2fnx2=%5.2fn,x1,x2);运运行行情情况况:,