c语言3选择结构流程及应用文档格式.docx
《c语言3选择结构流程及应用文档格式.docx》由会员分享,可在线阅读,更多相关《c语言3选择结构流程及应用文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
(I/2==0)
If语句
简单if语句格式:
If(条件)语句;
if(x%2==0)printf(“\nxiseven”);
if–else语句格式:
if(条件)语句1;
else语句2;
elseprintf(“\nxisodd”);
嵌套if–else语句格式:
if(条件1)语句1;
elseif(条件2)语句2;
:
elseif(条件n-1)语句n-1;
else语句n;
条件运算
条件运算符:
?
条件表达式:
表达式1?
表达式2:
表达式3
y=x>
0?
x:
-x;
Switch语句
Switch语句格式:
switch(表达式)
{
case常量表达式1:
语句序列1;
case常量表达式2:
语句序列2;
…
case常量表达式n:
语句序列n;
default:
语句序列n+1;
}
例题
P301
/***************************************************
问题3.1:
关系运算符和关系表达式
知识点说明:
1)关系运算符;
2)用途:
用于比较两个操作数之间的关系;
3)关系运算:
比较两个操作数,如果符合关系运算符指定的关系,则关系运算结果为1,否则为0
4)关系运算的取值:
0或者1,0即逻辑“假”,1即逻辑“真”
****************************************************/
#include"
stdio.h"
voidmain()
{intiX=3,iY=4,iZ=5;
/*变量定义*/
printf("
iX=%d,iY=%d,iZ=%d\n"
iX,iY,iZ);
iX>
iYis%d\n"
iX>
iY);
/*关系运算与关系表达式*/
iX<
iX<
iY==iX>
/*复杂的关系运算*/
=iYis%d\n"
=iY);
(iX+iY)==iZis%d\n"
(iX+iY)==iZ);
/*含有算术表达式的关系运算*/
getch();
}
P302
问题3.2:
逻辑运算符和逻辑表达式
1)逻辑运算符;
对操作数(操作对象)作逻辑“与”、“或”、“非”运算;
3)真值表;
4)逻辑表达式:
用逻辑运算符连接操作对象的表达式
5)复合运算:
先算算术表达式,再算关系表达式,最后算逻辑表达式
{intiX=3,iY=4;
iX=%d,iY=%d\n"
iX,iY);
=5&
=-5is%d\n"
=-5);
/*逻辑运算与复合表达式*/
iY||iX+iY==8is%d\n"
iY||iX+iY==8);
'
A'
iX-iY<
0is%d\n"
'
0);
/*含字符常量的复合表达式*/
2.56is%d\n"
!
2.56);
/*逻辑非运算*/
99&
iY||iX*iY==12is%d\n"
iY||iX*iY==12);
getch();
P303
问题3.3:
逻辑运算符
1)==运算与=运算的区别:
前者是关系运算,后者是赋值运算;
2)数学中的不等式:
用c语言来写时要注意写法的区别;
/*变量与变量的初始化*/
iY&
(iX=10)is%d\n"
(iX=10));
/*&
运算前的表达式为0,则整个表达式为0*/
iX=%d\n"
iX);
iY||(iY=11)is%d\n"
iY||(iY=11));
/*||运算前的表达式为非0,则整个表达式为非0*/
iY=%d\n"
iY);
}
P304
问题3.4:
数的绝对值
1)简单if语句:
if(条件表达式)语句
2)条件表达式的构成:
关系表达式、逻辑表达式、复合表达式
3)if语句的作用:
有条件地执行语句,或者有选择地执行语句
{intiX,iY;
Pleaseinputaninteger:
"
);
scanf("
%d"
&
iX);
/*输入一个整数*/
iY=iX;
if(iX<
0)/*单分支的选择结构,根据条件(iX<
0),选择是否执行语句iY=-iX*/
iY=-iX;
\n|%d|=%d"
P305
问题3.5:
电灯开关
1)if-else语句:
if(条件表达式)
语句1;
else
语句2;
2)if-else语句的含意:
根据条件,选择执行语句1或者语句2
{intiOnOff;
Pleaseinput1oraninteger:
iOnOff);
if(iOnOff!
=0)/*双分支选择结构,根据条件决定跑哪一分支*/
\nThelightison."
/*条件成立时执行的语句*/
\nThelightisoff."
/*条件不成立时执行的语句*/
P306
/*****************************/
{intiX,iY,iMax;
Pleaseinput2integers:
%d%d"
iX,&
iMax=iX>
iY?
iX:
iY;
/*用条件运算符?
:
来实现双分支选择结构*/
iMax=%d"
iMax);
P307
***********************************************************
问题3.7:
分段函数
1)多分支选择结构的格式
2)多分支选择结构的执行过程:
-遇到第1个条件为真时执行相应的语句,
然后跳到if之后的下一个语句执行
-如果没有一个条件为真,则执行最后一个else之后的语句
***********************************************************/
Pleaseinputanintegers:
if(iX>
5)/*多分支选择结构的实现*/
iY=iX+3;
elseif(iX<
0)
iY=2*iX+30;
iY=0;
printf("
f(%d)=%d"
P308
问题3.8:
成绩等级转换
1)多分支选择结构的应用
{floatfScore;
Pleaseinputyourscore:
%f"
fScore);
if(fScore>
=90&
fScore<
=100)/*复杂的多分支选择结构*/
YourgradeisA."
elseif(fScore>
=80&
90)
YourgradeisB."
=70&
80)
YourgradeisC."
=60&
70)
YourgradeisD."
0&
60)
YourgradeisE."
Invalidinput."
P309
问题3.9:
驾照判别
1)switch语句的格式
2)用switch语句实现多分支选择
3)switch语句的执行过程
-当表达式遇到第1个匹配的case时,执行该case之后相应的语句
-一般每个case之后的语句组中,最后一个语句应该是break语句
-break语句用于使程序跳出switch语句体
{charchLicence;
Pleaseinputyourdrivinglicence:
%c"
chLicence);
switch(chLicence)/*用switch语句实现多分支选择结构*/
{
case'
Youcandrivebus,car,truck."
break;
B'
Youcandrivecar,truck."
C'
Youcandrivecar."
D'
Youcandriveautobikeonly."
default:
InputError."
P310
问题3.10:
1)switch语句的应用
2)switch语句
-允许case后为空
intiTemp=-1;
Pleaseinputascore:
=0&
fScore<
=100)
iTemp=fScore/10;
switch(iTemp)
case0:
/*0-59分,"
E"
*/
case1:
case2:
case3:
case4:
case5:
break;
case6:
D"
case7:
C"
case8:
B"
case9:
/*90-100分,"
A"
case10:
InvalidInput!
P311
问题3.11:
对一个随机数的判断
1)随机数产生:
涉及的函数
-srand函数为随机函数初始化,头文件为"
stdlib.h"
-time函数时间函数,产生系统时间,头文件为"
time.h"
-rand函数随机函数,产生随机的正整数,头文件为"
2)srand((unsigned)time(NULL)):
以系统时钟作为随机数初始化的随机种子;
3)rand():
无需参数,直接产生随机数
{inta;
srand((unsigned)time(NULL));
a=rand();
if(a%2==0)
\n%d:
EVEN"
a);
ODD"
P312
问题3.12:
产生100个两位随机整数
{inta,i;
for(i=0;
i<
100;
i++){
a=10+rand()%90;
%d\t"
if(i%10==9)printf("
\n"
练习
任务1(P301):
求以下列函数的值。
注:
1)当输入自变量x的值后,求出对应的函数y的值,将x和y的值显示出来;
2)输入的x值大于等于0时的y值与x值小于0时的y值,计算方法是不一样的。
任务2(P302):
编一程序,从键盘输入3个整数,显示输出较大的一个。
程序涉及到1)变量的定义;
2)数据的输入;
3)数据之间的大小关系的判断;
4)判断结果的显示。
任务3(P303):
从键盘上输入一整数,判断它的奇偶性。
如果输入的是奇数,则在屏幕上输出“ODD”,如果输入的是偶数,则在屏幕上输出“EVEN”。
任务5(P304):
输入三个实数a,b,c(满足a≠0),解一元二次方程ax2+bx+c=0。
a当b2-4ac>
0时,方程有两个不等的实根;
a当b2-4ac=0时,方程有两个相等的实根;
a当b2-4ac<
0时,方程有一对共轭复根;
编程时1)要对输入的参数a判断,如果a=0时,显示“Invalida!
”,然后结束程序;
2)要对方程的根的判断式进行判断,并进行相应的计算,给出相应的显示结果。
任务6(P305):
判断一个年份是否闰年。
答案
p301
{intX,Y;
X);
if(X<
Y=2*X-1;
Y=3*X-1;
Y\n%d"
Y);
p302
{inta,b,c,Max;
Pleaseinputthreeinteger:
%d%d%d"
a,&
b,&
c);
if(a>
b&
b>
c)/*a>
c是错误的表达方式*/
Max=a;
{if(b>
c&
a)
Max=b;
Max=c;
Max\n%d"
Max);
p303
****************************************************/
{intx;
Pleaseenteranumber:
x);
if(x%2==0)
\nEVEN"
\nODD"
p304
math.h"
{inta,b,c;
floatx1,x2;
pleaseenter3numbers"
if(a==0)
Invalida!
{if(b*b-4*a*c>
{x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
printf("
%f%f"
x1,x2);
elseif(b*b-4*a*c==0)
{x2=x1=(-b+sqrt(b*b-4*a*c))/(2*a);
Norealrootexist"
p305
#include"
conio.h"
voidmain()
{inty;
pleaseenterayear:
y);
if(y%4==0&
y%100!
=0||400)
\ntheyearisrunnian"
\ntheyearisnotpinnian"