选择结构练习题

选择结构练习题
选择结构练习题

选择结构练习题

课本P111 4.3

设a=3,b=4,c=5

1、a+b>c&&b==c 1

2、a||b+c&&b-c 0

3、!(a>b)&&!c||1 1

4、!(x=a)&&(y=b)&&0 0

5、!(a+b)+c-1&&b+c/2 1

课本P111 4.5

#include "stdio.h"

#include "math.h"

main()

{

int a,b;

printf ("请输入一个小于1000的正数\n");

scanf ("%d",&a);

if (a>=0&&a<=1000)

{b=sqrt(a);

printf ("%d\n",b);

}

else

{printf ("请输入一个小于1000的正数\n");

}

system ("pause");

}

x x<1

y= 2x-1 1<=x<10

3x-11 x>=10

#include "stdio.h"

main()

{

float x,y;

printf ("请输入x值\n");

scanf ("%f",&x);

if (x<1) y=x;

else if (x>=1&&x<10) y=2*x-1;

else if (x>=10) y=3*x-11;

printf ("y=%f",y);

system ("pause");

}

课本P112 4.7

第一个不能,第二个能。

给一个不多于5位的正整数,要求:

1、求出他是几位数

2、分别输出每一位数字

3、按逆序输出各位数字,例如原数为321,应输出123 #include "stdio.h"

main()

{

int a,b,c,d,e,f,g,h,i,j,k;

printf ("请输入\n");

scanf ("%d",&a);

{if (a<0||a>=100000) printf("超出\n");

else if (a>=0&&a<10) printf("为1位数\n");

else if (a>=10&&a<100) printf("为2位数\n");

else if (a>=100&&a<1000) printf("为3位数\n");

else if (a>=1000&&a<10000) printf("为4位数\n");

else if (a>=10000&&a<100000) printf("为5位数\n");

}

b=a/10000;

c=a/1000-b*10;

d=a/100-c*10-b*100;

e=a/10-d*10-c*100-b*1000;

f=a-e*10-d*100-c*1000-b*10000;

g=b*1+c*10+d*100+e*1000+f*10000;

h=c*1+d*10+e*100+f*1000;

i=d*1+e*10+f*100;

j=e*1+f*10;

k=f*1;

{if (a<0||a>=100000) printf("超出\n");

else if (a>=0&&a<10) printf("个位为%d\n逆序输出为%d\n",f,k);

else if (a>=10&&a<100) printf("个位为%d\n十位为%d\n逆序输出为%d\n",f,e,j);

else if (a>=100&&a<1000) printf("个位为%d\n十位为%d\n百位为%d\n逆序输出为%d\n",f,e,d,i);

else if (a>=1000&&a<10000) printf("个位为%d\n十位为%d\n百位为%d\n千位为%d\n逆序输出为%d\n",f,e,d,c,h);

else if (a>=10000&&a<100000) printf("个位为%d\n十位为%d\n百位为%d\n千位为%d\n万位为%d\n逆序输出为%d\n",f,e,d,c,b,g);

}

system ("pause");

}

课本P64 4.8

#include "stdio.h"

main()

{

int a;

printf ("请输入分数\n");

scanf ("%d",&a);

if (a>=0&&a<=100)

{switch ((int)a/10)

{

case 10:

case 9:printf("A\n");break;

case 8:printf("B\n");break;

case 7:printf("C\n");break;

case 6:printf("D\n");break;

default:printf("E\n");break;

}

}

else printf("请重新输入\n");

system("pause");

}

课本P65 4.10

#include "stdio.h"

main()

{

float a,b;

printf ("请输入利润\n");

scanf ("%f",&a );

if (a<=100000) b=a*10/100;

else if (a>100000&&a<=200000) b=(a-100000)*7.5/100+10000;

else if (a>200000&&a<=400000) b=(a-200000)*5/100+7500+10000;

else if (a>400000&&a<=600000) b=(a-400000)*3/100+10000+7500+10000;

else if (a>600000&&a<=1000000) b=(a-600000)*1.5/100+6000+10000+7500+10000;

else if (a>1000000) b=(a-1000000)*1/100+6000+6000+10000+7500+10000;

printf ("奖金为%f元\n",b);

system ("pause");

}

#include "stdio.h"

main()

{

float a,b;

int c;

printf ("请输入利润\n");

scanf ("%f",&a );

c=a/100000;

switch (c)

{

case 0:b=a*10/100;break;

case 1:b=(a-100000)*7.5/100+10000;break;

case 2:

case 3:b=(a-200000)*5/100+7500+10000;break;

case 4:

case 5:b=(a-400000)*3/100+10000+7500+10000;break;

case 6:

case 7:

case 8:

case

9:b=(a-600000)*1.5/100+6000+10000+7500+10000;break;

default:b=(a-1000000)*1/100+6000+6000+10000+7500+10000;

}

printf ("奖金为%f元\n",b);

system ("pause");

}

1、编写一个程序:将用户输入的分数按以下规则转换成相应的等级:

分数:90~100 等级:优

分数:80~89 等级:良

分数:70~79 等级:中

分数:60~69 等级:及格

分数:60以下等级:不及格

注:分别用if和switch语句编写。

#include "stdio.h"

main()

{

int a;

printf ("请输入分数\n");

scanf("%d",&a);

if (a>=90&&a<=100) printf("优\n");

else if (a>=80&&a<=89) printf("良\n");

else if (a>=70&&a<=79) printf("中\n");

else if (a>=60&&a<=69) printf("及格\n");

else if (a<60) printf("不及格\n");

system("pause");

}

#include "stdio.h"

main()

{

int a;

printf ("请输入分数\n");

scanf("%d",&a);

if(a>=0&&a<=100)

{switch(a/10)

{

case 10:

case 9:printf("优\n");break;

case 8:printf("良\n");break;

case 7:printf("中\n");break;

case 6:printf("及格\n");break;

default:printf("不及格\n");

}

}

else printf("请重新输入\n");

system("pause");

}

2、编写一个程序实现这样的功能:商店卖软盘,每片定价3.5元,按购买的数量可给与如下优惠:

购买满100片,优惠5%

购买200片以上,优惠6%

购买300片以上,优惠8%

购买400片以上,优惠10%

购买500片以上,优惠15%

根据不同的购买量,打印应付货款。

#include "stdio.h"

main()

{

int a;

float b;

printf("请输入片数\n");

scanf ("%d",&a);

if (a>=500)

b=3.5*a*15/100;

else if (a>=400&&a<500)

b=3.5*a*10/100;

else if (a>=300&&a<400)

b=3.5*a*8/100;

else if (a>=200&&a<300)

b=3.5*a*6/100;

else if (a>=100&&a<200)

b=3.5*a*5/100;

else if (a<100)

b=3.5*a;

printf("%f\n",b);

system("pause");

}

3、编写一个程序完成如下计算:

x︱x-y2︱ x=y

y= x+(x+y)*(x-y2)/(x-y) x!=y且x<1

0.2x+(0.2x+y)*(x-y2)/(0.2x-y) x!=y且x>=1

#include "stdio.h"

main()

{

float a,b,c;

printf("请输入x,y值\n");

scanf("%f%f",&a,&b);

if (a=b)

{

if (a>b*b) c=a*(a-b*b);

else c=a*(b*b-a);

}

if (a!=b&&a<1)

c=a+(a+b)*(a-b*b)/(a-b);

if (a!=b&&a>=1)

c=0.2*a+(0.2*a+b)*(a-b*b)/(0.2*a-b);

printf("%f\n",c);

system("pause");

}

4、编写一个程序将用户输入的字母进行大小写转换。

#include "stdio.h"

main()

{

char a,b,c;

printf("请输入\n");

scanf("%c",&a);

if (a>=65&&a<=90)

b=a+32;

else if (a>=97&&a<=122)

b=a-32;

printf("%c\n",b);

system("pause");

}

5、按托运规则,行李不超过50公斤时,运费为0.15元/公斤,如超过50

公斤,超过部分的运费为0.22/公斤,现有行李w公斤,编写一个程序计算运费。#include "stdio.h"

main()

{

float w,a;

printf("请输入行李重量(公斤)\n");

scanf("%f",&w);

if (w>=0&&w<=50)

a=0.15*w;

else if (w>50)

a=0.22*w-3.5;

printf("费用为%f元\n",a);

system("pause");

}

6、编写一个程序根据用户输入的三角形的三条边长判定是何种三角形。

#include "stdio.h"

main()

{

float a,b,c;

printf ("请按由小到大顺序输入\n");

scanf ("%f%f%f",&a,&b,&c);

if (a+b

else

{

if (a*a+b*b==c*c) printf("直角三角形\n");

else if (a==b&&a!=c) printf("等腰三角形\n");

else if (a==b&&a==c) printf("等边三角形\n");

}

system("pause");

}

7、编写一个程序输入年、月,打印出该年份该月的天数。

#include "stdio.h"

main()

{

int a,b;

printf ("请输入年月\n");

scanf ("%d%d",&a,&b);

if (a%4==0&&a%100!=0||a%400==0)

{

if(b==1||b==3||b==5||b==7||b==8||b==10||b==12) printf("该月有31天\n");

else if (b==4||b==6||b==9||b==11) printf("该月有30天\n");

else if (b==2) printf("该月有29天\n");

}

else

{

if(b==1||b==3||b==5||b==7||b==8||b==10||b==12) printf("该月有31天\n");

else if (b==4||b==6||b==9||b==11) printf("该月有30天\n");

else if (b==2) printf("该月有28天\n");

}

system("pause");

}

8、假定向国外邮寄包裹的收费如下计算:首先,包裹重量四舍五入到最近的15克的倍数,然后按下表收费:

重量(克)收费(元)

15 5

30 9

45 12

60 14(每增加1000km加1元)75 15(每增加1000km加2元)

编写一个程序实现上述计算过程。

9、编写一个程序完成两个数的四则运算。

10、编写一个程序,根据用户输入的字母判定它代表星期几。

选择结构程序设计习题

选择结构程序设计练习 1.从键盘输入一个字符型数据,若输入一个数字字符('0'-'9'),则将其转换成相应的整数显示出来;若输入其它字符,则显示出错信息。[提示]根据字符型数据的ASCII码值是否在‘0’字符与‘9’字符之间进行判断。使用if…else…语句。 精选文档,供参考!

2.编写一个程序,其功能为:从键盘输入三个数x、y、z,判断x+y=z是否成立,若成立输出“x+y=z”的信息,否则输出“x+y!=z”的信息。[提示] 条件判断表达式x+y==z 3.编写一个程序,其功能为:输入三个整数,输出最大数和最小数。 [提示] 设置最大值变量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<1 2x-1 1≤x<10 3x-11 x≥10 [提示]根据输入的x值的取值,计算y的值并输出。使用if…else if语句以及复合语句。 精选文档,供参考!

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”的表达式x2&&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||AB的值是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。 !(x=a)&&(y=b)&&0 16、if (!k) a=3;语句中的!k可以改写为k= =0,使其功能不变。 二、选择题 1、逻辑运算符两侧运算对象的数据类型(D)。 A)只能是0或1 B)只能是0或非0正数 C)只能是整型或字符型数据 D)可以是任何类型的数据 2、以下关于运算符优先顺序的描述中正确的是(C)。 A)关系运算符<算术运算符<赋值运算符<逻辑与运算符 B)逻辑与运算符<关系运算符<算术运算符<赋值运算符 C)赋值运算符<逻辑与运算符<关系运算符<算术运算符 D)算术运算符<关系运算符<赋值运算符<逻辑与运算符 3、下列运算符中优先级最高的是(B)。 A)< B)+ C)&& D)!= 4、为判断字符变量c的值不是数字也不是字母时,应采用下述表达式(D)。 A)c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122 B)!(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122) C)c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122 D)!(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122) 5、能正确表示“当x的取值在[1,100]和[200,300]范围内为真,否则为假”的表 达式是(C)。 A) (x>=1)&&(x<=100)&&(x>=200)&&(x<=300) B) (x>=1)||(x<=100)||(x>=200)||(x<=300) C) (x>=1)&&(x<=100)||(x>=200)&&(x<=300)

顺序结构选择结构和循环结构的程序设计典型例题分析与解答

