最实用的C语言教程5.docx
《最实用的C语言教程5.docx》由会员分享,可在线阅读,更多相关《最实用的C语言教程5.docx(21页珍藏版)》请在冰点文库上搜索。
最实用的C语言教程5
第5章选择结构程序设计
选择结构又叫分支结构,用于在几个可选择的分支之间进行选择。
选择结构是结构化程序设计的基本结构之一,在C程序中,可以使用if和switch两种语句进行逻辑判断,实现选择结构。
本章将详细介绍如何在C程序中实现选择结构。
5.1关系运算和逻辑运算
5.1.1关系运算符与关系表达式
关系运算符比较两个表达式并决定两者的关系,关系运算的结果是假(0)或真(非0)。
表5-1中给出了C语言中的关系运算符。
使用关系运算符时要注意以下几点:
表5-1
操作符
用法
>
大于
>=
大于或等于
<
小于
<=
小于或等于
==
等于
!
=
不等于
⑴由两个字符组成的运算符之间不可加空格,如>=不能写成>=。
⑵关系运算符中,>、>=、<、<=四种运算符的优先级相同,==和!
=两种运算符的优先级相同,且前四种运算符的优先级高于后两种。
⑶关系运算符、算术运算符和赋值运算符之间的优先次序依次是:
算术运算符级别最高,关系运算符次之、赋值运算符最低。
关系运算符按照从左到右的顺序结合。
由关系运算符组成的表达式,称为关系表达式。
关系运算符两边的运算对象可以是C语言中任意合法的表达式,例如:
a>=b、(a=3)>(d=4)、a>b==c。
在C语言中,没有专门的“逻辑值”,而是用零来代表“假”,用非零来代表“真”,因此,关系运算的结果是1或0。
例如:
设a=4,b=2,则关系表达式a>=b的结果为“真”,表达式值=1。
关系表达式2*5>1+6的结果为“真”,表达式值=1。
关系表达式2+3==1+4*2的结果为“假”,表达式值=0。
关系表达式5+(8>1+6)的值=6。
关系运算符“==”和赋值运算符“=”很容易混淆,必须注意两者之间的区别。
⑴赋值运算符“=”
赋值运算的一般形式为:
<变量名>=<表达式>
赋值运算符的左面只能是一个变量名,用等号右面的表达式的值对其赋值。
运算结果的数据类型取决于赋值号左面变量的数据类型,可以是整型、实型、字符型等。
如表达式str=‘a’是一个赋值表达式,结果是字符型的。
⑵关系运算符“==”
关系运算“==”的一般形式为:
<表达式1>==<表达式2>
关系运算“==”是在两个表达式之间进行的,左面的表达式可以是一个变量,也可以是一个常数或表达式。
运算结果的数据类型只能为整型(0或1)。
如表达式str==‘a’是一个关系表达式,结果是0或1。
关系运算往往作为条件出现在if语句的条件或循环判断条件之中,一般不单独使用。
5.1.2逻辑运算符与逻辑表达式
C语言提供三种逻辑运算符,如表5-2所示:
表5-2
运算符
含义
优先级
||
逻辑或(OR)
低
&&
逻辑与(AND)
中
!
逻辑非(NOT)
高
在一个逻辑表达式中如果包含多个逻辑运算符,按优先级由高到低(!
(非)→&&(与)→||(或))进行运算。
如:
a&&!
b相当于(!
a)&&(!
b)
a||b&&c相当于a||(b&&c)
表5-3中给出了C语言中的逻辑运算规则。
表5-3
a
b
a&&b
a||b
非0
0
1
用逻辑运算符将关系表达式或逻辑量连接起来构成逻辑表达式。
在C程序中,经常会使用逻辑运算符,将简单的条件组合起来,形成更复杂的条件。
例如,为了表示数学表达式0≤a≤5,我们可以使用这样一个逻辑表达式:
a>=0&&a<=5。
【例5-1】判断某年份(year)是否为闰年的条件是看此年份是否满足下述两个条件之一:
⑴能被4整除但不能被100整除;
⑵能被400整除;
由此得到作为判断某年份是闰年的逻辑表达式:
year%4==0&&year%100!
=0||year%400==0
假设year=1900,将year值代入此表达式,得到表达式的值=0,说明1900年不是闰年;假设year=2000,将year值代入此表达式,得到表达式的值=1,说明2000年是闰年。
反之,可得到判断某年份不是闰年的逻辑表达式:
(year%4==0&&year%100!
=0||year%400==0)
【例5-2】计算机等级考试分笔试和上机考试两部分,可以通过以下逻辑表达式来判定某考生是否通过考试:
笔试>=60&&机试>=60,该考生通过考试;
笔试<=60||机试<=60,该考生未通过考试但可以参加补考;
笔试<=60&&机试<=60,该考生未通过考试且不能参加补考。
逻辑运算符与其他运算符之间的优先级顺序由高到低按以下规定:
逻辑非(!
)算术运算符关系运算符逻辑与(&&)逻辑或(||)赋值运算符逗号运算符。
5.2if语句
5.2.1if语句的格式
简单if语句格式如下:
if(表达式)
语句;
有时我们会根据某个条件是否成立来决定做不做某件事。
比如出门时,根据天下不下雨,来决定要不要带伞。
即:
如果(下雨)
带伞;
这就可以用一个最简单的if语句来表示。
括号中的表达式可以是任何形式的,但它通常情况下包含一个关系表达式,如果它的结果为真,则执行语句,否则就跳过去不执行。
该语句的执行过程如图5-1所示。
图5-1
if(Number1>=Number2)
Number1=Number2;
该代码对变量Number1和Number2的值进行比较,如果Number1较大,则把Number2的值赋给Number1。
C语言中,用括号括起来的语句块与一个单语句等价,因此如果表达式的值为真时可以执行多个语句。
由此可以得到if语句的第二种形式:
{语句1;
语句2;
语句3;
}
该语句的执行过程如图5-2所示。
下面是有关if用法的一个简单的例子。
【例5-3】
if(Number1{Number1=Number2;printf(“ThebigNumberis%d”,Number1);}在这个例子中,如果Number1小于Number2,不仅要给Number1赋值,还要输出Number1。有时,我们需要在某种条件下让程序执行一个分支,否则执行另一分支。这时,可以采用If……else语句。if(表达式)语句1;else语句2;【例5-4】在学生分数高于或等于60分时显示Passed,否则显示Failed。如图5-3所示。图5-3程序如下:if(grade>=60)printf(“Passed\n”);elseprintf(“Failed\n”);【例5-5】某商品的零售价为每公斤8.5元,批发价为每公斤6.5元,购买量在10公斤以上,便可按批发价计算,设某顾客购买此商品weight公斤,请编程计算该顾客需付费(pay)多少?程序如下:main(){floatweight,pay;printf(“Pleaseinputtheweight:”);scanf(“%f”,&weight);if(weight>=10)pay=weight*6.5;elsepay=weight*8.5;printf(“Youshouldpay%fyuans\n”,pay);}5.2.2if语句的嵌套if和else子句中,可以是任意合法的C语句或语句块,如果这子句是个if语句,则构成了if语句的嵌套。内嵌的if语句可以嵌套在if子句中,也可以嵌套在else子句中。嵌套的if语句有以下几种格式:if(条件1)if(条件2)语句1;else语句2;else语句3;if(条件1)语句1;elseif(条件2)语句2;else语句3;if(条件1)if(条件2)语句1;else语句2;elseif(条件3)语句3;else语句4;一般说来,嵌套的if语句可以对多种情况进行测试。【例5-6】根据输入的百分制成绩(score),要求输出成绩等级(grade)A、B、C、D、E。90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。用if语句实现,程序如下:main(){intscore;chargrade;printf(“\nPleaseinputascore(0~100):”);scanf(“%d”,&score);if(score>=90)grade=’A’;elseif(score>=80)grade=’B’;elseif(score>=70)grade=’C’;elseif(score>=60)grade=’D’;elsegrade=’E’;printf(“Thegradeis%c.\n”,grade);}程序的运行情况如下:Pleaseinputascore(0~100):86ThegradeisB.5.2.3条件运算符假设要编制一个程序,求两数中的较大数。执行的过程是比较a是否大于b,如果是,则较大数(max)为a,否则令max等于b。程序如下:if(a>b)max=a;elsemax=b;C语言提供了一种特殊的条件运算符,可以简化上面的语句。条件表达式的一般形式:表达式1?表达式2:表达式3条件表达式的执行过程:先计算表达式1的值,如果表达式1的值不等于0,则求解表达式2,表达式2的值作为整个条件表达式的值,否则,求解表达式3,表达式3的值作为整个条件表达式的值。若用条件运算符表示,则上面的语句可表示如下:max=a>b?a:b↓↓↓表达式①②③条件运算符的优先级高于赋值运算,低于其他运算。其功能相当于一个if-else语句。例如【例5-4】就可用条件表达式来实现:printf(grade>=60?“Passed\n”:“Failed\n”);。由此可见,使用条件表达式可以简化程序。5.3switch语句5.3.1switch语句的一般格式对于复杂的if语句,如果嵌套过多就会使程序结构复杂。许多语言都有另一种可选语句,在C语言中,它称为switch语句。if语句只对一个值进行检验,而switch语句根据不同值产生不同分支。switch语句的一般形式为:switch(表达式){case值1:语句1;[break;]case值2:语句2;[break;]……case值N:语句N;[break;][default:语句N+1;]}其中的表达式的数据类型只能为整型或字符型,语句可以是任何有效的语句或语句块。5.3.2switch语句的执行过程执行switch语句时,首先计算switch后表达式的值,然后在switch语句中寻找与该表达式的值相匹配的case值,如果找到,则执行该case后的各语句,直至遇到一个break语句为止;如果找不到匹配的case值,则执行switch的默认语句(default),直到switch语句体结束。如果找不到匹配的case值且不存在默认语句(default),则跳过switch语句体,什么也不做。若【例5-6】用switch语句来实现,则程序如下:main(){intscore,m;printf(“\nPleaseinputascore(0~100):\n”);scanf(“%d”,&score);m=score/10;switch(m){case9:case10:printf(“\nThegradeisA.”);break;case8:printf(“\nThegradeisB.”);break;case7:printf(“\nThegradeisC.”);break;case6:printf(“\nThegradeisD.”);break;default:printf(“\nThegradeisE.”);}}假设运行时输入75,则m=7,执行case7:后的语句printf(“\nThegradeisC.”);遇break;结束switch语句的执行。程序的运行情况如下:Pleaseinputascore(0~100):75ThegradeisC.break语句用于改变程序流程。当在switch语句中执行break语句时,break语句使程序从该结构中退出,程序接着执行该结构后的第一条语句。如果去掉上例中的所有break语句,运行程序并输入75,则程序的运行情况如下:Pleaseinputascore(0~100):75ThegradeisC.ThegradeisD.ThegradeisE.注意:该算法中。Switch语句后的表达式是m(=score/10)而不是score,这样处理可以大大减少分支数目,简化程序。5.4程序设计举例【例5-7】对分段函数:x(x<1)y=2x-1(1≤x<10)3x-11(x≥10)用scanf()函数输入x的值,求y值。#include“stdio.h”main(){floatx,y;printf(“\n”);scanf(“%f”,&x);if(x<1)y=x;elseif(x>=10)y=3*x-11;elsey=2*x-1;printf(“y=%f”,y);}程序的运行情况如下:⑴运行时输入一个小于1的数Pleaseinputx:-2y=-2.000000⑵运行时输入一个介于1和10之间的数Pleaseinputx:8y=15.000000【例5-8】编程求一元二次方程ax2+bx+c=0的实数根。#include“stdio.h”main(){floata,b,c,delta,x1,x2;printf(“\nPleaseinputa,b,c:”);scanf(“%f,%f,%f”,&a,&b,&c);delta=b*b-4*a*c;if(delta<0)printf(“Thereisnorealfact!”);elseif(delta==0){x1=-b/(2*a);printf(“x1=%f”,x1);}else{x1=(-b+sqrt(delta))/(2*a);x2=(-b-sqrt(delta))/(2*a);printf(“x1=%f,x2=%f”,x1,x2);}}程序的运行情况如下:⑴运行时输入使△>0的情况Pleaseinputa,b,c:8,9,1x1=-0.125000,x2=-1.000000⑵运行时输入使△=0的情况Pleaseinputa,b,c:4,8,4x1=-1.000000【例5-9】输入1~7之间的任意数字,程序将按照用户的输入数据输出对应的星期值。如用户输入3,则程序输出Wednesday。如果输入1~7以外的数字,则提示输入错误。main(){intweek;printf(“\nPleaseinputainteger(1~7):\n”);scanf(“%d”,&score);switch(week){case1:printf(“Monday\n”);break;case2:printf(“Tuesday\n”);break;case3:printf(“Wednesday\n”);break;case4:printf(“Thursday\n”);break;case5:printf(“Friday\n”);break;case6:printf(“Saterday\n”);break;case7:printf(“Sunday\n”);break;default:printf(“Theinputiswrong!\n”);}}程序的运行情况:⑴Pleaseinputainteger(1~7):5Friday⑵Pleaseinputainteger(1~7):9Theinputiswrong!本章小结关系运算符包括>、<、>=、<=、==、!=,关系运算符用来比较两个表达式并决定两者的关系,运算的结果是假(0)或真(非0)。逻辑运算符包括&&、||、!,用逻辑运算符将关系表达式或逻辑量连接起来构成逻辑表达式。逻辑运算的结果也是假(0)或真(非0)。关系表达式和逻辑表达式往往作为条件出现在if语句的条件或循环判断条件之中,一般不单独使用。各类运算符之间按照规定的优先级顺序由高到低进行运算。选择结构又叫分支结构,用于在几个可选择的分支之间进行选择。C语言中用if和switch两种语句实现选择结构。if语句的嵌套是指if语句中的子句本身又是一个if语句。内嵌的if语句可以嵌套在if子句中,也可以嵌套在else子句中。嵌套的if语句中又可再嵌套,构成多重嵌套。switch语句又叫多分支语句,根据switch后表达式的不同值执行不同分支。习题1.语言中用______表示“真”,用______表示“假”。2.a的初值为2,b的初值为3,c的初值为4,求下列表达式的值:⑴a==3⑵a=3⑶a&&b⑷a||b+c&&b-c⑸!((ac||1)⑹aa:cc:a3.下列程序的输出结果为:(5分)main(){inta、b、c;a=b=c=1;b=b+c;a=a+b;printf(“%d\n”,(cb:a);}结果________________。4.能正确表示a和b同时为正或同时为负的逻辑表达式是()A)(a>0||b>0)&&(a<0||b<0)B)a>0&&b>0C)a+b>0D)a*b>05.设intx=1,y=1;表达式(!x||y--)的值是()A)0B)1C)2D)-16.设有如下程序main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;elsey=1.0;printf(“%f\n”,y);}该程序的输出结果是()A)0.000000B)0.250000C)0.500000D)1.0000007.设有如下程序main(){inta=2,b=-1,c=2;if(b<0);c=0;elsec++;printf(“%d\n”,c);}该程序的输出结果是()A)0B)1C)2D)有语法错8.设有如下程序main(){inta=100;if(a>0)printf(“%d\n”,a>100);elseprintf(“%d\n”,a<=100);;}该程序的输出结果是()A)0B)1C)100D)-19.设有如下程序main(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}printf(“a=%d,b=%d\n”,a,b);}该程序的输出结果是()A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=210.若有定义:floatw;inta,b;则合法的switch语句是()A)switch(w)B)switch(a);{case1.0:printf("*\n");{case1printf("*\n");case2.0:printf("**\n");case2printf("**\n");}}C)switch(b)D)switch(a+b){case1:printf("*\n");{case1:printf("*\n");default:printf("**\n");case2::printf("**\n");case1+2:printf("\n");default:printf("\n");}}11.输入一个年份,判断它是否为闰年。12.从键盘输入三个整数a、b、c,编程求最大数并输出结果。13.为了鼓励节约用水,作如下规定:每人月用水量在10m3或10m3以下,收费为1.8元/m3,用水量在10到20m3之间的,超出部分收费为2.5元/m3,用水量超过20m3的,超出20m3的部分收费为3.5元/m3。设某人某月份用水xm3,编程求其应付水费y。14.某百货商场进行打折促销活动,消费金额(p)越高,折扣(d)越大,标准如下:消费金额折扣p<1000%100≤p<2005%200≤p<50010%500≤p<100015%p≥100020%编程,从键盘输入消费金额,输出折扣率和实付金额(f)。要求:(1)用if语句实现;(2)用switch语句实现。
{Number1=Number2;
printf(“ThebigNumberis%d”,Number1);
在这个例子中,如果Number1小于Number2,不仅要给Number1赋值,还要输出Number1。
有时,我们需要在某种条件下让程序执行一个分支,否则执行另一分支。
这时,可以采用If……else语句。
语句1;
else
【例5-4】在学生分数高于或等于60分时显示Passed,否则显示Failed。
如图5-3所示。
图5-3
程序如下:
if(grade>=60)
printf(“Passed\n”);
printf(“Failed\n”);
【例5-5】某商品的零售价为每公斤8.5元,批发价为每公斤6.5元,购买量在10公斤以上,便可按批发价计算,设某顾客购买此商品weight公斤,请编程计算该顾客需付费(pay)多少?
main()
{
floatweight,pay;
printf(“Pleaseinputtheweight:
”);
scanf(“%f”,&weight);
if(weight>=10)
pay=weight*6.5;
pay=weight*8.5;
printf(“Youshouldpay%fyuans\n”,pay);
5.2.2if语句的嵌套
if和else子句中,可以是任意合法的C语句或语句块,如果这子句是个if语句,则构成了if语句的嵌套。
内嵌的if语句可以嵌套在if子句中,也可以嵌套在else子句中。
嵌套的if语句有以下几种格式:
if(条件1)
if(条件2)
else语句2;
if(条件3)
else语句4;
一般说来,嵌套的if语句可以对多种情况进行测试。
【例5-6】根据输入的百分制成绩(score),要求输出成绩等级(grade)A、B、C、D、E。
90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
用if语句实现,程序如下:
intscore;
chargrade;
printf(“\nPleaseinputascore(0~100):
scanf(“%d”,&score);
if(score>=90)
grade=’A’;
elseif(score>=80)
grade=’B’;
elseif(score>=70)
grade=’C’;
elseif(score>=60)
grade=’D’;
grade=’E’;
printf(“Thegradeis%c.\n”,grade);
程序的运行情况如下:
Pleaseinputascore(0~100):
86
ThegradeisB.
5.2.3条件运算符
假设要编制一个程序,求两数中的较大数。
执行的过程是比较a是否大于b,如果是,则较大数(max)为a,否则令max等于b。
if(a>b)
max=a;
max=b;
C语言提供了一种特殊的条件运算符,可以简化上面的语句。
条件表达式的一般形式:
表达式1?
表达式2:
表达式3
条件表达式的执行过程:
先计算表达式1的值,如果表达式1的值不等于0,则求解表达式2,表达式2的值作为整个条件表达式的值,否则,求解表达式3,表达式3的值作为整个条件表达式的值。
若用条件运算符表示,则上面的语句可表示如下:
max=a>b?
a:
↓↓↓
表达式①②③
条件运算符的优先级高于赋值运算,低于其他运算。
其功能相当于一个if-else语句。
例如【例5-4】就可用条件表达式来实现:
printf(grade>=60?
“Passed\n”:
“Failed\n”);。
由此可见,使用条件表达式可以简化程序。
5.3switch语句
5.3.1switch语句的一般格式
对于复杂的if语句,如果嵌套过多就会使程序结构复杂。
许多语言都有另一种可选语句,在C语言中,它称为switch语句。
if语句只对一个值进行检验,而switch语句根据不同值产生不同分支。
switch语句的一般形式为:
switch(表达式)
{case值1:
[break;]
case值2:
……
case值N:
语句N;
[default:
语句N+1;]
其中的表达式的数据类型只能为整型或字符型,语句可以是任何有效的语句或语句块。
5.3.2switch语句的执行过程
执行switch语句时,首先计算switch后表达式的值,然后在switch语句中寻找与该表达式的值相匹配的case值,如果找到,则执行该case后的各语句,直至遇到一个break语句为止;如果找不到匹配的case值,则执行switch的默认语句(default),直到switch语句体结束。
如果找不到匹配的case值且不存在默认语句(default),则跳过switch语句体,什么也不做。
若【例5-6】用switch语句来实现,则程序如下:
intscore,m;
\n”);
scanf(“%d”,&score);
m=score/10;
switch(m)
case9:
case10:
printf(“\nThegradeisA.”);break;
case8:
printf(“\nThegradeisB.”);break;
case7:
printf(“\nThegradeisC.”);break;
case6:
printf(“\nThegradeisD.”);break;
default:
printf(“\nThegradeisE.”);
假设运行时输入75,则m=7,执行case7:
后的语句printf(“\nThegradeisC.”);遇break;结束switch语句的执行。
75
ThegradeisC.
break语句用于改变程序流程。
当在switch语句中执行break语句时,break语句使程序从该结构中退出,程序接着执行该结构后的第一条语句。
如果去掉上例中的所有break语句,运行程序并输入75,则程序的运行情况如下:
ThegradeisD.
ThegradeisE.
注意:
该算法中。
Switch语句后的表达式是m(=score/10)而不是score,这样处理可以大大减少分支数目,简化程序。
5.4程序设计举例
【例5-7】对分段函数:
x(x<1)
y=2x-1(1≤x<10)
3x-11(x≥10)
用scanf()函数输入x的值,求y值。
#include“stdio.h”
floatx,y;
printf(“\n”);
scanf(“%f”,&x);
if(x<1)
y=x;
elseif(x>=10)
y=3*x-11;
elsey=2*x-1;
printf(“y=%f”,y);
⑴运行时输入一个小于1的数
Pleaseinputx:
-2
y=-2.000000
⑵运行时输入一个介于1和10之间的数
8
y=15.000000
【例5-8】编程求一元二次方程ax2+bx+c=0的实数根。
floata,b,c,delta,x1,x2;
printf(“\nPleaseinputa,b,c:
scanf(“%f,%f,%f”,&a,&b,&c);
delta=b*b-4*a*c;
if(delta<0)
printf(“Thereisnorealfact!
elseif(delta==0)
{x1=-b/(2*a);
printf(“x1=%f”,x1);
else{x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
printf(“x1=%f,x2=%f”,x1,x2);}
⑴运行时输入使△>0的情况
Pleaseinputa,b,c:
8,9,1
x1=-0.125000,x2=-1.000000
⑵运行时输入使△=0的情况
4,8,4
x1=-1.000000
【例5-9】输入1~7之间的任意数字,程序将按照用户的输入数据输出对应的星期值。
如用户输入3,则程序输出Wednesday。
如果输入1~7以外的数字,则提示输入错误。
intweek;
printf(“\nPleaseinputainteger(1~7):
switch(week)
case1:
printf(“Monday\n”);break;
case2:
printf(“Tuesday\n”);break;
case3:
printf(“Wednesday\n”);break;
case4:
printf(“Thursday\n”);break;
case5:
printf(“Friday\n”);break;
printf(“Saterday\n”);break;
printf(“Sunday\n”);break;
printf(“Theinputiswrong!
程序的运行情况:
⑴Pleaseinputainteger(1~7):
5
Friday
⑵Pleaseinputainteger(1~7):
9
Theinputiswrong!
本章小结
关系运算符包括>、<、>=、<=、==、!
=,关系运算符用来比较两个表达式并决定两者的关系,运算的结果是假(0)或真(非0)。
逻辑运算符包括&&、||、!
,用逻辑运算符将关系表达式或逻辑量连接起来构成逻辑表达式。
逻辑运算的结果也是假(0)或真(非0)。
关系表达式和逻辑表达式往往作为条件出现在if语句的条件或循环判断条件之中,一般不单独使用。
各类运算符之间按照规定的优先级顺序由高到低进行运算。
C语言中用if和switch两种语句实现选择结构。
if语句的嵌套是指if语句中的子句本身又是一个if语句。
嵌套的if语句中又可再嵌套,构成多重嵌套。
switch语句又叫多分支语句,根据switch后表达式的不同值执行不同分支。
习题
1.语言中用______表示“真”,用______表示“假”。
2.a的初值为2,b的初值为3,c的初值为4,求下列表达式的值:
⑴a==3
⑵a=3
⑶a&&b
⑷a||b+c&&b-c
⑸!
((a
c||1)
⑹a
c
c:
3.下列程序的输出结果为:
(5分)
inta、b、c;
a=b=c=1;
b=b+c;
a=a+b;
printf(“%d\n”,(c
b:
a);
结果________________。
4.能正确表示a和b同时为正或同时为负的逻辑表达式是()
A)(a>0||b>0)&&(a<0||b<0)B)a>0&&b>0C)a+b>0D)a*b>0
5.设intx=1,y=1;表达式(!
x||y--)的值是()
A)0B)1C)2D)-1
6.设有如下程序
{floatx=2.0,y;
if(x<0.0)y=0.0;
elseif(x<10.0)y=1.0/x;
elsey=1.0;
printf(“%f\n”,y);
该程序的输出结果是()
A)0.000000B)0.250000C)0.500000D)1.000000
7.设有如下程序
{inta=2,b=-1,c=2;
if(b<0);c=0;
elsec++;
printf(“%d\n”,c);
A)0B)1C)2D)有语法错
8.设有如下程序
{inta=100;
if(a>0)printf(“%d\n”,a>100);
elseprintf(“%d\n”,a<=100);;
A)0B)1C)100D)-1
9.设有如下程序
{intx=1,a=0,b=0;
switch(x)
{case0:
b++;
a++;
a++;b++;
printf(“a=%d,b=%d\n”,a,b);
A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2
10.若有定义:
floatw;inta,b;则合法的switch语句是()
A)switch(w)B)switch(a);
{case1.0:
printf("*\n");{case1printf("*\n");
case2.0:
printf("**\n");case2printf("**\n");
}}
C)switch(b)D)switch(a+b)
{case1:
printf("*\n");{case1:
printf("*\n");
printf("**\n");case2:
:
printf("**\n");
case1+2:
printf("\n");default:
printf("\n");
11.输入一个年份,判断它是否为闰年。
12.从键盘输入三个整数a、b、c,编程求最大数并输出结果。
13.为了鼓励节约用水,作如下规定:
每人月用水量在10m3或10m3以下,收费为1.8元/m3,用水量在10到20m3之间的,超出部分收费为2.5元/m3,用水量超过20m3的,超出20m3的部分收费为3.5元/m3。
设某人某月份用水xm3,编程求其应付水费y。
14.某百货商场进行打折促销活动,消费金额(p)越高,折扣(d)越大,标准如下:
消费金额折扣
p<1000%
100≤p<2005%
200≤p<50010%
500≤p<100015%
p≥100020%
编程,从键盘输入消费金额,输出折扣率和实付金额(f)。
要求:
(1)用if语句实现;
(2)用switch语句实现。
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2