E-mail:tom_lx@126.com QQ:100756 李祥 E-mail:tom_lx@126.com QQ:100756 欢迎多种方式的学习交流,祝大家学有所成
目录 第四章 顺序结构 1 项目的改进 2 赋值语句 3 格式输出函数 4 格式输入函数 5 字符数据的输入输出 6 顺序结构程序的编写
知识点要求: 技能要求: 教学要求 1 2 1 2 3 格式输入输出函数 字符数据的输入输出 区别赋值语句与赋值表达式 掌握各种类型数据的输入与输出 3 掌握顺序结构程序的书写
4.1 项目的改进 任务描述: 任务要求: 改写add函数,实现任意两个实数的加法。 (1)通过键盘输入两个实数。 (2)输出两个实数的和。 (3)输出时保留2位小数。
4.1 项目的改进 void add() {float x,y,z; scanf("%f,%f",&x,&y); z=x+y; 任务实现 编写add函数 void add() {float x,y,z; scanf("%f,%f",&x,&y); z=x+y; printf("x+y=%.2f\n",z); return; } 在主函数中调用add函数
4.1 项目的改进 涉及知识点 赋值语句—z=x+y; 输入函数--scanf 输出函数--printf
4.2 赋值语句 1.赋值运算符 = 作用:将一个数据或表达式的值赋给一个变量 2.赋值表达式 形式:变量 = 表达式 3.赋值语句 形式:变量 = 达式 ;
4.2 赋值语句 说明: 1.赋值语表达式的末尾没有分号,而赋值语句的末尾必须加分号。如: a=5 //赋值表达式 a=5; //赋值语句 2.赋值表达式可以出现在其他表达式之中。如: if(x=y+5)>0 z=x; //对 if(x=y+5;)>0 z=x; //错
4.2 赋值语句 【例4.1】 给出三角形的三边长,求三角形面积。 解题思路:假设给定的三条边符合构成三角形的条件 通过公式计算面积: 其中s=(a+b+c)/2
4.2 赋值语句 #include <stdio.h> #include <math.h> void main ( ) { float a,b,c,s,area; a=3.67; b=5.43; c=6.21; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%f\n",area); } 对边长a、b、c赋值 计算s 计算area 计算平方根
4.2 赋值语句 常用的标准数学函数: 函数名 功 能 sqrt(x) 计算x的平方根,x应大于等于0 exp(x) 计算ex的值 功 能 sqrt(x) 计算x的平方根,x应大于等于0 exp(x) 计算ex的值 fabs(x) 计算x的绝对值 pow(x,y) 计算xy的值 log(x) 计算lnx的值 sin(x) 计算sinx的值,x为弧度值 log10(x) 计算lgx的值 cos(x) 计算cosx的值,x为弧度值
4.3 格式输出函数printf (1) 输入输出的概念 输出:从计算机向外部输出设备输出数据。 输入:从输入设备向计算机输入数据。 (2) C语言本身不提供输入输出语句,输入和输出 操作是由C函数库中的函数来实现。 (3)在使用输入输出函数时,要在程序文件的开头用预编译指令 #include <stdio.h>
printf(”i=%d,c=%c\n”,i,c); 格式控制:由双引号引起来的字符串 输出表列:需要输出的数据 例如: printf(”i=%d,c=%c\n”,i,c); 格式声明
printf(”i=%d,c=%c\n”,i,c); 格式控制:由双引号引起来的字符串 输出表列:需要输出的数据 例如: printf(”i=%d,c=%c\n”,i,c); 普通字符
printf(”i=%d,c=%c\n”,i,c); 格式控制:由双引号引起来的字符串 输出表列:需要输出的数据 例如: printf(”i=%d,c=%c\n”,i,c); 可以是常量、变量或表达式
【例4.2】 printf函数的使用,分析结果。 #include <stdio.h> void main( ) { int a=3,b=4; printf("%d %d\n",a,b); printf("%d,%d\n",a,b); printf("a=%d,b=%d\n",a,b); return; } 思考:在程序中增加如下两条语句,分析结果。 printf ("a=%d,b=%d,a+b=%d\n",a,b,a+b); printf ("a+b=%d+%d=%d\n",a,b,a+b);
4.3 格式输出函数printf 表4.1 printf函数的格式字符 格式字符 说明 d 以带符号的十进制形式输出 o 以无符号的八进制形式输出 X,x 以无符号的十六进制形式输出 u 以无符号的十进制形式输出 c 输出1个字符 s 输出字符串 f 以小数形式输出,默认输出6位小数 E,e 以指数形式输出小数
表4.2 printf函数的附加格式字符(%-m.nf) 说明 l 可加在格式符d,o,x,u前面,表示各种长整型 m 数据的输出宽度 n 对字符串,表示截取字符的个数 对实数,表示输出的小数位数 - 输出字符和数字靠左对齐
4.3 格式输出函数printf 2. 常用格式字符 d格式符: 用来输出一个有符号的十进制整数 %md(%-md): 指定输出数据的域宽printf(”%5d\n%5d\n”,12,-345); %d输出int型数据 %ld输出long型数据
4.3 格式输出函数printf 【例4.3】 按以下对齐方式输出数据。 1 1 12 21 123 321 1234 4321 解题思路: 1 1 12 21 123 321 1234 4321 解题思路: 在输出时用“%d”格式控制;左侧4个整数以最后一个数字对齐,右侧4个整数以第一个数字对齐,可分“%md”和“%-md”控制其对齐方式和输出宽度。
4.3 格式输出函数printf #include <stdio.h> void main( ) { { printf("%10d %-10d\n",1,1); printf("%10d %-10d\n",12,21); printf("%10d %-10d\n",123,321); printf("%10d %-10d\n",1234,4321); return; }
4.3 格式输出函数printf c格式符。用来输出一个字符 char ch=’a’; printf(”%c”,ch); 或
4.3 格式输出函数printf 【例4.4】字符数据的输出。 #include <stdio.h> void main( ) 【例4.4】字符数据的输出。 #include <stdio.h> void main( ) { char c1 ='a'; int c2= 65; printf("%3c->%3d\n",c1,c1); printf("%3c->%3d\n",c2,c2); return; }
4.3 格式输出函数printf %s: 用来输出一个字符串 printf(”%s”,”CHINA”); 通过下例程序(例4.5),思考 %ms、 %m.ns、%-m.ns 分别代表什么意思。
4.3 格式输出函数printf 【例4.5】字符串的输出。 #include <stdio.h> void main( ) { printf("%4s,%10s,%-5.2s, %7.3s\n", "Hello","Hello","Hello","Hello"); return; }
4.3 格式输出函数printf f格式符。用来输出实数,以小数形式输出 ①不指定数据宽度和小数位数,用%f printf(”%f\n”,1.0/3); ② 指定数据宽度和小数位数。用%m.nf printf("%10.2f\n",1.0/3); ③ 输出的数据向左对齐,用%-m.nf
4.3 格式输出函数printf 【例4.6】输出实数时的有效位数。 #include <stdio.h> 【例4.6】输出实数时的有效位数。 #include <stdio.h> void main( ) { float a,b; a=11111.11111; b=22222.22222; printf("%f\n",a+b); return; }
4.3 格式输出函数printf 【例4.7】输出实数时设置数据宽度和小数位数。 #include <stdio.h> #define PI 3.141592654 void main( ) {printf("不同精度的圆周率\n"); printf("%s\t%s\n","精度","圆周率"); printf("%2d\t%-8.0f\n",1,PI); printf("%2d\t%-8.1f\n",2,PI); printf("%2d\t%-8.4f\n",5,PI); printf("%2d\t%-8.5f\n",6,PI); printf("%2d\t%-8f\n",7,PI); return; }
4.3 格式输出函数printf e格式符: 以指数形式输出实数 %e: 小数位数占6列, 指数部分占5列 小数点前必须有且只有1位非零数字 13-15 11.5 输出: 1.23e+002 (前面4个空格)
4.4 格式输入函数scanf 1. scanf 函数的一般形式 scanf(格式控制,地址表列) 含义同printf函数 以%开始,以一个格式字符结束,还可以插入普通的字符,如: scanf("a=%f,b=%f,c=%f",&a,&b,&c);
4.4 格式输入函数scanf 1. scanf 函数的一般形式 scanf(格式控制,地址表列) 变量的地址 变量的地址就是在变量名前加上地址操作符”&”
4.4 格式输入函数scanf 【例4.8】用scanf函数输入数据。 #include<stdio.h> void main() { int a,b,c; scanf(“%d%d%d”,&a,&b,&c); printf(“%d,%d,%d\n”,a,b,c); } a在内存中的地址 连续输入数值时,可以空格或回车结束.
4.4 格式输入函数scanf 注意:格式声明中可插入其他字符,输入时需对应。 思考:要使a、b、c的值分别为1、2、3,以下程序运行时,该如何输入数据。 #include<stdio.h> void main() { int a,b,c; scanf(“%d,%d,%d”,&a,&b,&c); printf(“%d,%d,%d\n”,a,b,c); }
4.4 格式输入函数scanf 2.使用scanf函数时应注意的问题 scanf(”%f%f%f”,a,b,c); 错 对 对于 scanf("a=%f,b=%f,c=%f",&a,&b,&c); 哪种输入格式正确? 1 3 2↙ a=1,b=3,c=2↙ a=1 b=3 c=2↙ 错 对 错
4.4 格式输入函数scanf 3. 连续输入字符时,不以空格结束. 对于scanf(”%c%c%c”,&c1,&c2,&c3); abc↙ 对 a b c↙ 错 对于scanf(”%d%c%f”,&a,&b,&c); 若输入 1234a123o.26↙
4.5 字符数据的输入输出 1.用putchar函数输出一个字符 功能:从计算机向显示器输出一个字符 形式: putchar(c) 常量或变量
4.5 字符数据的输入输出 【例4.9】 先后输出GOOD四个字符。 解题思路: 定义4个字符变量,分别赋初值G、O、O、D 用putchar函数输出这4个字符变量的值
4.5 字符数据的输入输出 #include <stdio.h> void main ( ) { char c1='G' ,c2='O',c3='O', c4='D'; putchar(c1); putchar(c2); putchar(c3); putchar(c4); putchar('\n'); return; }
4.5 字符数据的输入输出 2. 用getchar函数输入一个字符 功能:向计算机输入一个字符 形式: c=getchar( ) 没有参数 输入的字符可以赋给字符变量c。
4.5 字符数据的输入输出 【例4.10】将例题4.9中的四个字符改为键盘输入,并逐个输出。 解题思路: 用4个getchar函数先后从键盘向计算机输入GOOD四个字符 用putchar函数输出
4.5 字符数据的输入输出 #include <stdio.h> void main ( ) { char c1 ,c2 ,c3 , c4; c1=getchar(); c2=getchar(); c3=getchar(); c4=getchar(); putchar(c1); putchar(c2); putchar(c3); putchar(c4); putchar('\n'); return; }
4.5 字符数据的输入输出 putchar(getchar()); #include <stdio.h> void main ( ) { char c1,c2,c3,c4; c1=getchar(); c2=getchar(); c3=getchar(); c4=getchar(); putchar(c1); putchar(c2); putchar(c3); putchar(c4); putchar('\n'); } putchar(getchar());
4.5 字符数据的输入输出 putchar(getchar()); putchar(getchar()); #include <stdio.h> void main ( ) { char c1 ,c2 ,c3 , c4; c1=getchar(); c2=getchar(); c3=getchar(); c4=getchar(); putchar(c1); putchar(c2); putchar(c3); putchar(c4); putchar('\n'); } putchar(getchar()); putchar(getchar());
4.5 字符数据的输入输出 putchar(getchar()); putchar(getchar()); #include <stdio.h> void main ( ) { char c1,c2,c3,c4; putchar('\n'); } putchar(getchar()); putchar(getchar()); putchar(getchar()); putchar(getchar());
4.5 字符数据的输入输出 思考: ①在运行时,输入字符G后按Enter键,再输入字符O,按Enter键,分析结果。 思考: ①在运行时,输入字符G后按Enter键,再输入字符O,按Enter键,分析结果。 ②将程序改为如下程序段,运行时输入GOOD,分析结果。 putchar(c1+32); putchar(c2+32); putchar(c3+32); putchar(c4+32); 请同学们自己上机完成!
4.6 顺序结构程序的编写 以下题目,请同学们自己上机完成! 1.有一圆柱体,底半径为r,圆柱高为h, 求圆柱底面积、圆柱表面积和圆柱体积。输出时要有文字说明,结果保留两位小数。 提示:C编译系统不知圆周率的值。可定义一个符号常量PI,并给其赋初值。
4.6 顺序结构程序的编写 2.输入任意一个三位数,将其各位数字反序输出(例如:输入123,输出321)。 提示:分别计算出一个三位数的百位、十位、个位。 3.输入一个小写字母,将其转换成大写字母后输出。
重点: 难点: 本章小结 1 2 3 1 2 printf函数、scanf函数 putchar函数、getchar函数 常用数学函数的使用 按指定的格式输出各种类型的数据 2 使用scanf函数时,数据的输入形式
本章结束!