顺序结构、选择结构和循环结构的程序设计典型例题分析与解答 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=”都是非格式控制符, 在输入时必须原样位置输人,所以只有备选答案④才符合这个要求。【答案】④ 5 设有下列程序段,则执行该程序段后的输出是( ) int i=012; float f=1.234E-2; printf("i=%-5df=%5.3f",i,f); ... ①i=__012f=1.234 ②i=10___f=0.012 ③10___O.012 ④___100.012 注:答案中的_代表一个空格。 【分析】输出语句的格式控制符串中的“i=”、“f=”都是非格式控制符,在输出时必须原样,原位置输出,所以只有备选答案①和②才符合这个要求;格式控制符“%-5d”的格式控制是数据左对齐、宽度为5的整型数据,备选答案①中的数据是右对齐的;此外,该答案中的实数“1.234E-2”应该代表“0.01234”,而不是“1.234”。只有备选答案②符合题意。【答案】② 6 在Turbo C的主屏幕中,将当前编辑的源程序以原名存盘,可以选用___________菜单项,也可以直热键________。 【分析】如果选用“File/Save”菜单项,或者使用热键(f12),当前编辑的源程序将以原来的文件名存盘;如果选用“File /Write to”,当前编辑的源程序将以新的文件名存盘。 【答案】File/Save F2 7 下列各种选择结构的问题中,最适合用if-else语句来解决的是( ) ①控制单个操作做或不做的问题 ②控制两个操作中选取一个操作执行的问题 ③控制三个操作中选取一个操作执行的问题 ④控制10个操作中选取一个操作执行的问题 【分析】if-else语句是专门解决“双分支结构”的,而“双分支结构”的问题就是用单个条件控制从两个操作中选取一个操作来执行的问题。 【答案】② 8 下列程序是输入一个小写字母,转换成对应大写字母的后一个字母输出。例如:'a'将转换成’B’、…、‘y’将转换成’Z’,其中的’Z’将转换成’A’。请填写程序中所缺少的语句。 main() {char ch ; scanf(”%c”,&ch〕; ch=ch- 32+1; ___________________; printf("%c\n",ch); } 【分析】分析程序库中的“ch=ch- 32+ 1;”语句,可知是将字符型变量 ch中的小写字母转换成对应的大写字母(- 32)的后一个字母(+ l)。如果ch中的字母是' a'、' b'、··,'y',转换结果都不会出错,但是,如果 ch中的字母是'Z',则-32后是大写字母'Z',再+l后将不是大写字母了。为了使其转换成'A',需要用一个单分支结构来实现:如果ch的值等于'Z'+ l,则硬性将 ch的值改成'A'。完成这个任务的语句是一条单分支语句,正是所缺少的语句。 【答案】 if (ch=='Z'+l) h='A'; 9不能正确计算下列分段函数的程序段是_________ |-1 x<0 y=|0 x=0 x>0 ① switch(x< 0)② if(x> 0) {case1:y=-1;break; y=1; case 0:switch(x==0)else {casel:y=0;break;if(x==0) case 0: y= l;y=0 } else } &ny=-l ③ y= l;④ y= l; if(x==0)if(x<0) y=0; y =-l; else else y=- l; if(x== 0) y=0; 【分析】先来分析备选答案①:表达式“x<0”的值只有两种可能性,成立值为1、不成立值为on如果“x<0”的值为 1(即 x< 0),则执行“easel:”后的语句“y=-l”后,退出 switch语句,符合分段函数要求。如果“x<0”的值为0(即x>=0),则执行“case 0:”后的switch语句。该switch语句的表达式是“x==0”,结果也有两种:成立为1、不成立为0.如果“x==0”的值为1(即x=0),则执行“case l:”后的语句“y=0”后,退出 switch语句,符合分段函数要求。如果“x==0”的值为0(即x>0),则执行“case 0:”后的语句“y=1”,也符合分段函数要求。再分析备选答案②:这是标准的用嵌套双分支结构来实现三分支的分段函数,结果显然是能求解分段函数的。分析备选答案③:双分支语句的条件是“x==0”,条件成立时,y值为0,符合分段函数的要求,条件不成立时(包含x>0和x<0两种情况),结果y值为-l,显然不符合分段函数的要求,所以本题要选该答案。至于备选答案④,是能正确计算分段函数的,首先置y为1;接着用双分支结构处理“x<0”和“x>=0”的两种情况:前者使得y值为一l;后者再执行一个单分支结构,如果“x==0”则使y值为0,否则不改变y值,保持y的原值1,符合分段函数的要求。 【答案】③ 10 三种循环语句都能解决循环次数已经确定的次数型循环,其中__________循环语句最适合。 【分析】当“for(表达式 1;表达式 2;表达式 3)语句;”中的表达式1为:整型变量 k=l;表达式 2为:整型变量 k<= n;表达式 3为:整型变量 k++;则这个 for循环就是次数为n次的标准次数型循环结构。 【答案】for 11执行下列程序段后的输出是() x=l; while(x<=3) x++,y=x+++x; printf("%d,%d",x,y); ① 6,10 ②5,8 ③4,6 ④3,4 【分析】我们可以使用逐步记录运行结果的方法来获得输出结果,记录如下: x=1; 进入循环,条件满足执行循环体:计算x+十得x为2,计算y=x+++x,得y为4、x为3; 继续循环,条件满足执行循环体:计算x+十得x为4,计算y=x+++x,得y为8、x为5; 继续循环,条件不满足退出循环; 输出x和y的值为5,8。 【答案】② 12 执行下列程序段,其中的do-while循环一共执行_次。 static int x; do x+=x*x; while (x); 【分析】对静态型变量,不赋初值也有值,对整型变量,其值为 0。执行循环语句 do-while 的循环体,x+=x* x是x=x+(x*

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)

选择结构题目

1 单选(1分) 从键盘输入三角形的三边长为a,b,c,按下面公式计算并输出三角形的面积。 程序代码如下,但程序运行后输出结果不正确,请找出有问题的语句。 1.#include 2.#include 3.int main() 4.{ 5.float a, b, c; 6.float s, area; 7.printf("Input a,b,c:"); 8.scanf("%f,%f,%f",&a,&b,&c); 9.if (a+b>c && b+c>a && a+c>b) 10.{ 11.s = 1/2 * (a + b + c); 12.area = sqrt(s * (s - a) * (s - b) * (s - c)); 13.printf("area=%.2f\n", area); 14.} 15.else 16.{ 17.printf("It is not a triangle\n"); 18.} 19.return 0; 20.} ? A. 第12行:area = sqrt(s * (s - a) * (s - b) * (s - c)); ? B. 第11行:s = 1/2 * (a + b + c); ? C. 第8行:scanf("%f,%f,%f",&a,&b,&c); ? D. 第9行:if (a+b>c && b+c>a && a+c>b) 2 单选(1分) 下列复合语句中,不能实现两数交换的是 得分/总分 ? A.

1.{ 2. b = a * b; 3. a = b / a; 4. b = b / a; 5.} ? B. 1.{ 2.t=a; 3.a=b; 4.b=t; 5.} ? C. 1.{ 2. a = a + b; 3. b = a – b; 4. a = a – b; 5.} ? D. 1.{ 2.a=b; 3.b=a; 4.} 3 单选(1分) 写出下面程序的输出结果 1.#include 2.int main() 3.{ 4.int x=1, y=0, a=0, b=0; 5.switch(x) 6.{ 7.case 1: 8.switch(y) 9.{ 10.case 0: a++; 11.case 1: b++; 12.} 13.case 2: a++; 14.b++; 15.} 16.printf("a=%d, b=%d\n", a, b) ;

c语言选择结构试题带答案

1. 以下非法的赋值语句是 A: n=(i=2,++i); B: j++; C: ++(i+1); D: x=j>0; 2. 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2 的值是A: 6 B: 0 C: 2 D: 1 3. 阅读以下程序: main() { int x; scanf(“%d”,&x); if(x--<5) printf(“%d”,x); else printf(“%d”,x++); } 程序运行后,如果从键盘上输人5,则输出结果是()。 A: 3 B: 4 C: 5 D: 6 4. 有如下程序 main0 { int a=2,b=-1,c=2; if(a main()

a=c/100%9; b=(-1)&&(-1); printf("%d,%d\n",a,b); } 输出结果是( )。 A: 2,1 B: 3,2 C: 4,3 D: 2,-1 6.两次运行下面的程序,如果从键盘上分别输入6 和4,则输出结果是main( ) { int x; scanf("%d",&x); if(x + + >5) printf("%d",x); else printf("%d\n",x - -); } A: 7 和5 B: 6 和3 C: 7 和4 D: 6 和4 7. 能表示x 为偶数的表达式是 A: x%2==0 B: x%2==1 C: x%2 D: x%2!=0 8. 下面的程序段中共出现了几处语法错误? int a,b; scanf("%d",a); b=2a; if(b>0) printf("%b",b); A: 1 B: 2 C: 3 D: 4 9. C 语言中,逻辑“真”等价于 A: 大于零的数 B: 大于零的整数 C: 非零的数 D: 非零的整数

第5章选择结构程序设计

第5章选择结构程序设计 在日常生活和工作中,经常会遇到各种各样的选择,根据选择的不同,会得到不同的结果。在程序设计中,也经常会根据不同的情况执行不同的操作,这与现实生活中的选择非常类似。但程序设计中的选择结构根据条件只能选择一个分支执行,即无论分支多寡,必择其一;纵然分支众多,仅选其一。 本章主要介绍实现选择结构程序设计方面的知识,包括If语句、Select Case语句、条件函数的使用,最后介绍与选择结构相关的单选按钮、复选框和框架三个基本控件的使用。 5.1引例 【例5.1】输入学生百分制成绩,将该成绩转换为五级分制显示输出。程序运行结果如图5.1所示。其中转换规则为:90及90分以上为优,80~90为良(含80,不含90,后面相同),70~80为中,60~70为及格,0~60为不及格。 图5.1 例5.1的运行结果 该题目是选择结构的典型应用。程序代码如下: Private Sub Command1_Click() cj = Val(Text1) If cj < 0 Or cj > 100 Then MsgBox "输入的成绩无效" Text1.Text = "" Label1.Caption = "" ElseIf cj >= 90 Then Label3.Caption = "优" ElseIf cj >= 80 Then Label3.Caption = "良" ElseIf cj >= 70 Then Label3.Caption = "中" ElseIf cj >= 60 Then Label3.Caption = "及格" Else Label3.Caption = "不及格" End If End Sub

选择结构程序设计练习题

选择结构程序设计练习题 1.逻辑运算符两侧运算对象的数据类型( ) A.只能是0和1 B.只能是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<=c 5.判断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<=y C.x||y+z&&!y D.!(x

7.已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<‘B’&&!y)的值是() A.0 B.语法错误 C.1 D.“假” 8.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是() A.A%2==1 B.!(A%2==0) C.!(A%2) D.A%2 9.设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后的值为() A.1 B.2 C.3 D.4 10.下列运算符中优先级最低的是( )优先级最高的是( ) A.? B.&& C.+ D.!=

第五章选择结构程序设计练习含答案v1

第五章选择结构程序设计 5.1 选择题 【题5.4】能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假” 的表达式是。C 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) 【题5.5C //// //// X a b c 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<=c) 【题5.6】判断char型变量ch是否为大写字母的正确表达式是。C A)‘A’<=ch<=‘Z’B)(ch>=‘A’)&(ch<=‘Z’) C)(ch>=‘A’)&&(ch<=‘Z’) D)(‘A’<=ch)AND(‘Z’>=ch) 【题5.10】设有:int a=1,b=2,c=3,d=4,m=2,n=2; 执行(m=a>b)&&(n=c>d)后n的值为。B A)1 B)2 C)3 D)4 【题5.11】判断char型变量c1是否为小写字母的正确表达式是。D A)‘a’<=c1<=‘z’B)(c1>=a)&&(c1<=z) C)(‘a’>=c1)||(‘z’<=c1) D)(c1>=‘a’)&&(c1<=‘z’) 【题5.12】以下程序的运行结果是。B #include “stdio.h” main() {

C语言期中测试题(含答案)

一、填空 1.C语言源程序文件的后缀是 .c 。 2.结构化程序由顺序结构、选择结构、循环结构三种基本结构组成。 3.在C语言中,用关键字 int 定义基本整型变量,一个基本整型变量系统分配 2 字节,用关键字 float定义单精度实型变量,一个单精度实型变量系统分配 4 字节,用关键字 double 定义双精度实型变量,一个双精度实型变量系统分配 8 字节。二、选择 1.以下选项中正确的实型常量是( A ) A.12. B.-20 C. 1,000 D. 4 5 6 2.以下选项中不正确的实型常量是(无正确答案) A. B. C. D. 456e-2 3.以下选项中不合法的用户标示符是( C ) A. _123 B.A12_1 C. A $ D.Dim 4.C语言中运算对象必须是整型的运算符是( A ) A .% B./ C.! D.* 5. 若变量已正确定义并赋值,符合C语言语法的表达式是( B ) A.a=a+7 ; B.a=7+b+c,a++ C. int%4) D.a=a+7=c+b 6.下面合法的赋值语句是( C ) A.a=b=58 B.k=int(a+b) C. a=58,b=58 D.--i 7.若变量已正确定义为int ,要给a,b,c输入数据,正确的输入语句是( D ) A.read(a,b,c) B.scanf(“%d%d%d”,a,b,c) C.scanf(“%D%D%D”,&a,&b,&c) D.scanf(“%d%d%d”,&a,&b,&c) 8.若变量a,b,t已正确定义,要将a和b中的数进行交换,以下选项中不正确的语句组是( C ) A.a=a+b,b=a-b,a=a-b; B. t=a,a=b,b=t; C.a=t;t=b;b=a D.t=b;b=a;a=t; 9.若有正确定义语句:

