c第3章教学zp.docx
《c第3章教学zp.docx》由会员分享,可在线阅读,更多相关《c第3章教学zp.docx(13页珍藏版)》请在冰豆网上搜索。
c第3章教学zp
第三章顺序结构程序设计
3.1顺序结构程序设计的思想
3.2实现顺序结构程序设计的基本语句
一、赋值语句(P22)
二、数据输出(P22)
三、数据输入函数(scanf)(P26)
四.单个字符输出(putchar)函数
五.复合语句和空语句(P29)
3.3顺序结构程序设计举例
第三章顺序结构程序设计
3.1顺序结构程序设计的思想
在顺序结构程序中,程序的执行是按照各语句出现的先后次序,顺序执行的,并且每个语句都会被执行到。
例如:
已知某个三角形的底和高,计算其面积。
问题分析:
设height表示三角形的高,width表示三角形的底,则三角形面积为:
area=width*height/2
解决该问题的算法用传统流程图描述如下:
从图中可以看出,顺序结构程序通常由三部分组成:
①输入数据:
②进行处理:
③输出结果:
3.2实现顺序结构程序设计的基本语句
在C语言描述顺序结构程序中,通常使用的语句有:
输入数据函数调用语句(scanf,getchar等(用于实现数据输入)、赋值语句(用于实现运算处理或数据输入)、输出数据函数调用(printf,putchar等)用于实现数据输出)等。
一、赋值语句(P22)
赋值语句是由赋值表达式加上一个分号构成的。
最简单的一种形式为:
变量=表达式;
例如:
rad=14.5;/*将实型数赋给变量rad*/
cir=2*3.14*rad;/*将表达式2*3.14*rad的值赋给变量cir*/
说明:
“=”是赋值符号,赋值符号的右边是由常量、变量、运算符和函数组成的表达式。
因赋值语句是由赋值表达式加上一个分号构成,所以下面是合法的赋值语句:
i++;
x+=2;
j--;
在顺序结构的程序中,赋值语句不仅用于为变量进行赋值,同时还大量用于运算处理。
二、数据输出(P22)
C的输入/输出操作是由标准库函数来实现的。
如:
printf(),scanf()等,在使用这些函数时,必须使用预编译命令#include将头文件“stdio.h”(standardinput&output缩写)包括到用户源文件中。
1.printf()格式输出函数(P22)
格式输出函数printf()的功能是按指定的格式向显示器输出一个或多个任意类型的数据。
printf()函数的一般调用形式为:
printf(“格式控制串”[,输出项表]);
例如:
printf(“hello”);
printf(“Theareais:
%f\n“,area);
Theareais:
13
说明:
①格式控制。
格式控制的两边必须用引号,其中的内容可以包含:
普通字符、格式说明符和转义字符3类信息,并且这3类信息可以交叉出现。
(a)普通字符:
即需要原样输出的字符信息。
(b)格式说明符:
用%开头后面跟有一个字母,它规定了输出项的输出形式。
格式说明符在个数和类型上应与输出项匹配。
常用的格式说明符见下表。
(P23表3。
1)
格式说明符
输出
%d
带符号的十进制整数
%c
单个字符
%s
字符串
%f
以小数形式输出浮点数,隐含输出6位小数
%e
以指数形式输出浮点数,保留6位小数
%g
使用%f和%e中输出宽度较短者,不输出无意义的零
%o
不带正、负号的八进制整数
%u
不带正、负号的十进制整数
%x
不带正、负号的十六进制整数
例3.1输出形式举例1
#include
main()
{
intnum1,num2;
floatreal1,real2,real;
charch;
num1=65;
num2=-3;
real1=234.5;
real2=18.75;
real=real1+real2;
ch='A';
printf("%d%c%d%o%f%c%d",num1,num1,num2,num2,real,ch,ch);
printf("%s\n","Verygood");
}
运行情况:
说明:
整型变量可以以字符的形式输出,而字符变量也可以整数的形式输出,ASCII码是他们之间的桥梁。
负数在计算机内存中是以补码的形式存放。
变量num2的值为-3,-3的补码为:
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
用八进制表示即:
177775,所以变量num2以%o的格式输出时,显示177775。
(c)附加格式字符(P24)
字符
说明
字母l,h
l用于长整型整数,h用于短整型或无符号短整型整数,可以加在格式字符d,o,x,u前面
m(代表一个正整数)
数据的输出宽度
n(代表一个正整数)
对实数,表示输出小数位的位数;对字符串,表示截取的字符个数
-
输出的数字或字符向左靠齐
案例3.2输出形式举例2
#include
main()
{
intnum1=123;
longnum2=1234567;
floatreal=123.4567;
printf("%d,%6d,%-6d,%2d\n",num1,num1,num1,num1);
printf("%ld,%8ld,%4ld\n",num2,num2,num2);
printf("%f,%10f,%10.2f,%-10.2f\n",real,real,real,real);
printf("%s,%10.5s,%-10.5s\n","student","student","student");
}
运行情况如下:
阅读P24表3.2
阅读P25表3.3
阅读P25表3.4
阅读P26表3.5
(d)转义字符
以“\”开头的字符序列。
如“\n”其作用时在输出时产生一个“换行”
C语言常用转义字符
字符形式
功能
\n
换行
\t
横向跳格(即跳到下一个输出区,一个输出区占8列)
\v
竖向跳格
\b
退格
\r
回车(光标回到本行首)
\f
走纸换页
\\
反斜杠字符“\”
\’
单引号字符
\ddd
1到3为八进制数所代表的字符
\xhh
1到2为十六进制数所代表的字符
例3.3输出形式举例3
#include
main()
{
chara,b,c;
a='n';
b='e';
c='w';
printf("%c%c%c\n",a,b,c);
printf("%c\t%c\t%c\n",a,b,c);
printf("%c\n%c\n%c\n",a,b,c);
}
运行情况如下:
②输出项表。
输出项表中可以有多个输出项,各项之间用逗号分隔。
2.Printf()函数在使用时要注意以下几点:
(P26)
(a)Printf()函数可以输出常量、变量和表达式的值。
但格式控制中的格式说明符必须按从左到右的顺序,与输出项表中的每个数据一一对应,否则会出错。
(b)类型转换字符紧跟在“%”后面时作为类型转换字符,否则将作为普通字符处理(即原样输出)。
例如:
Printf(“c=%c,f=%f\n”,c,f)中的第一个c和f都是普通字符。
三、数据输入函数(scanf)(P26)
格式输入函数scanf()的功能是用来从外部输入设备(通常是键盘),向程序中的变量输入一个或多个任意类型的数据。
1.scanf()函数的一般调用形式为:
scanf(“格式控制”,输入项表);
例如:
scanf(“%d%f”,&x,&y);
说明:
①格式控制。
格式控制的两边必须用引号,其中的内容可以由格式说明符和普通字符组成。
(a)普通字符。
普通字符在输入数据时,必须在对应位置上原样输入这些字符。
例如:
scanf(“character:
%c,real:
%f”,&x,&y);
函数中的:
“character:
”、“real:
”和“,”都是普通字符,则在实际运行时输入:
character:
w,real:
12.5↙
(b)格式说明符。
scanf()中的格式说明符的使用与printf()函数相似,必须用%开头后面跟一个字母(也可在其中间增加附加字符),它规定了输入项对应的输入数据格式。
同样格式说明符要在个数和类型上与输入项相匹配。
scanf()函数常用的格式说明符及附加字符见下表:
scanf()函数格式说明符
格式说明符
输入内容
%d
十进制整数
%o
八进制整数
%x
十六进制整数
%c
单个字符
%s
输入一个字符串,输入时以非空白字符开始,以第一个空白字符结束。
(字符串送到一个字符数组中)
%f
实数。
可以用小数形式或指数形式输入
%e
同%f,e与f可以相互替换
scanf()函数附加格式说明符
附加说明字符
说明
l
用于输入长型数据:
%ld,%lo,%lx等
h
用于输入短整型数据:
%hd等
域宽m
指定输入数据所占的列数
*
表示本输入数据在读入后不赋给相应的变量
②输入项表。
输入项表中是要输入数据的变量的存储单元地址。
“&”是地址运算符,“&x”表示变量x在内存中的地址。
2.scanf函数在使用时,从键盘输入数据要注意以下几点:
(a)scanf函数没有计算功能,因此输入的数据只能是常量,而不可以是表达式。
例如:
scanf(“%d%d%d”,&x,&y,&z);
表示要输入3个十进制整数,可按以下方式输入:
123456↙
或12↙
3456↙
例如:
scanf(“%c%c”,&c1,&c2);
表示要输入两个字符型数据,按以下方式输入:
ab↙
则字符a符给变量c1,字符b符给变量c2。
(b)输入格式中,除格式说明符之外的普通字符应原样输入。
例如:
scanf(“x=%d,y=%d,z=%d”,&x,&y,&z);
应使用以下形式输入:
x=12,y=34,z=56↙
(c)如果指定了输入数据的宽度,系统则自动按它截取所需的数据。
例如:
scanf(“%4d%4d%4d”,&x,&y,&z);
输入:
123434565678↙
则系统自动将1234赋予x,将3456赋予y,将5678赋予z。
注意:
在输入实数时,不能规定小数位。
例如:
scanf(“%6.2f”,&x);是错误的。
(d)在%后面使用“*”附加符,表示跳过它相应的数据。
例如:
scanf(“%4d,%*4d%4d”,&x,&y);
输入:
1234,3456,5678↙
则系统将1234赋给x,将5678赋给y,而第2个数据“3456”被跳过不赋给任何变量。
(e)由于scanf()函数本身不具有显示提示信息功能,为改善人—机交互性,在设计输入操作时,一般先用printf()函数输出一个提示信息,然后再用scanf()函数进行数据输入。
例如:
printf(“Enterwidthandheight:
”)/*输出提示信息*/
scanf(“%f,%f”,&width,&height)
四.单个字符输出(putchar)函数
putchar()函数的功能是用于将一个字符输出到显示器上显示。
putchar()函数的一般调用形式为:
putchar(c);
即把变量c的值输出到显示器上,这里的c可以是字符型或整型变量,也可以是一个转义字符。
例3_4:
putchar()函数应用举例
#include
voidmain()
{
chara,b,c,d;
a='g';
b='o';
c=111;
d='d';
putchar(a);
putchar(b);
putchar(c);
putchar(d);
}
运行情况如下:
good
说明:
putchar()函数只能用于单个字符的输出,并且一次只能输出一个字符。
五.单个字符输入(getchar和getch)函数
(1)getchar()函数
getchar()函数的一般调用形式为:
c=getchar();
例3_5:
getchar()函数应用举例
#include
voidmain()
{
charc;
c=getchar();/*接收用户从键盘上输入的一个字符*/
putchar(c);/*输出字符变量c的值*/
}
运行情况如下:
h↙
h
说明:
getchar()函数只能用于单个字符的输入,且一次只能输入一个字符
(2)getch()函数
getch()函数与getchar()函数功能相似,也是用来实现接收从键盘输入一个字符。
其区别在于:
使用getchar()函数输入字符时,需要使用回车键确认输入,而getch()函数则不必使用回车键确认输入,只需输入字符即可。
getch()函数的一般调用形式为:
c=getch();
或
getch();/*用于等待用户从键盘输入任意键返回。
*/
说明:
getch()函数在使用时要在预定义中包含头文件:
conio.h
例3_6:
应用举例
#include
voidmain()
{charc1='H',c2='\55',c3='h';
charc4='\115';
charc5='a';
putchar(c1);
putchar(c2);
putchar(c3);
printf("\n");
putchar(c4);
putchar(c5);
putchar('k');
printf("\n");
}
运行结果:
H-h
Mak
五.复合语句和空语句(P29)
1.复合语句
2.空语句
(自学)
3.3顺序结构程序设计举例
例3_7:
编程实现输入某个三角形的底和高,计算其面积。
#include
voidmain()
{
floatwidth,height,area;
printf("Enterwidthandheight:
");
scanf("%f,%f",&width,&height);
area=width*height/2.0;
printf("Theareais:
%f\n",area);
}
运行结果为:
Enterwidthandheight:
2.5,4↙
Theareais:
5.000000
例3.8P30例3.1实现两个数据的交换,并进行验证。
#include
main()
{intx,y,t;
printf("Enterx&y:
\n");
scanf("%d%d",&x,&y);
printf("x=%dy=%d\n",x,y);
t=x;x=y;y=t;
printf("x=%dy=%d\n",x,y);
}
例3.9P30例3.2输入一个double类型的数,使该数保留小数点后两位,对第三位小数进行四舍五入。
#include
main()
{doublex;
printf("Enterx:
");
scanf("%lf",&x);
printf("
(1)x=%f\n",x);
x=x*100;
x=x+0.5;
x=(int)x;
x=x/100;
printf("
(2)x=%f\n",x);
}
例3.10某商场营业员工资的计算方法是:
每月300元的基本工资加总销售额的8.5%提成。
要求编一程序,输入某营业员的月总销售额,计算并显示该营业员的月收入。
问题分析:
设总销售额为m,月收入为salary
则:
salary=300+m*8.5%
#include
main()
{floatm,salary;
printf("pleaseinputthetotalsales:
");
scanf("%f",&m);
salary=300+m*0.085;
printf("thesalaryis%f:
\n",salary);
}
作业: