在屏幕上显示HelloWorld.ppt

上传人:本田雅阁 文档编号:2733770 上传时间:2019-05-09 格式:PPT 页数:41 大小:666.02KB
返回 下载 相关 举报
在屏幕上显示HelloWorld.ppt_第1页
第1页 / 共41页
在屏幕上显示HelloWorld.ppt_第2页
第2页 / 共41页
在屏幕上显示HelloWorld.ppt_第3页
第3页 / 共41页
在屏幕上显示HelloWorld.ppt_第4页
第4页 / 共41页
在屏幕上显示HelloWorld.ppt_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《在屏幕上显示HelloWorld.ppt》由会员分享,可在线阅读,更多相关《在屏幕上显示HelloWorld.ppt(41页珍藏版)》请在三一文库上搜索。

1、1,2.1 在屏幕上显示Hello World,第2章 用C语言编写程序,用算例尽快进入编程,例2-1 在屏幕上显示一个短句: Hello World,/* 显示“Hello World!” */ #include void main( ) printf(“Hello World! n“); ,主函数,注释文本,调用输出函数,预编译,程序中涉及语法点: printf由库函数stdio.h解释 其参数:“字符串“,显示字符串 n 换行符 函数后的“;”表示函数语句 要求在屏幕上显示文字: printf(“要显示的文字“);,学习方法:阅读、模仿、改写-编写,2,例2-2 在屏幕上显示: Prog

2、ramming is fun! And Programming in C is even more fun!,#include void main( ) printf(“Programming is fun! n“); printf(“And Programming in C is even more fun! n“); ,根据要求在屏幕上显示文字: printf(“要显示的文字“);,注:换行符n的使用,源程序:,3,2.2 求华氏温度100F对应的摄氏温度,例2-3 求华氏温度100F 对应的摄氏温度计算公式 其中C为摄氏温度,F为华氏温度,2.2.1 程序解析,#include void

3、 main( ) int celsius, fahr; /*变量定义*/ fahr=100; /*常量赋值于变量*/ celsius=5*(fahr-32)/9; /*表达式赋值于变量*/ printf(“fahr=%d,celsius=%dn“,fahr,celsius); /*输出结果*/ ,输出: fahr=100, celsius=37,程序中涉及语法点: 常量、变量和数据类型 运算符、表达式 输出变量的值,4,例2-3 程序中 celsius = 5*(fahr-32)/9;,2.2.2 常量、变量和数据类型,其中 5、32 、9 为常量,1.常量,常量:在程序运行过程中,其值不会被

4、改变,常量分数据类型,由书写格式确定,整型:不带小数点的数,即整数 例 100、-10、5、0,实型:带小数点的数 例 123.45、-0.54321,5,2.变量,变量:在程序运行过程中,其值可以被改,例2-3 程序中 int celsius, fahr; celsius = 5 * (fahr - 32) / 9;,其中 celsius 、 fahr为变量,变量定义的一般形式: 类型名 变量名表;,使用变量必须要定义。,注:double型数据比float精度高(取值范围大 ,有效位数多),例如: int celsius, fahr; 定义整型变量,存放整数 float _x; 定义单精度浮

5、点型变量,存放实数 double a1, b2; 定义双精度浮点型变量,存放实数,6,变量取名,按标识符取名,一般用小写字母,见名知义,定义变量做了3件事:变量取名、确定数据类型、分配内存,标识符: 规定由字母、数字以及下划线组成, 第一个字符必须是字母或下划线。,数据类型,由类型关键字确定,同时也确定数据的表示范围 int -32768 32767 或 -2147483648 2147483648 float -10-381038 有效位数78 位 double -10-30810308 1516位,分配内存,对定义的每一个变量分配对应的存储单元,celsius,fahr,而 fahr=10

6、0; 表示100存入fahr变量的存储单元,即 fahr,100,例如, celsius, fahr,_x,a1,b1是标识符;而c1,b-a,2b不是标识符,7,注: C语言中的变量与数学上的符号含义不同,例 x=x+1,数学上无意义,C语言表示把x变量存储单元的值取出加1, 然后再保存到x变量存储单元中,变量必须先定义,后使用。定义位置在程序的开始,应该先赋值,后引用,#include void main( ) int celsius, fahr; fahr=100; celsius=5*(fahr-32)/9; printf(“fahr=%d,celsius=%dn“,fahr,cels