C语言选择结构程序设计编程题.doc

实验2 选择结构程序设计 一.实验目的: 1.掌握选择控制语句的使用方法; 2.了解C程序语句的执行过程。 二.实验内容: 1.编写程序:输入一个整数,判断该数的奇偶性。(输出相应的标志even-偶数odd-奇数,请记住这两个单词)。 2.从键盘输入的正整数,判断是否能被5和7同时整除,若是,则输出Yes;否则输出No。 3.输入一个字符,如果是大写字母改变为小写字母;如果是小写字母,则把它变为大写字母;若是其它字符则不变。 4.编写程序,对于给定的一个百分比制成绩,输出相应的五分制成绩。设:90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为’E’(用if…else…与switch 语句两种方法实现)。 5. 企业发放的奖金根据利润提成。利润(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,求发放奖金总数。 6. 输入某年某月某日,判断这一天是这一年的第几天。 7. 输入一个字符,请判断是字母、数字还是特殊字符。 8. 身高预测: 男性成人身高=(父亲身高+母亲身高)*0.54cm 女性成人身高=(父亲身高*0.923+母亲身高)/2cm 如果喜爱体育锻炼,那么身高可增加2%;如果有良好的饮食习惯,可增加身高1.5%。键盘输入性别、父母身高、是否爱好体育锻炼、是否有良好的饮食习惯,利用给定身高预测方法对你的身高进行预测。 9. 要求用switch语句编程设计一个简单的计算器程序。要求根据用户从键盘输入的表达式。 操作数1 运算符op 操作数2 计算表达式的值。指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。 在此基础上,增加如下要求: (1)如果要求程序能进行浮点数运算,程序应该如何修改?如何比较实型变量和常数0是否相等? (2)如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多个空格符,那么程序如何修改? (3)如果要求连续多次算术运算,每次运算结束后,程序都给出提示: Do you want to continue(Y/N y/n)? 如果用户输入Y或y时,程序继续进行其它算术运算,否则程序才退出运行状态。那么程序如何进行修改?

第4章选择结构习题答案

第四章选择结构习题参考答案: 一、选择题 1-10:A CABD CADD A 11-20:C CBDC ACACB 21-30:D CB B D AC A BA 31-40:DCDCB BAACB 41-50:CDDDA A A D DB 二、填空题 (1) 2 (2) 4,5,99 (3) 10 20 0 (4) 2 1 (5) -4 (6) 3 (7) yes (8) 1 (10) 20,0 (11) 585858 (12) 0 三、编程题 1, .#include void main() { int x,y; scanf(“%d”,&x); if(x>-1) {if(x>5) y=2*x+5; else if(x>2) y=x*(x+2); else y=2*x; printf(“y=%d\n”,y); } else printf(“输入值范围错误!”) ; } 2, . #include void main() {float a,b; scanf(“%f”,&a); if(a<2000) b=0; else if(a<4000) b=a*0.03; else if(a<5000) b=a*0.04; else b=a*0.05; printf(“收入所得税为:”,b); } 3,题目:输入某年某月某日,判断这一天是这一年的第几天? 方法一: #include void main() { int year,month,daily,sum;

printf("请输入年月日:/n"); scanf("%d%d%d",&year,&month,&daily); switch(month) { case 1:{sum=daily;break;} case 2:{sum=31+daily;break;} case 3:{sum=31+28+daily;break;} case 4:{sum=31+28+31+daily;break;} case 5:{sum=31+28+31+30+daily;break;} case 6:{sum=31+28+31+30+31+daily;break;} case 7:{sum=31+28+31+30+31+30+daily;break;} case 8:{sum=31+28+31+30+31+30+31+daily;break;} case 9:{sum=31+28+31+30+31+30+31+31+daily;break;} case 10:{sum=31+28+31+30+31+30+31+31+30+daily;break;} case 11:{sum=31+28+31+30+31+30+31+31+30+31+daily;break;} case 12:{sum=31+28+31+30+31+30+31+31+30+31+30+daily;break;} default:{printf("你输入的月份不对,请重新输入。/n");}; } if((year%400==0||(year%4==0 && year%100!=0) ) &&month>=2) printf("你输入的日子是%d年的第%d天。/n",year,sum+1); else printf("你输入的日子是%d年的第%d天。/n",year,sum); } 方法二: #include void main() {int day,month,year,sum,leap; printf("/nplease input year,month,day/n"); scanf("%d,%d,%d",&year,&month,&day); switch(month)/*先计算某月以前月份的总天数*/ {case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:printf("data error");break; } sum=sum+day; /*再加上某天的天数*/ if(year%400==0||(year%4==0&&year%100!= 0))/*判断是不是闰年*/ leap=1; else leap=0; if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/ sum=sum+1; printf("这一天是这一年的第%d 天.",sum); }

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)1 4.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

