内容正文:
教案用纸
第 3 周 总第 8 次 学时:2
教学班级: 课程:C语言程序设计 授课教师:
课题:选择结构的上机操作
教学方法:启发、实例
教具:计算机
教学目标:通过上机巩固标准输入输出以及C语言流程控制
教学重点:选择结构程序设计的输出
教学难点:printf( )、scanf( )函数在实际中的使用
主要教学内容:
选择结构的上机操作
1、输入一个三位的整数,分解它的符号、百位数字、十位数字和个位数字,然后依次输出。
2、从键盘上输入两个数,找出并输出其中较大的数。
3、思考用switch语句编程实现,输入一个x,按照函数要求输出一个y值。
课后回顾:
教案用纸
四个一
提问:输入输出函数都包括哪些?
导入:我们已经学习了标准的输入输出以及C语言的选择结构,这次课我们通过上机操作验证结果是否正确。
正文:
选择结构的上机操作
1、输入一个三位的整数,分解它的符号、百位数字、十位数字和个位数字,然后依次输出。
解:首先通过条件语句判断该整数是否大于0,如果大于0,则将“+”号赋给c4,如果小于0,则将“-”号赋给c4。然后对该数取绝对值,再将该值除以10取余数,再将该余数加上48(将其变成这个数字对应的字符),得到该数的个位。将该数除以10再赋给x,得到该数去掉个位的结果(如原来x是123,得到12)。同样方法,再将新得到的x同样先除10取余数再加上48,得到十位上的数字。最后将x除10取商,得到该数的百位数字。最后输出符号及每位上的数字。
源程序如下:
#include <stdio.h>
#include <math.h> /*程序中使用了数学函数abs*/
main()
{ char c1,c2,c3,c4; /*定义变量*/
int x;
printf("please input a numer:"); /*输入提示信息*/
scanf("%d",&x); /*键盘输入x的值*/
c4=x>=0?'+':'-'; /*将x的符号赋c4*/
x=abs(x); /*取x的绝对值*/
c3=x%10+48;
/*求得 x 的个位数字,加48转换为对应数字字符的 ASCII 码值*/
x=x/10; /*去掉个位数,取出 x的高位*/
c2=x%10+48; /*求得x的十位数字,加48转换为对应的ASCII码值*/
c1=x/10+48; /*求得x的百位数字, 加48转换为对应的ASCII码值*/
printf("%c
%c
%c
%c
",c4,c1,c2,c3);
}
程序运行结果如下:
2、从键盘上输入两个数,找出并输出其中较大的数。
解:源程序如下:
main()
{ int x,y;
printf("Enter x&y: ");
scanf("%d %d",&x,&y);
if(x>y)
printf("max=x=%d
",x);
else
printf("max=y=%d
",y);
printf("**end**
");
}
程序运行结果分析:当执行以上程序时,若把5输入给变量x,把3输入给变量y;则if后表达式x>y的值为1,因此,将执行if子句,输出x的值;然后调用最后一行中的printf函数,输出字符串:**end**。如果给x输入3,给y输入5,这时if语句中表达式x>y的值为0,因此将跳过if子句,直接执行else分支中的else子句,输出y的值;然后执行最后一行中的语句,输出字符串:**end**。
程序运行结果如下:
3、思考用switch语句编程实现,输入一个x,按照函数要求输出一个y值。
-1 (x<0)
y= 0 (x=0)
1 (x<0)
解:分析题意,得出编程思路如下:
(1)定义变量x,y;
(2)输入x的值;
(3)判断输入x值的不同情况,求出对应y的值;
(4)输出y的值。
解题程序如下:
main()
{ int x,y;
printf("
input x : ");
scanf("%d",&x);
if(x<0) /*如果x大于0,给y赋相应值-1*/
y=-1;
else if(x==0) /*否则继续判断,如果x等于0,给y赋相应值0*/
y=0;
else
y=1; /*否则给y赋相应值1*/
printf("
output y : %d",y); /*输出y的对应值*/}
程序运行结果如下:
小结:这节课我们通过上机巩固了标准输入输出以及C语言的流程控制的上机操作,希望大家能够熟练掌握。
备 注
难点:预定义数学函数的使用。
思考:使用条件运算符能否解决这个问题。
思考:我们还可以使用其它方式来完成这个问题吗?
学科网(北京)股份有限公司
$$