7、ius); ,8,2.2.3 算术运算和赋值运算,例2-3 程序中 fahr=100; celsius=5*(fahr-32)/9;,赋值运算,1.算术运算,+ - 加 减 双目运算 4级 从左到右 * / % 乘 除 取余 双目运算 3级 从左到右,先算术运算,后赋值运算,计算通过表达式实现,表达式:用运算符将运算对象及括弧按语法规则连接起来的式子,例 数学式 C表达式,5*(fahr-32)/9,(-b+sqrt(b*b-4*a*c)/2/a,注:函数sqrt(x)计算,括弧改变计算顺序,9,注 整/整是取整 如 -5/3=-1 1/3=0,取余%的两边运算对象必须是整型 如 565 10

8、040 a%b 则 int a,b;, +、- 又可作为正、负运算符 + - 正 负 单目运算 2级 从左到右 如 -10+10,?5*(fahr-32)/9 和 5/9*(fahr-32) 等价吗,10,2.赋值运算,格式 变量 = 表达式,例 fahr=100; celsius=5*(fahr-32)/9;,操作 计算赋值运算符右侧表达式的值 将赋值运算符右侧表达式的值赋给左侧的变量,注: = 是 赋值符,而不是等号 变量 = 表达式;称之赋值语句,赋值运算符: = 14级 从右到左,赋值语句表达计算公式,x1=(-b+sqrt(b*b-4*a*c)/2/a;,11,2.2.4 格式化输出

9、函数printf( ),例2-3 程序中 printf(“fahr=%d, celsius=%dn“, fahr, celsius);,格式 printf(格式控制,输出表列);,其中 格式控制是由双引号括起来的字符串,包括两种信息 (1)普通字符 照原样输出字符 或 转义符 如 fahr= celsius= 例2-1 printf(“Hello World! n“); 中 Hello World! n 是普通字符,按指定的格式输出数据,格式控制字符与被输出的数据类型有关,int型: %d float、double型: %f 或 %.nf %m.nf,(2)格式说明 %格式控制符,保留小数位

10、6位 n位 整个数占m位,12,输出表列是输出的数据 ,可以是常数、变量和表达式, 每个输出数据之间用逗号分隔。 如 printf(“%f %f %f “,123.45,x,2*a+b);,printf(“fahr = %d, celsius = %dn“, fahr, celsius);,操作 将输出表列中的数据按格式说明在显示屏输出,例2-3 程序中 fahr=100; celsius=5*(fahr-32)/9; printf(“fahr = %d, celsius = %dn“, fahr, celsius);,注:%格式控制符与输出数据的个数、类型、位置必须一一对应,输出表列,13,

11、#include void main( ) int celsius, fahr; /*变量定义*/ fahr=100; /*常量赋值于变量*/ celsius=5*(fahr-32)/9; /*表达式赋值于变量*/ printf(“fahr = %d, celsius = %dn“, fahr, celsius); /*输出结果*/,输出:fahr =100, celsius = 37,例2-3 求华氏温度对应的摄氏温度,程序缺陷:无通用性 只能求出fahr=100时的摄氏温度,14,#include void main( ) int celsius, fahr; scanf(“%d“, ,改

12、变例2-3 求华氏温度对应的摄氏温度,运行程序: 键入: 100 输出: fahr=100,celsius=37 键入: 120 输出: fahr=120,celsius=48,15,2.2.5 格式化输入函数 scanf(),格式 scanf(格式控制,地址表列);, 地址列表是输入数据存入内存的地址,可以是变量的地址,每个内存地址之间用逗号分隔。,格式控制是用双引号括起来的字符串, 字符串由格式说明和普通字符构成,怎么知道变量的地址?利用地址运算符求出变量的地址 格式 &变量名,例 int a,b ; 则 &a,&b 表示取a,b变量的地址,例 int a; float b; scanf(

13、“%d%f“,格式说明由%和格式字符构成,与数据类型有关 int型 %d float型 %f double型 %lf,16,普通字符,在输入数据时需要原样输入的字符 例 scanf(“x=%f“, 输入数据时, x=2.5 x=必须照原样输入,操作 将键盘键入的数据按指定类型格式存入指定内存存储单元,#include void main() int a,b,c; scanf(“%d%d%d“, ,例,格式控制,地址表列,运行 输入 3 4 5 输出 3,4,5,一般 普通字符作为输入数据之间的分隔符使用。如 , 空格 例 scanf(“%d,%f“, 输入数据时 10,12.5,无普通字符时输

14、入数据之间用空格分隔符 例 scanf(“%d%f“, 输入数据时 10 12.5,17,在格式说明中无普通字符时,键入数据之间可用空格、或分隔,即多各空格分割,上例输入可改为,3 4 5 一个跳8个空格,或 3 4 5,在格式说明中用了普通字符,则普通字符作为数据之间的分隔符 如上例改用输入函数scanf()为 scanf(“%d,%d,%d“, 输入则为 a=3,b=4,c=5,由此可见,为了减少不必要的输入,在scanf()函数的格式控制中尽量不要出现普通字符。,注 %格式控制符与输入数据的个数、类型、位置必须一一对应,例 scanf(“%d%d%d“,18,对一般简单程序编程算法,1.

15、输入已知值 2.按计算公式求值 3.输出结果,例 求二元一次方程,ax2+bx+c=0的实根 已知b*b-4ac0。,分析 已知b*b-4ac0 则实根为,算法 1.输入已知值a,b,c 2.代入公式求x1,x2 3.输出x1,x2,程序 #include “stdio.h“ #include “math.h“ void main() float a,b,c,x1,x2; scanf(“%f,%f,%f“, ,喔!编程原来 这么简单!,顺序结构,19,2.2.6 常用数学库函数,库函数 C语言系统提供事先编好的函数,供用户在编程时调用。 如 scanf(), printf(), sqrt(),

16、平方根函数 sqrt(x): 指数函数 exp(x):ex 绝对值函数 fabs(x):|x| 以e为底的对数函数 log(x):ln(x) 幂函数 pow(x, n): xn 以10为底的对数函数 log10(x):log10(x),常用数学库函数,函数调用格式 函数名(参数),例 1.12 pow(1.1,2) e2.3 exp(2.3),注:参数的个数、类型一致,#include命令 用户调用库函数时,将相应的头文件包含到源程序中。 例 调用scanf(), printf(),需要 #include 调用sqrt(),需要 #include ,20,例2-5 输入存款金额 money、存

17、期 year 和年利率 rate,根据公式计算存款到期时的本息合计sum(税前),输出时保留2位小数。 sum=money(1+ rate)year,使用xypow(x, y)函数 sum=money*pow(1+rate,year),#include #include void main( ) int money, year; double rate, sum; printf(“input money, year and rate: n“); scanf(“%d%d%lf“, ,input money, year and rate: 1000 3 0.025 sum = 1076.89,21

18、,2.3 计算分段函数,例2-4 输入x,求分段函数 f(x) 的值,保留2位小数。,2.3.1 程序解析,#include void main( ) double x,y; printf(“input x(x0): n“); scanf(“%lf“, ,运行 input x(x0): 9.5 y=f(9.500000)=12.67 input x(x0): 21.3 y=f(21.300000)=42.75,程序中新语法点: x=15 关系运算 if(x=15) y=4*x/3; else y=2.5x-10.5; ifelse语句,22,2.3.2 关系运算,1.关系运算符, 大于 = 大

19、于或等于 = 等于 != 不等于,6级,7级,从左到右 双目运算,6种关系符,2.关系表达式 格式 ,用关系运算符将2个表达式连接起来式子,操作 关系表达式将两边的表达式的值进行比较得到 逻辑值 1 为真 0 为假,例 x=1,当x=0.5,1,当x=2.4,0,23,关系表达式用途:描述简单的条件判断,例 判断 x 是否为负数 x0 判断 x 是否不为零 x!=0,2.3.3 ifelse语句,格式 if(表达式) 语句1 else 语句2,表达式,语句1,语句2,1,0,操作 当表达式的值为1(真),执行语句1,否则执行语句2,表达式 可以是关系表达式,语句i 单个语句或复合语句 复合语句

20、: 语句1 ; 语句2 ; ,24,例 输入x,求分段函数f(x)的值,保留1位小数。,输入x,x!=0,y=1/x,y=0,输出y,假,真,#include void main( ) float x, y; printf(“input x: n“); scanf(“%f“, ,input x: 2.5 f(2.50)=0.4,将if(x!=0)改为 if(x),运行结果相同,说明:if(表达式)中的表达式可以是任意表达式 表达式的值非0为真,0为假,25,注:当ifelse语句中语句2不存在允许else缺省,格式 if(表达式) 语句1,表达式,语句1,1,0,#include void m

21、ain( ) float x, y; printf(“input x: n“); scanf(“%f“, ,26,例 输入两个实数,按小大次序输出,#include void main() float a,b,t; scanf(“%f,%f“, ,注 不能写成if(ab) t=a;a=b;b=t;,27,例2-6 输出一张华氏摄氏温度转换表,将华氏温度从3035F之间的每一度,分别转换成相应的摄氏温度并输出。,fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7,2.4 输出华氏摄氏温度转换表,#include void main(

22、) float celsius,fahr; printf(“fahr celsiusn“); fahr=30; celsius=5*(fahr-32)/9; printf(“%3.0f %6.1fn“,fahr,celsius); ,运行得表的第一行数据,例2-3程序,2.4.1 循环概念,28,#include void main( ) float celsius, fahr; printf(“fahr celsiusn“); fahr=30; celsius=5*(fahr-32)/9; printf(“%3.0f %6.1fn“,fahr,celsius); fahr=31; celsi

23、us=5*(fahr-32)/9; printf(“%3.0f %6.1fn“,fahr,celsius); fahr=35; celsius=5*(fahr-32)/9; printf(“%3.0f %6.1fn“,fahr,celsius); ,fahr=_; celsius=5*(fahr-32)/9; printf(“%3.0f %6.1fn“,fahr,celsius);,重复,30、31、 、35,29,fahr=_; celsius=5*(fahr-32)/9; printf(“%3.0f %6.1fn“,fahr,celsius);,重复,30、31、 、45,第一次 fahr

24、=30,第二次 fahr=31,改写 fahr=fahr+1,第三次 fahr=32,同理 fahr=fahr+1, 第六次 fahr=35 同理 fahr=fahr+1,fahr=30,celsius=5*(fahr-32)/9; printf(“%3.0f %6.1fn“,fahr,celsius); fahr=fahr+1;,fahr=35,真,假,goto,无条件转移 格式 goto 语句标号; 其中,语句标号用标识符命名.,停,30,#include void main( ) float celsius, fahr; fahr=30; printf(“fahr celsiusn“);

25、 loop: if(fahr=35) celsius=5*(fahr-32)/9; printf(“%3.0f %6.1fn“,fahr,celsius); fahr=fahr+1; goto loop; else ;/*可省略*/ ,注goto语句与if语句配合使用构成循环结构,goto破坏程序的结构,可读性差,少用或不用。,构成循环的要素: 循环体 条件判断 进入每次循环的准备,循环体,条件判断,循环前准备,下次循环前准备,循环结构 根据条件的判断对某一段程序重复执行,31,2.4.2 for语句,格式 for(表达式1; 表达式2; 表达式3) 语句,其中 语句是一个语句或复合语句,循环

26、体 表达式1进入循环之前求值,为进入循环作准备 表达式2 是条件,求值得真(非0)做循环,假(0)退出循环 表达式3 做一次循环后,求值,为进下一次入循环作准备,操作 (1)做表达式1 (2)求表达式2,若真(非0)做内嵌语句, 然后做(3);若假(0) 终止for循环。 (3)做表达式3;转到(2),loop:表达式1; if(表达式2) 语句;表达式3; goto loop;,等价于,32,例2-6 输出一张华氏摄氏温度转换表,,#include void main( ) float celsius, fahr; printf(“fahr celsiusn“); for(fahr=30;f

27、ahr=35;fahr=fahr+1) celsius=5*(fahr-32)/9; printf(“%3.0f %6.1fn“,fahr,celsius); ,fahr=30,celsius=5*(fahr-32)/9; printf(“%3.0f %6.1fn“,fahr,celsius); fahr=fahr+1;,fahr=35,真,假,停,表达式1,表达式2,表达式3,循环体,for书写顺序和执行顺序不同 隐含循环,33,注:循环体是复合语句,for(fahr=30;fahr=35;fahr=fahr+1) celsius=5*(fahr-32)/9; printf(“%3.0f %

28、6.1fn“,fahr,celsius); ,for(fahr=30;fahr=35;fahr=fahr+1) celsius=5*(fahr-32)/9; printf(“%3.0f %6.1fn“,fahr,celsius);,循环体空语句,for(fahr=30;fahr=35;fahr=fahr+1); celsius=5*(fahr-32)/9; printf(“%3.0f %6.1fn“,fahr,celsius); ,?,?,34,即 求 1+2+3+4+.+100,可以直接使用赋值语句 s=1+2+3+4+.+100; 但语句太长,改写为 s=0; s=s+1; s=s+2;

29、. s=s+100;,同一计算步骤,s=s+i i=1,2,3,.,100 计算前s=0,s=0,i=1,i100,s=s+i,i=i+1,输出s,流程图,根据i100条件, 重复执行 s=s+i;i=i+1程序段100次,但语句太多,非0,0,例2-7,表达式1,表达式2,表达式3,循环体,35,#include “stdio.h“ void main() int i,s; s=0; for(i=1; i=100; i=i+1) s=s+i; printf(“s=%dn“,s); ,程序,s=0,i=1,i100,s=s+i,i=i+1,输出s,流程图,非0,0,表达式1,表达式2,表达式3

30、,循环体,格式 for(表达式1; 表达式2; 表达式3) 语句,运行 输出 s=5050,36,2.4.3 指定次数的循环程序设计,for(表达式1; 表达式2; 表达式3) 语句,表达式2,语句,非0,0,表达式1,表达式3,要用循环次数控制循环,引入概念 循环变量、初值、终值、增量,#include “stdio.h“ void main() int i,s; s=0; for(i=1; i=100; i=i+1) s=s+i; printf(“s=%dn“,s); ,例2-7中,循环变量,初值,终值,增量,i=100,语句,非0,0,i=1,i=i+1,表达式1,表达式2,表达式3,当

31、增量为1,循环变量作为循环次数控制循环,37,#include int main(void) int repeat, ri; int x, y; scanf(“%d“, ,实验题的测试循环 输入一个整数 x,计算并输出下列分段函数 sign(x) 的值。,38,例 求,分析,s=0; i=1,s=s+1 i=2,s=s+1/3; i=3,s=s+1/5 . i=n,s=s+1/(2n-1);,s=s+1/(2*i-1) i=1,2,3,., n 循环前 s=0,i=n,s=s+1/(2*i-1),非0,0,i=1,i=i+1,s=0,#include void main( ) int i, n

32、; double s; scanf (“%d“, ,i增量为1 循环次数控制循环,输入n,循环变量,初值,终值,增量,前n项之和,39,例 求,分析,s=s+1/i i=1,3,5,., n 循环前 s=0,i=n,s=s+1/i,非0,0,i=1,i=i+2,s=0,循环变量i、初值1、终值n、增量2,#include void main( ) int i,n; double s; scanf (“%d“, ,i增量为2 循环变量的值控制循环,输入n,前n项之和,s=0; i=1,s=s+1 i=2,s=s+1/3; i=3,s=s+1/5 . i=n,s=s+1/(2n-1);,40,例2

33、-8 求,前n项之和,多项式求和 s=s+item(通项),i=1,2,3,., n,引入变量flag表示,s=sitem,i: 1 2 3 4 . flag: +1 -1 +1 -1 . item: 1 1/3 1/5 1/7 .,flag=1 flag=-flag item=flag*1/ (2*i-1),#include void main( ) int i,n,flag; double item,s; scanf (“%d“, ,通项为1/(2*i-1),41,例2-9 求n!,即 1*2*3*4*n,改写为 s=1; s=s*2; . s=s*n;,同一计算步骤,s=s*i i=1,2,3,4,.,n 循环前 s=1,#include void main( ) int i,n; double s; scanf (“%d“, ,多项式求积 s=s*item(通项),s=1; for(i=1;i=n;i=i+1) s=s*i;,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1