第4章 4.1选择结构习题

选择结构习题 一、单项选择题 1.假设Text1文本框中输入了学生的成绩,以A,B,C,D,E字符表示不同的等级,下 列语句中_________可用于判断输入数据是否正确。 A.If “A”<=Text1<=”E” Then MsgBox “输入正确” Else MsgBox “输入错误” B.I f “A”<=Text1 Or Text1<=”E” Then MsgBox “输入正确” Else MsgBox “输入错误” C.I f A<=Text1 And Text1<=E Then MsgBox “输入正确” Else MsgBox “输入错误” D.If “A”<=Text1 And Text1<=”E” Then MsgBox “输入正确” Else MsgBox “输入错误” 2.下面程序段的功能是求两个数中的大数,________是不正确的。 A.Max=IIf(x>y,x,y) B.If x>y Then Max =x Else Max=y C.Max=x; If y>=x then Max =y D.If y>=x Then Max=y;Max=x; 3.对于选择结构语句If x=10 Then y=100,下列说法正确的是_________。 A.x=10 和y=100均为赋值语句 B.x=10 和y=100均为关系表达式 C.x=10 为关系表达式,y=100为赋值语句 D.x=10 为赋值语句,y=100为关系表达式 4.关于结构化程序设计的描述,下述说法中正确的是____________。 A.面向对象、顺序执行 B.面向过程、事件驱动 C.面向过程、顺序驱动 D.面向对象、事件驱动 5.在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程: Private Sub Command1_click() x=val(InputBox(“Input ”)) Select Case x Case 1,3 Print “分支1” Case Is>4 Print “分支2” Case Else Print “Else分支” End Select End Sub 程序运行后,如果在输入对话框中输入2,则窗体上显示的是__________。 A.分支1 B. 分支2 C. Else 分支 D.程序出错 6. 以下Case语句中错误的是________。 A.Case 0 To 10 B. Case Is>10 C. Case Is>10 and Is<50 D. Case 3,5,Is>10

