选择结构程序设计练习题
c语言选择结构程序设计习题册答案
第五章选择结构程序设计基础练习(A)一、填空题1.关系表达式的运算结果是逻辑值。
C语言没有逻辑型数据, 以1 代表“真”, 以0代表“假”。
2.逻辑运算符!是单目运算符, 其结合性是由右结合性。
3.C语言提供的三种逻辑运算符是&& 、|| 、! 。
其中优先级最高的为! ,优先级最低的为| | 。
4.逻辑运算符两侧的运算对象不仅可以是0和1, 或者是0和非0的整数, 也可以是任何类型的数据。
系统最终以0 和非0 来鉴定它们属于“真”或“假”。
5、设y为int型变量, 请写出描述“y是偶数”的表达式(y%2==0) 。
6、设x, y, z均为int型变量, 请写出描述“x或y中有一个小于z”的表达式x<z||y<z 。
7、条件“2<x<3或x<-10”的C语言表达式是x<-10||x>2&&x<3。
8、判断char型变量ch是否为大写字母的对的表达式是(ch>=‘A’)&&(ch<=‘Z’)。
9、当a=3,b=2,c=1时, 表达式f=a>b>c的值是0 。
10、当a=5,b=4,c=2时, 表达式a>b!=c的值是 1 。
11.已知A=7.5,B=2,C=3.6, 表达式A>B&&C>A||A<B&&!C>B的值是0 。
12.若a=6,b=4,c=2, 则表达式!(a-b)+c-1&&b+c/2的值是 1 。
13、有int x,y,z;且x=3,y=-4,z=5, 则表达式(x&&y)==(x||z)的值为 1 。
14、有int x,y,z;且x=3,y=-4,z=5, 则以下表达式的值为 1 。
!(x>y)+(y!=z)||(x+y)&&(y-z)15.有int a=3,b=4,c=5,x,y;, 则以下表达式的值为0 。
选择结构程序设计,循环结构程序设计习题
else {printf("不能组成三角形") ;}
}
二、编程题
1.编写程序,输入任意一个1~7之间的整数,将他们转换成对应的英文单词。例如:1转换成Monday,7转换成Sunday。
2.输入年号,计算这一年的2月份的天数,将结果输出。
3.输入学生的成绩,利用计算机将学生的成绩划分出等级并输出:
A)n=0;while((ch=getchar())!=’\n’)n++;
B) n=0;while(getchar()!=’\n’)n++;
C)for(n=0; getchar()!=’\n’;n++);
D)n=0;for(ch=getchar();ch!=’\n’;n++);
4.有以下程序
# include <stdio.h>
习题4
选择结构程序设计
一、单选题
1.有如下嵌套的if语句
if(a<b)
if(a<c) k=a;
else k=c;
if(b<c) k=b;
else k=c;
以下选项中与上述if语句等价的语句是
A)k=(a<b)?a:b;k=(b<c)?b:c;
B)k=(a<b)?((b<c)?a:b)((b>c)?b:c);
if(x>y)
if(y<z) printf("%d", ++z);
else printf("%d", ++y);
printf("%d\n", x++);
}
程序的运行结果是【】。
第四章选择结构程序设计(A级)
第四章选择结构程序设计(A级)填空题:1、表达式not true or true and false的值为false。
2、表达式ord(false)+5的值为5。
3、表达式pred(succ(true))的值为true。
4、表达式5 div 2<(5-2)的值为true。
5、"若A-B不小于C,则将B增加1,否则将B减少1“用Pascal 语言可表示为if A-B>=C then B:=B+1 else B:=B-1;。
6、"闰年指年号能被4整除,但不能被100整除,或者年号能被400整除的年"写成Pascal语言表达式为(year mod 4=0) and (year mod 100<>0) or (year mod 400=0)。
7、inc(ord(true))的结果是2。
8、表达式(2<=1) or not(2<10) and (10>4)的结果是false。
9、命题"m,n都是偶数或都是奇数"可表示为(m mod 2=0) and (n mod 2=0) or (m mod 2=1) and (n mod 2=1)。
10、dec(inc(ord(true)))的结果是1。
单项选择题:1、下面的表达式中,布尔值为true的是4+5 mod 2>4。
(4+5) mod 2>4'0'>'a'0>a2、下列选项中,不是布尔表达式的是5 div 3。
not b(x>0) or (y>0)9+4>5+33、下面哪一个是布尔变量的标识符?boolean。
trueintegerreal4、下面条件语句的格式书写不正确的是if 条件then 语句1; else 语句2。
if 条件then 语句1if 条件then 语句1 else 语句25、对于复合语句描述不正确的是begin后面没有符号,中间的语句末尾加";",最后一个语句与end之间必须加";"。
选择结构程序设计练习题
选择结构程序设计练习题1.逻辑运算符两侧运算对象的数据类型( )A.只能是0和1B.只能是0或非0正数C.只能是整型或字符型数据D.可以是任何类型的数据2.下列运算符中优先级最高的是( )A.<B.+C.&&D.!=3.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假"的表达式是( )A.(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)B.(x>=1)||(x<=10)||(x>=200)||(x<=210)C.(x>=1)&&(x<=10)||(x>=200)&&(x<=210)D.(x>=1)||(x<=10)&&(x>=200)||(x<=210)4.表示图中坐标轴上阴影部分的正确表达式是( )A.(x<=a)&&(x>=b)&&(x<=c)B.(x<=a)||(b<=x<=c)C.(x<=a)||(x>=b)&&(x<=c)D.(x<=a)&&(b<=x<=c5.判断char型量ch是否为大写字母的正确表达式是()A.‘A’<=ch<=‘Z’B.(ch>=‘A’)&(ch<=‘Z’)C.(ch>=‘A’)&&(ch<=‘Z’)D.(‘A’<=ch)AND(‘Z’>=ch)6.设x,y,z都是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是()A.‘x’&&‘y’B.x<=yC.x||y+z&&!yD.!(x<y)&&!z||1)7.已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<‘B’&&!y)的值是()A.0B.语法错误C.1D.“假”8.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是()A.A%2==1B.!(A%2==0)C.!(A%2)D.A%29.设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后的值为()A.1B.2C.3D.410.下列运算符中优先级最低的是( )优先级最高的是( )A.?B.&&C.+D.!=11.以下程序的运行结果是( )#include<stdio.h>main(){int a,b,d=241;a=d/100%9; b=(-1)&&(-1);printf(“%d,%d”,a,b);}A.6,1B.2,1C.6,0D.2,012.执行以下语句后a的值为( )int a,b,c;a=b=c=1; ++a||++b&&++c;A.错误B.0C.2D.1A.1B.2C.错误D.013.执行以下语句后的值为(),b的值()int a=5,b=6,w=1,x=2,y=3,z=4;(a=w>x)&&(b=y>z);A.5B.0C.2D.1 A.6 B.0 C.1 D.414.以下不正确的if语句形式是()A.if(x>y&&x!=y);B.if(x==y)x+=y;C.if(x!=y)scanf(“%d“,&x) else scanf(“%d”,&y);D.if(x<y){x++;y++;}15.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是( )if(x>y) z=x;x=y;y=z;A.x=10,y=20,z=30B.x=20,y=30,z=30C.x=20,y=30,z=10D.x=20,y=30,z=2016.以下语句语法正确的是:( )A.if(x>0) printf(“%f”,x)else printf(“%f”,-x);B.if(x>0){x=x+y;printf(“%f”,x);}else printf(“%f”,-x)C.if(x>0){x=xy; pri ntf(“%f”,x);};else printf(“%f”,-x);D.if(x>0){x=x+y;printf(“%f”,x)}else printf(“%f”,-x);17.请阅读以下程序,该程序( )main(){int a=5,b=0,c=0;if(a+b+c) printf(“***\n”); else printf(“$$$\n”);}A.有语法错误不能通过编译B.可以通过编译但不能通过连接C.输出***D.输出$$$18.以下程序的运行结果是( )main(){int m=5;if(m++>5) printf(“%d\n”,m);else printf(“%d\n”,m--);} A.4 B.5 C.6 D719.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x 的值是( )if(a<b)if(c<d) x=1;else if(a<c)if(b<d)x=2;else x=3;else x=6;else x=7;A.1B.2C.3D.620.有一函数关系如下:x-1(x<0)y={ x(x=0)x+1 (x>0)则下面程序段中能正确表示上面关系的是( )A.y=x+1; if(x>=0) if(x==0) y=x; else y=x-1;B.y=x-1 if(x!=0) if(x>0) y=x+1; else y=x;C.if(x<=0) if(x<0) y=x-1; else y=x; else y=x+1;D.y=x; if(x<=0) if(x<0) y=x-1; else y=x+1;21.以下程序的输出结果是( )main(){int a=100,x=10,y=20,ok1=5,ok2=0;if(x<y)if(y!=10)if(!ok1)a=1;else if(ok2) a=10;a=-1; printf(“%d\n”,a);}A.1B.0C.-1D.值不确定22.以下程序的输出结果是( )main(){int x=2,y=-1,z=2;if(x<y)if(y<0) z=0;else z+=1;printf(“%d\n”,z);}A.3B.2C.1D.023.为了避免在嵌套的条件语句if--else中产生二义性,C语言规定:else子句总是与( )配对。
VB程序设计 习题及答案第4章 选择结构程序设计
第4章选择结构程序设计4.1 写出数学式|x|<2.5×10-2对应的Visual Basic表达式。
【答案】x<2.5e-2 and x>-2.5e-24.2 逻辑运算符And、Or和Not的优先级最高的是哪一个。
【答案】Not4.3 已知 W=10 X=9 Y=8 Z=7 ,求下列表达式的结果。
(1) W>X And Y<=Z OR X>Y(2) X>Z Or W=Y AND Y<X(3) Not (W>Y And X=Z)(4) Not (Y<>X Or W*3>Z)【答案】(1) True(2) True(3) True(4) False4.4 写出下列十进制整数逻辑运算的结果:(1) X = 23 And 14(2) X = 23 Or 14(3) X = -1 And 19(4) X = -1 Or 10(5) X = Not -1【答案】(1) 6(2) 31(3) 19(4) -1(5) 04.5 已知变量X和Y的值分别为5、6,编写程序,交换变量X和Y的值。
【参考答案】程序代码设计Private Sub Form_Click()x = 5: y = 6t = x: x = y: y = tForm1.Print "x="; x, "y="; yEnd SubPrivate Sub Form_Load()Form1.AutoRedraw = TrueForm1.Print "x = 5", "y = 6"Form1.Print "单击窗体交换x,y的值"图4-1 程序运行结果End Sub程序运行结果如图4-1所示:4.6 从键盘输入一个学生的三科成绩,计算总分,并找出最高分。
【参考答案】(1)用户界面设计(2)控件属性设置(略)(3)程序代码设计Private Sub Command1_Click()g1 = Val(Text1.Text)g2 = Val(Text2.Text)g3 = Val(Text3.Text)Var = (g1 + g2 + g3) / 3g = g1If g < g2 Then g = g2If g < g3 Then g = g3Text4.Text = VarText5.Text = gEnd Sub图4-2 程序运行结果程序运行结果如图4-2所示。
C程序设计(第五版)-第4章选择结构程序设计课后习题答案
C程序设计(第五版)-第4章选择结构程序设计课后习题答案1. 什么是算术运算?什么是关系运算?什么是逻辑运算?【答案解析】算熟运算:算术运算即“四则运算”,是加法、减法、乘法、除法、乘⽅、开⽅等⼏种运算的统称。
其中加减为⼀级运算,乘除为⼆级运算,乘⽅、开⽅为三级运算。
在⼀道算式中,如果有多级运算存在,则应先进⾏⾼级运算,再进⾏低⼀级的运算。
C语⾔中的算熟运算符包括:+、-、*、/、++、--、%等种类。
如果只存在同级运算;则从左⾄右的顺序进⾏;如果算式中有括号,则应先算括号⾥边,再按上述规则进⾏计算。
⽰例:$ (1 + 1)^{2} * 4+5 * 3$解析:1. 先进⾏括号内运算1+1,然后进⾏乘⽅运算得到结果4.2. 接下来与4相乘,得到结果163. 因为乘法优先级⼤于加法,因此先进⾏5*3,得到结果154. 最终相加得到结果31结果:31关系运算:关系的基本运算有两类:⼀类是传统的集合运算(并、差、交等),另⼀类是专门的关系运算(选择、投影、连接、除法、外连接等),⽽在C语⾔中,关系运算通常被认为是⽐较运算,将两个数值进⾏⽐较,判断⽐较结果是否符合给定的条件。
常见的关系运算符包括:<、<=、>、>=、==、!=等种类。
其中,前4种关系运算符(<、<=、>、>= )的优先级别相同,后2种(==、!=)也相同。
⽽前4种⾼于后2种。
例如, >优先于==。
⽽>与<优先级相同。
并且,关系运算符的优先级低于算术运算符,关系运算符的优先级⾼于赋值运算符(=)。
逻辑运算:在逻辑代数中,有与、或、⾮三种基本逻辑运算。
表⽰逻辑运算的⽅法有多种,如语句描述、逻辑代数式、真值表、卡诺图等。
⽽在C语⾔中,逻辑运算通常⽤于使⽤逻辑运算符将关系表达式或其它逻辑量连接起来组成逻辑表达式⽤来测试真假值。
常见的逻辑运算符包括:&&、||、!等种类&&:与是双⽬运算符,要求有两个运算对象,表⽰两个运算对象都成⽴,则结果为真,否则结果为假。
C语言选择结构程序设计练习题
C语⾔选择结构程序设计练习题第四章选择结构程序设计⼀、填空1.在C语⾔中,表⽰逻辑“真”值⽤_________。
2.得到整型变量a的⼗位数字的表达式为_________。
3.表达式:(6>5>4)+(float)(3/2)的值是_________。
4.表达式:a=3,a-1‖--a,2*a的值是_________。
(a是整型变量)5.表达式:(a=2.5-2.0)+(int)2.0/3的值是_________。
(a是整型变量)6.C语⾔编译系统在给出逻辑运算结果时,以数值_________代表“真”,以_________代表“假”;但在判断⼀个量是否为“真”时,以_________代表“假”,以_________代表真。
7.当m=2,n=1,a=1,b=2,c=3时,执⾏完d=(m=a!=b)&&(n=b>c)后,n的值为_________,m的值为_________。
8.若有int x,y,z;且x=3,y=-4,z=5,则表达式:!(x>y)+(y!=z)||(x+y)&&(y-z)的值为_________。
⼆、编程:1.企业发放的奖⾦根据利润提成。
利润(i)低于或等于10万元时,奖⾦可提10%;利润⾼于10万元,低于20万元时,低于10万元的部分按10%提成,⾼于10万元的部分,可提成7.5%;20万到40万之间时,⾼于20万元的部分,可提成5%;40万到60万之间时⾼于40万元的部分,可提成3%;60万到100万之间时,⾼于60万元的部分,可提成1.5%,⾼于100万元时,超过100万元的部分按1%提成,从键盘输⼊当⽉利润i,求应发放奖⾦总数?2.输⼊三个整数x,y,z,请把这三个数由⼩到⼤输出。
3.输⼊某年某⽉某⽇,判断这⼀天是这⼀年的第⼏天?4.本程序演⽰从键盘输⼊x的值,计算并打印下列分段函数的值。
y=0(x<60)y=1(60<=x<70)y=2(70<=x<80)y=3(80<=x<90)y=4(x>=90)5.在显⽰器上显⽰⼀个菜单程序的模型。
选择结构程序设计习题1-文档资料
阅读下面程序,写出程序的运行结果
1. 以下程序的执行结果是 。 #include <stdio.h> void main( ) { int a,b,c; a=2;b=3;c=1; if (a>b) if (a>c) printf("%d\n",a); else printf("%d\n",b); printf("end\n"); } 程序的运行结果:
习题
一、选择题 1、要判断 char 型变量 m 是否是数字字符,可以使用表达式( ) 。 A.m>=0&&m<=9 B.m>=’0’ && m<=’9’ C.m>=”0” && m<=”9” D.m>=0 and m<=9 2、在 C 语言的 if 语句中,可以作为判断的表达式是( ) 。 A.关系表达式 B.任意表达式 C.逻辑表达式 D.算术表达式 3、为了避免嵌套的 if…else 语句的二义性,c 语言规定 else 总是与( )组成配对关系。 A.缩排位置相同的 if B.在其之前末配对的 if C.在其之前未配对的最近的 if D.同一行上的 if 4、假设有定义 int a=1,b=2,c=3,d=4,m=2,n=2。则执行表达式(m=a>b) && (n=c>d)后,n 的值为 ( ) 。 A.0 B.2 C.3 D.4
case 4: printf("%d\n",k++); break;
default: printf("Full!\n");
}
} (1)A、1 B、2 C、2 3 4 5 (竖排) D、1 2 3 4(竖排)
选择结构编程题
一、顺序结构1、从键盘上任意输入一个4位数的整数,将每一位上的数字剥离出来,按从低位到高位的顺序依次输出,输出形式如下图所示。
二、选择结构1、从键盘上任意输入两个整数,选择大者输出。
分别用if语句和条件表达式两种方式编程。
输出形式如下图所示。
2、从键盘上任意输入三个整数,输出最大者。
输出形式如下图所示。
3、从键盘上任意输入两个整数a和b,若a小于b,则将两者的值进行交换,然后输出a 和b的值。
输出形式如下图所示。
4、从键盘上任意输入三个整数a、b和c,按降序形式进行交换,既交换后a最大,b次之,c最小,然后输出a、b和c的值。
输出形式如下图所示。
5、编写一程序P114.C实现以下功能*编写一个简单计算器程序,输入格式为:data 1 op data2。
其中data1和data2是参加运算的两个数(data1、data2必须定义为int,但二者相加可能超出int能表示的范围),op为运算符,它的取值只能是+、-、*、/、%。
编程可用素材:printf("Please input data1 op data2: ")...、printf("\nError! chu shu wei 0.\n")...。
程序的运行效果应类似地如图1、图2、图3、图4所示,图1中的3000 + 2000、图2中的3000 % 2000、图3中的3000 % 0和图4中的3000 / 0是从键盘输入的内容。
图1 程序运行效果示例(加法)图2 程序运行效果示例(取余)图3 程序运行效果示例(取余时除数为0)图4 程序运行效果示例(相除时除数为0)6、编写一程序P111.C实现以下功能*x(x只考虑整数int且必须定义为int、但F(x)完全可能超过int的表示范围)通过键盘输入(输入前给出提示Please input x:),然后计算并在屏幕上输出函数值。
编程可用素材:printf("Please input x: ")...、printf("\nF(...) = ..."...。
C语言习题四选择结构程序设计
习题四选择结构程序设计1. 设变量x和y均已正确定义并赋值。
以下if语句中,在编译时将产生错误信息的是______。
A、if(x++);B、if(x>y && y!=0);C、if(x>0) x--D、if(y<0) {;}else y++; else x++;解析:本题考查的是if语句。
if后表达式两侧的圆括号不可少,最后是一条语句或是用花括号括起来的一组语句。
选项A和B是在表达式后跟了一条空语句,选项D是在表达式后跟了一组空语句,选项C中x--是表达式而不是语句,所以在编译时会出现错误信息。
故本题答案选C。
2. 有以下程序main(){ int i;for(i=1;i<=40;i++){ if(i++%5==0)if(++i%8==0) printf ("%d",i);}printf("\n"); }执行后的输出结果是______。
A、5B、24C、32D、40解析:本题考查的是if语句的应用。
在满足for 语句条件下,第一个if语句的条件是指i先对5取余后,再自行加1;第二个if语句的条件是指:i=i+1后,再对8取余。
故本题答案选C。
3. 在嵌套使用if语句时,C语言规定else总是______。
A、和之前与其具有相同缩进位置的if配对B、和之前与其最近的if配对C、和之前与其最近的且不带else的if配对D、和之前的第一个if配对解析:本题考查的是if语句的使用规则。
在嵌套使用if语句时,C语言规定else总是和之前与其最近的且不带else的if配对。
故本题答案为C。
4. 有以下程序main(){ int i=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf("%d %d %d\n",i,j,k); }程序运行后的输出结果是______。
实验三-选择结构程序设计(解答)-(2)
实验三选择结构程序设计(解答)1.改错题(1)下列程序的功能为:输入1个字母,如果它是小写字母,则首先将其转换成大写字母,再输出该字母的前序字母、该字母、该字母的后序字母,例如:输入g,则输出FGH;输入a,则输出ZAB;输入M,则输出LMN;输入Z,则输出YZA。
请纠正程序中存在错误,使程序实现其功能,程序以文件名sy3_1.c存盘。
#include <stdio.h>main(){char ch,c1,c2;printf("Enter a character:");ch=getchar();if((ch>='a')||(ch<='z')) // if((ch>='a')&&(ch<='z'))ch-=32;c1=ch-1;c2=ch+1;if(ch='A') // if(ch=='A')c1=ch+25;else if(ch='Z') // else if(ch=='Z')c2=ch-25;putchar(c1);putchar(ch);putchar(c2);putchar('\n');}改正后的程序:#include <stdio.h>main(){char ch,c1,c2;printf("Enter a character:");ch=getchar();if((ch>='a')&&(ch<='z'))ch-=32;c1=ch-1;c2=ch+1;if(ch=='A')c1=ch+25;else if(ch=='Z')c2=ch-25;putchar(c1);putchar(ch);putchar(c2);putchar('\n');}(2)下列程序的功能为:输入3个整数后,输出其中最大值。
C语言程序设计第四次作业-选择结构(2)
C语⾔程序设计第四次作业-选择结构(2)(⼀)改错题输出三⾓形的⾯积和周长,输⼊三⾓形的三条边a、b、c,如果能构成⼀个三⾓形,输出⾯积area和周长perimeter(保留2位⼩数);否则,输出“These sides do not correspond to a valid triangle”。
输⼊输出样例1: Enter 3 sides of the triangle: 5 5 3 area = 7.15; perimeter = 13.00输⼊输出样例2: Enter 3 sides of the triangle: 1 4 1 These sides do not correspond to a valid triangle源程序(有错误的程序)#include <stdio.h>#include <math.h>int main(void){double a,b,c;double area,perimeter,s;printf("Enter 3 sides of the triangle: ");scanf( "%lf%lf%lf",&a,&b,&c );if( a + b > c || b + c > a || a + c > b)s = ( a + b + c ) / 2;area = sqrt( s * ( s - a ) * ( s - b ) * ( s - c );perimeter = a + b + c;printf("area = %.2f; perimeter = %.2f\n",area,perimeter);elseprintf("These sides do not correspond to a valid triangle\n");return 0;}错误信息1:错误原因:少⼀个右括号。
第5章选择结构程序设计习题及答案
第5章 选择结构程序设计5-1 比较单分支、双分支、多分支if 语句。
答:(1)多分支if 语句可用多条单分支、双分支if 语句等价实现。
(2)双分支if 语句形式上相当于单分支if 语句扩展else 分支而来。
(3)单分支if 语句可以认为是双分支if 语句缺省else 子句的特殊情况,一条双分支语句可用两条单分支语句实现。
思考:分支结构主要用在哪些情况下?它有哪几种形式?5-2, 下列描述哪些是正确的?(1) if (x<0)y=−1;else if(x==0) y=0;else y=1;(2)if(x>=0)if(x>0) y = 1 ;else y = 0 ;else y = -1 ;(3) y = -1 ;if(x!=0)if(x>0) y = 1 ;else y = 0 ;(4)y = 0 ;if (x>=0)if(x>0) y = 1 ;答:(1) 正确 ; (2) 正确 ;(3) 不正确 ;(4) 不正确 ; 思考 : 若将(3)改为: y = -1 ; (4) 改为:y = 0 ;if(x>=0) /*删除原if(x>=0)*/ if(x>0) y =1 ; if(x>0) y = 1 ;else y = 0 ; else y = -1 ;后是否正确 ?5-3 仔细阅读以下程序 , 指出程序的运行结果 .⎪⎪⎩⎪⎪⎨⎧>=<-=010001x x x y#include<stdio.h>main(){ int a , b ;a =b = 5 ;if(a==1)if(b==5){a+=b ;printf("a=%d\n ",a) ;}else{a-=b ;printf("a=%d\n",a) ;}printf("a+b=%d",a+b) ;}解: 结果为: a + b = 10思考:为何有三个printf 语句,却只有一行输出?如果将第5行去掉或改为if(a==5) , 结果是否一样?5-3仔细阅读以下程序,指出程序的运行结果。
选择结构程序设计题
选择结构程序设计题选择结构程序设计一、实验目的1.熟练掌握关系表达式和逻辑表达式的使用。
2.熟练掌握嵌套的if语句和switch语句实现多分支结构程序设计。
3.掌握选择结构程序设计的方法。
4.继续熟悉跟踪调试程序的方法和过程。
二、实验内容及步骤1.分析程序并上机运行验证结果。
#includevoid main(){int a,b,t;printf("请输入a,b的值:");scanf("%d,%d",&a,&b);if(a<b)< p="">{t=a;a=b;b=t;}printf("%d ,%d \n",a,b);2,3>>3,2 3,2>>3,2}思考:从输入数据和运行结果分析程序的功能。
将“{t=a;a=b;b=t;}”改为“t=a,a=b,b=t;”,程序的功能改变了吗?为什么?一样的将“if(a<="" p="" {t="a;a=b;b=t;}" ”中的花括号去掉后,程序的功能改变了吗?为什么?2,3》》3,2="">2.分析程序功能,上机验证时输入不同的数据。
#includevoid main()int a,b;printf("请输入a,b的值:");scanf("%d,%d",&a,&b);if (b) printf("a/b=%d \n",a/b); //在确保b非零的情况下执行a/b 运算else printf("ERROR:Cannot divide by zero!\n");}提示:程序的功能是实现两个整数相除。
程序设计时应避免被零除的错误,所以“if(b)printf("a/b=%d \n",a/b);”就是在确保b非零的情况下执行a/b运算。
C语言课件第05章选择结构课堂练习
9
求完数
一个数如果恰好等于它的因子之和,这个数 称为“完数”,编写程序找出1000以内的 所有完数。
10
#include <stdio.h> void main() { int i,n,s; for(n=1;n<=1000;n++) { s=0; for (i=1;i<n;i++) { if(n%i==0) s+=i; } if(n==s) printf("%d is a perfect digit\n",n); } } 11
4
switch (rank) { case 0: reward=profit*0.1; break; case 1: reward=100000*0.08+(profit-100000)*0.075; break; case 2: case 3: reward=100000*0.08+100000*0.06+(profit-200000)*0.05; break; case 4: case 5: reward=100000*0.08+100000*0.06+200000+0.04+(profit400000)*0.03; break; case 6: reward=100000*0.08+100000*0.06+200000*0.04+200000*0.03+ (profit-600000)*0.015; } printf("该员工的利润为%.2f元,应得奖金%.2f元 \n",profit,reward); 5 }
c语言第4章 选择结构程序设计习题答案
第4章选择结构程序设计习题(P111)4.2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?答:C语言中用1表示真,0表示假;系统按照“非0为真,0为假”判断一个逻辑量的真假。
4.3 写出下面各逻辑表达式的值。
设a=3,b=4,c=5。
(1)a+b>c&&b==c (2)a||b+c&&b-c (3)!(a>b)&&!c||1(4)!(x=a)&&(y=b)&&0 (5)!(a+b)+c-1&&b+c/2解:该题在求解过程中注意:一、优先级。
逻辑运算符(&&和||)低于算术运算符和关系运算符而高于赋值运算符,在逻辑运算符中,逻辑非最高,逻辑与其次,逻辑或最低;二、逻辑表达式的求值规则。
(P94)所以得以上表达式的值分别为:(1)0 (2)1 (3)1 (4)0 (5)14.4有3个整数a、b、c,由键盘输入,输出其中最大的数。
分析:这是一个规模较小的求最值的算法,习题1.6用函数的方法实现。
该题不用函数调用实现,但方法类似。
法一:先求前两个数的最值,再用前两个数的最值和第三个数比较即得结果。
法二:先假设第一个数是最值,再依次和第二、第三个数比较得结果。
其中都要用到单分支或双分支选择结构语句。
参考程序如下:法一:main(){ int a,b,c,max; /*定义4个整型变量,其中a,b,c存原始数据,max存最值*/ printf("\ninput the value of a,b,c:"); /*提示输入*/scanf("%d%d%d",&a,&b,&c); /*格式符之间无分隔符,输入时可以以空格、回车、跳格分隔*/if(a>b) max=a;else max=b;if(max<c) max=c;printf("\nmax=%d\n",max);}法二:main(){ int a,b,c,max;printf("\ninput the value of a,b,c:");scanf("%d%d%d",&a,&b,&c);max=a;if(max<b) max=b;if(max<c) max=c;printf("\nmax=%d\n",max);}4.6有一个函数:写一段程序,输入x,输出y的值。
顺序结构、选择结构和循环结构的程序设计典型例题分析与解答
顺序结构、选择结构和循环结构的程序设计典型例题分析与解答1 在三种选择结构中,能用2个条件,控制从3个操作中选择一个操作执行的选择结构是______选择结构【分析】能用1个条件,控制某个操作做或不做的选择结构是单分支结构;能用1个条件,控制从2个操作中选择一个操作执行的选择结构是双分支结构;能用n(n>l)个条件,控制从n+ l个操作中选择一个操作执行的选择结构是多分支结构。
【答案】多分支2 在三种循环结构中,先执行循环操作内容(即循环体),后判断控制循环条件的循环结构是______循环结构。
【分析】当型循环结构是先判断控制循环的条件,条件成立,执行循环体;条件不成立,则退出循环体。
次数型循环结构也是先判断是否达到循环次数,没有达到循环次数,执行循环体;达到循环次数的,退出循环。
只有直到型循环结构才是先执行循环体,然后再判断控制循环的条件,如果条件成立,进行循环;条件不成立,退出循环。
【答案】直到型3 使用“getchar( )”函数时,程序的开头必须写一条包含命令为____________。
【分析】凡是使用系统函数的程序,都要在程序的开头写一条包含命令,包含命令中的“头函数.h”是一个文件,其中有关于该系统函数的定义。
系统函数“getchar( )”是在名为“stdio.h(标准输入输出函数)”的头函数文件中定义的。
【答案】#include"stdio.h"或#include<stdio.h>4 执行输入语句“scanf("x=%c,y=%d",&x,&y);”,要使字符型变量X的值为'A'、整型变量y的值为12,则从键盘上正确的输入是( )①'A'/②A/③x=A/ ④x=A,y=12/12/ 12/ y=12/ 说明:备选答案中的"/"表示回车换行键【分析】输入语句的格式控制符串中的“x=”、“,”、“y=”都是非格式控制符,在输入时必须原样位置输人,所以只有备选答案④才符合这个要求。
选择结构程序设计典型例题
#include <stdio.h> int main() {int year,leap; printf("enter year:"); scanf("%d",&year); if (year%4==0) if(year%100==0) if(year%400==0) leap=1; else leap=0; 采取锯齿形式 else leap=1; else leap=0; if (leap) printf("%d is ",year); else printf("%d is not ",year); printf("a leap year.\n"); return 0; 25 }
21
用变量leap代表是否闰年的信息。若闰 年,令leap=1;非闰年,leap=0。最 后判断leap是否为1(真),若是,则 输出“闰年”信息
22
解法1 #include <stdio.h> void main( ) { int year, leap=0; scanf(“%d”, &year); /* 输入年份值 */ if ((year%4= =0&&year%100!=0)||(year%400= =0)) leap=1; else leap=0; if(leap= =1) printf(“%d is leap ”, year); else printf(“%d is not leap ”, year); }
设每吨每千米货物的基本运费为p,货物重 为w,距离为s,折扣为d 总运费f的计算公式为f=p×w×s×(1-d)
29
折扣的变化规律:
折扣的“变化点”都是250的倍数 在横轴上加一种坐标c,c的值为s/250 c代表250的倍数 当c<1时,表示s<250,无折扣 1≤c<2时,表示250≤s<500,折扣d=2%
选择结构程序设计习题
选择结构程序设计练习1.从键盘输入一个字符型数据,若输入一个数字字符('0'-'9'),则将其转换成相应的整数显示出来;若输入其它字符,则显示出错信息。
[提示]根据字符型数据的ASCII码值是否在‘0’字符与‘9’字符之间进行判断。
使用if…else…语句。
2.编写一个程序,其功能为:从键盘输入三个数x、y、z,判断x+y=z是否成立,若成立输出“x+y=z”的信息,否则输出“x+y!=z”的信息。
[提示] 条件判断表达式x+y==z3.编写一个程序,其功能为:输入三个整数,输出最大数和最小数。
[提示] 设置最大值变量max和最小值变量min;首先比较a,b的大小,并把大数存入max,小数存入min;然后最大值变量max和最小值变量min 再与c比较,若c大于max,则max取值c,否则保持不变;如果c小于min,则min取值c,否则保持不变。
最后输出max和min的值。
使用if…else…语句、if语句以及复合语句。
4.某产品生产成本c=c1+mc2,其中c1为固定成本,c2为单位产品可变成本。
当生产数量m<10000时,c1=20000元,c2=10元;当生产数量m≥10000时,c1=40000元,c2=5元;编写一个程序,其功能为:分别计算出生产数量为6000以及25000时,总生产成本及单位生产成本。
5.分段函数的计算。
编写一个程序,计算下列函数:y=x x<12x-1 1≤x<10 3x-11 x≥10[提示]根据输入的x值的取值,计算y的值并输出。
使用if…else if语句以及复合语句。
6.编写程序,输入三角形三边a、b、c,判断a、b、c能否构成三角形,若不能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。
[提示]利用三角形两边之和大于第三边判断是否能够构成三角形,能够成三角形时再以等腰、等边、直角三角形的条件进行判断。
C语言 第四章 选择结构程序设计期末测试习题与答案
D.其之前最近的没有else配对的if
参考答案:D
12、在下面的条件语句中,只有一个在功能上与其它三个语句不等价,它是( )。
A.if (a)语句1 else语句2
B.if (a!=0)语句1 else语句2
C.if (a==0)语句2 else语句1
D.if (a==0)语句1 else语句2
printf(“a=%d,b=%d\n”,aa=2,b=2
C.a=1,b=0
D.a=1,b=1
参考答案:B
16、假定所有变量均已正确说明,以下程序段运行后的输出结果是( )。
int a=1,b=5,c=3;
if(a>b)
a=b;
b=c;
c=a;
printf("a=%d b=%d c=%d\n",a,b,c);
D.if(a==0) printf("%d\n",x); else printf("%d\n",y);
参考答案:D
2、假定所有变量均已正确说明,下列程序段运行后x的值是( )。
a=b=c=0;x=12; if(!a)x--; else x=5; if(c) x=3; else x=4;
A.3
B.4
C.12
int a=1,b=3,c=5; if(c=a+b) printf("yes\n"); else printf("no\n");
A.3
B.5
C.1
D.2
参考答案:A
5、当把以下4个表达式用作if语句的控制表达式时,有一个选项与其他3个选项含义不同,这个选项是( )。
A.k%2==1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
选择结构程序设计练习题1.逻辑运算符两侧运算对象的数据类型( )A.只能是0和1B.只能是0或非0正数C.只能是整型或字符型数据D.可以是任何类型的数据2.下列运算符中优先级最高的是( )A.<B.+C.&&D.!=3.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假"的表达式是( )A.(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)B.(x>=1)||(x<=10)||(x>=200)||(x<=210)C.(x>=1)&&(x<=10)||(x>=200)&&(x<=210)D.(x>=1)||(x<=10)&&(x>=200)||(x<=210)4.表示图中坐标轴上阴影部分的正确表达式是( )A.(x<=a)&&(x>=b)&&(x<=c)B.(x<=a)||(b<=x<=c)C.(x<=a)||(x>=b)&&(x<=c)D.(x<=a)&&(b<=x<=c5.判断char型量ch是否为大写字母的正确表达式是()A.‘A’<=ch<=‘Z’B.(ch>=‘A’)&(ch<=‘Z’)C.(ch>=‘A’)&&(ch<=‘Z’)D.(‘A’<=ch)AND(‘Z’>=ch)6.设x,y,z都是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是()A.‘x’&&‘y’B.x<=yC.x||y+z&&!yD.!(x<y)&&!z||1)7.已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<‘B’&&!y)的值是()A.0B.语法错误C.1D.“假”8.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是()A.A%2==1B.!(A%2==0)C.!(A%2)D.A%29.设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后的值为()A.1B.2C.3D.410.下列运算符中优先级最低的是( )优先级最高的是( )A.?B.&&C.+D.!=11.以下程序的运行结果是( )#include<stdio.h>main(){int a,b,d=241;a=d/100%9; b=(-1)&&(-1);printf(“%d,%d”,a,b);}A.6,1B.2,1C.6,0D.2,012.执行以下语句后a的值为( )int a,b,c;a=b=c=1; ++a||++b&&++c;A.错误B.0C.2D.1A.1B.2C.错误D.013.执行以下语句后的值为(),b的值()int a=5,b=6,w=1,x=2,y=3,z=4;(a=w>x)&&(b=y>z);A.5B.0C.2D.1 A.6 B.0 C.1 D.414.以下不正确的if语句形式是()A.if(x>y&&x!=y);B.if(x==y)x+=y;C.if(x!=y)scanf(“%d“,&x) else scanf(“%d”,&y);D.if(x<y){x++;y++;}15.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是( )if(x>y) z=x;x=y;y=z;A.x=10,y=20,z=30B.x=20,y=30,z=30C.x=20,y=30,z=10D.x=20,y=30,z=2016.以下语句语法正确的是:( )A.if(x>0) printf(“%f”,x)else printf(“%f”,-x);B.if(x>0){x=x+y;printf(“%f”,x);}else printf(“%f”,-x)C.if(x>0){x=xy; pri ntf(“%f”,x);};else printf(“%f”,-x);D.if(x>0){x=x+y;printf(“%f”,x)}else printf(“%f”,-x);17.请阅读以下程序,该程序( )main(){int a=5,b=0,c=0;if(a+b+c) printf(“***\n”); else printf(“$$$\n”);}A.有语法错误不能通过编译B.可以通过编译但不能通过连接C.输出***D.输出$$$18.以下程序的运行结果是( )main(){int m=5;if(m++>5) printf(“%d\n”,m);else printf(“%d\n”,m--);} A.4 B.5 C.6 D719.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x 的值是( )if(a<b)if(c<d) x=1;else if(a<c)if(b<d)x=2;else x=3;else x=6;else x=7;A.1B.2C.3D.620.有一函数关系如下:x-1(x<0)y={ x(x=0)x+1 (x>0)则下面程序段中能正确表示上面关系的是( )A.y=x+1; if(x>=0) if(x==0) y=x; else y=x-1;B.y=x-1 if(x!=0) if(x>0) y=x+1; else y=x;C.if(x<=0) if(x<0) y=x-1; else y=x; else y=x+1;D.y=x; if(x<=0) if(x<0) y=x-1; else y=x+1;21.以下程序的输出结果是( )main(){int a=100,x=10,y=20,ok1=5,ok2=0;if(x<y)if(y!=10)if(!ok1)a=1;else if(ok2) a=10;a=-1; printf(“%d\n”,a);}A.1B.0C.-1D.值不确定22.以下程序的输出结果是( )main(){int x=2,y=-1,z=2;if(x<y)if(y<0) z=0;else z+=1;printf(“%d\n”,z);}A.3B.2C.1D.023.为了避免在嵌套的条件语句if--else中产生二义性,C语言规定:else子句总是与( )配对。
A.缩进排位置相同的ifB.其之前最近的ifC.其之后最近的ifD.同一行上的if24.以下不正确的语句为( )A.if(x>y);B.if(x=y)&&(x!=0) x+=y;C.if(x!=y) scanf(“%d”,&x); else scanf(“%d”,&y);D.if(x<y) {x++;y++;}25.main(){float a,b; scanf“%f”,&a);if(a<0.0) b=0.0;else if((a<0.5)&&(a!=2.0)) b=1.0/(a+2.0);else if(a<10.0) b=1.0/x;else b=10.0;printf(“%f\n”,y);}若程序运行时输入为 2.0<CR>,则上面程序的输出结果是( )A.0.000000B.0.500000C.1.000000D.0.25000026.若运行时给变量x输入12,则以下程序的运行结果是()main(){int x,y; scanf(“%d\n”,y);}A.0B.22C.12D.1027.以下程序的运行结果是( )main(){int k=4,a=3,b=2,c=1;printf(“\n%d\n”,k<a?k:c<b?c:a);}A.4B.3C.2D.128.执行以下程序段后,变量a,b,c的值分别是( ) int x=10,y=9; int a,b,c;a=(-x= =y++)?- -x:++y; x=x++;c=y;A.a=9,b=9,c=9B.a=8,b=8,c=10C.a=9,b=10,c=9D.a=1,b=11,c=1029.int w,x,y,z,m;则执行以下语句后m的值为( ) w=1;x=2;y=3;z=4;m=(w<x)?w:x; m=(m<y)?m:y;m=(m<z)?m:z;A.1B.2C.3D.430.若w=1,x=2,y=3,z=4,则表达式w<x?w:y<z?y:z的值是:( )A.4B.3C.2D.131.执行以下程序段后的输出结果是:( )int w=3,z=7,x=10;printf(“%d\n”,x>10?x+100:x-10);printf(“%d\n”,w++||z++);printf(“%d\n”,!w>z);printf(“%d\n”,w&&z);A.0B.1C.0D.01 1 1 11 1 0 01 1 1 032.当a=3,b=2,c=1时,表达式f=a>b>c的值是________33.当a=5,b=4,c=2时,表达式a>b!=c的值是________34.以下程序的运行结果是___________main(){int x=1,y,z;x*=3+2; printf(“%d\t”,x);x*=y=z=5; printf(“%d\t”,x);x=y==z; printf(“%d\n”,x);}35.在C语言中,表示逻辑“真”用__________36.设y为int型变量,请写出描述“y是奇数”的表达式__________37.C语言提供的三种逻辑运算符是____ _____ _____38.设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式____________39.设int x,y,z;请描述“x,y和z中有两个为负数”的表达式____________40.已知A=7.5,B=2,c=3.6,表达式A>B&&C>A||A<B&&!C>B的值是________41.若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是____________42.若 a =2,b=4,则表达式(x=a)||(y=b)&&0的值是___________43.若a=1,b=4,c=3,则表达式!(a<b)||!c&&1的值____________44.若a=6,b=4,c=3,则表达式a&&b+c||b-c的值是___________45.若a=5,b=2,c=1,则表达式a-b<c||b==c的值是____________46.设a=3,b=4,c=5,则表达式a||b+c&&b==c的值是_________47.条件“2<x<3或x<-10”的C语言表达式是_______48.当m=2,n=1,a=1,b=2,c=3时,执行完d=(m=a!=b)&&(n=b>c)后;n的值为______,m的值为________49.以下程序运行结果是______main(){int a1,a2,b1,b2; int i=5,j=7,k=0;a1=!k; a2=i!=j;printf(“a1=%d\t a2=%d\n”,a1,a2);b1=k&&j; b2=k||j;printf(“b1==%d\t b2=%d\n”,b1,b2);}51.以下程序的运行结果是:_________main(){int x,y,z x=1;y=1;z=0;x=x||y&&z; printf(“%d,%d”,x,x&&!y||z);}循环控制练习题1.设有程序段int k=10; while (k=0) k=k-1; 则下面描述中正确的是()A while循环执行10次B 循环是无限循环C 循环体语句一次也不执行D 循环体语句执行一次2.设有以下程序段int x=0,s=0; while(!x!=0)s+=++x;printf("%d",s) ;则()A 运行程序段后输出0B 运行程序段后输出1C 程序段中的控制表达式是非法的D 程序段执行无限次3、语句while(!E);中的表达式!E特等价于()A、E==0B、E!=1C、E!=0D、E==14、下面程序段的执行结果是()a=1;b=2;c=2;while(a<b<c ) {t=a;a=b;b=t;c-;}printf("%d,%d,%d",a,b,c);A、1,2,0B、2,1,0 C 、1,2,1 D、2,1,15、下面程序段的运行结果是()x=y=0;while(x<15) y++,,x+=++y;printf("%d,%d",y,x);A、20,7B、6,12C、20,8 D 8,206、下面程序段的运行结果是()int n=0;while (n++<=2); printf("%d",n);A,2 B、3 C、4 D 有语法错误7、设有程序段t=0;while(printf("*")){t++; if(t<3) break;}下面描述正确的是()A、其中循环控制表达式与0等价B、其中循环控制表达式与’0‘等价C 、其中循环表达式是不合法的D、以上说法都不对8、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。