选择结构练习题

选择结构练习题 一、选择题 1.下列错误的语句是() A.if(a>b) printf(“%d”,a); B.i f(&&); a=m C.i f(1)a=m;else a=n; D.if(a>0);{else a=n;} 2. #include main() { int x,y; scanf(“%d”.&x); y=0; if (x>=0) {if (x>0) y=1;} else y=-1; printf (“%d”,y); } 当从键盘输入32时,程序输出结果为() A.0 B. -1 C. 1 D. 不确定值 2.以下程序的输出结果是() #include main() { int a=2,b=-1,c=2; if (a>b) if (b<0 ) c=0; else c+=1; printf(“%d\n”,c); } A.0 B. 1 C.2 D.3 4. 以下程序的输出结果是() #include main() { int k=2; switch (k) {case 1:printf(“%d\n”,k++);break; case 2:printf(“%d”,k++); case 3:printf(“%d\n”,k++);break; case 4:printf(“%d\n”,k++); default :printf(“Full!\n”);} } A.1 3 B.2 3 C.2 2 D 3 2 5.下列程序的运行结果是()

main() { int a=2,c=5; printf(“a=%d,b=%d\n”,a,c); } A. a=%2,b=%5 B. a=2,b=5 C.a=c,b=d D a=%d,b=%d 6.语句pritnf(“a\bre\’hi\’y\\\bou\n”);的输出结果是() A. a\bre\\’hi\’y\\bou B.a\bre\’hi\’y\bou C.re’hi’you D. abre’hi’y\bou 7.如下程序的输出结果是() #include main() {int a=12,b=5,c=-3; if(a>b) if(b<0) c=0; else c++; printf(“%d\n”,c); } A.0 B. 1 C. -2 D.-3 8.从键盘输入5,下列程序运行结果是() #include main() {int x; scanf(“%d”,&x); if(x--<5) printf(“%d”,x); else print(“%d”,x++); } A. 3 B.4 C. 5 D.6 9. 如下程序的输出结果是() #include main() { int a=15,b=21,m=0; switch(a%3) {case 0: m++;break; case 1: m++; switch(b%2) {default: m++; case 0: m++; break; } } printf(“%d\n”,m); } 10.下面的程序() #include main() {int x=3,y=0,z=0;

相关文档
最新文档