C语言选择结构作业(含解答)_第1页
C语言选择结构作业(含解答)_第2页
C语言选择结构作业(含解答)_第3页
C语言选择结构作业(含解答)_第4页
C语言选择结构作业(含解答)_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

选择结构作业解答(3)一、选择题:1. 判断char型变量ch是否位数字的表达式的是:a) 0 = ch 0)&( ch = 0)&( ch = 0)|( ch = 9)答案:b)2. 能正确表示a和b不同时为0的逻辑表达式的是:a) a*b=0 b) (a=0)|( b=0) c) (a=0&b!=0)&( b=0&a!=0) d)(a! = 0)|( b != 0)答案:d)解答:3. 能表示a不能被2整除且a、b不相等,但a、b的和等于0的C语言逻辑表达式是:a) a=-b & a%2=0 b) a!=b & a+b=0 & a%2c) !(a%2)&a=-b d) a%2=0 a+b=0答案:d)解答:4. 有以下程序: #include voidmain int x=2,y=3,z;char ch=a;z=(x|!y)&(chA);程序运行后z的值是a)true b)false c)0 d)15. 关于if后面一对圆括号中的表达式,叙述正确的是a) 只能用关系表达式 b) 只能用逻辑表达式c) 只能用关系表达式或逻辑表达式 d) 可以使用任意合法的表达式6. 对switch后面一对圆括号中的表达式,叙述正确的是a) 只能用数字 b) 可以是浮点数 c) 只能用整型数据或字符型数据 d)以上叙述都不对7. 以下不正确的if语句是a) if (ab)&(bc) printf(“max=%d”, a);8. 有以下程序: #include void main() int m=-2; if(m=0) printf(“”); else printf(“%”); 程序运行后的输出结果是:a) b)% c)% d)%9. 有以下程序: #include void main() int a=12,b=20,t=18; if(ab) t=a;a=b;b=t; printf(“a=%d,b=%d,t=%d”,a,b,t); 程序运行后的输出结果是:a)a=12,b=20,t=18 b)a=20,b=18,t=18c) a=20,b=12,t=12 d)a=20,b=18,t=1210. 有以下程序: #include void main() int t=65; if(t45) printf(“%d”,t); else printf(“%d”,t); if(t35) printf(“%d”,t); else printf(“%d”,t); if(t25) printf(“%d”,t); 程序运行后的输出结果是:a)65 b)6565 c) 656565 d)不确定的值11. 有以下程序: #include void main() int t=8; if(t-=8) printf(“%dn”,t-); else printf(“%dn”,t+); 程序运行后的输出结果是:a)9 b)8 c) 7 d)612. 有以下程序: #include void main() int a=2,b=5,c=3,d=2,x; if(a%3b) if(cd) if(b0?x:x0) y=x; else if(x0) y=x; else if(x0) y=x; else if(x=0) y=0; else y=-x;else y=0;d) y=0; if (x=0) if(x0) y=x; else y=-x;b) if (x0) y=x; else if(x0) y=-x; else y=0;14. 若a、b、c1、c2均是整型变量,x,y是浮点型变量,则以下正确的switch语句是a) switch (c1+c2) case 1:y=a+b;break; case 2:y=a-b;break; case 1:y=b-a;break;b) switch (x+y) case 1: case 2:printf(“%d”,a+b);break; d)switch (a-b) default: y=a*b;break; case 10: case 9: x=a+b;break; case 7: case 5: y=b-a;break;c) switch (c1+c2); case c1:y=a-b;break; case c2:x=a*b;break; default:x=a+b;15. 以下关于switch和break语句的说法中正确的是a) break语句只能用在switch语句中;b) 在switch语句中,可以根据需要决定是否使用break语句;c) 在switch语句中必须使用break语句;d) 以上选项都不正确;16. 有以下程序: #include void main() int c; c=getchar(); switch(c-2) case 0: case 1: putchar(c+4); case 2: putchar(c+4);break; case 3: putchar(c+3); case 4: putchar(c+2);break;程序运行后,输入2,输出结果是:a)66 b)6 c)6654 d)没有输出内容二、填空题:1. 关系运算符、逻辑运算符、算术运算符和赋值运算符的运算优先级顺序由高到低的排列顺序是 算术运算符、关系运算符、逻辑运算符、赋值运算符 。2. 满足|y|-9&y=a&ch=A&ch=0) y=4+x; else y=4-x; 。6. 以下程序的功能是输入3个整型变量num1、num2、num3的值,然后对这3个变量按从小到大的顺序排序。请填空。 #include void main() int num1,num2,num3,temp; printf(“please input three numbers:”); scanf(“%d%d%d”,&num1,&num2,&num3); if( ) temp=num1;num1= num2; num2=temp; if( ) temp=num1;num1= num3; num3=temp; if( ) temp=num2;num2= num3; num3=temp; 答案: (1)num1num2 (2)num1num3 (3)num2num37. 以下程序的功能是输入3个整型变量num1、num2、num3的值,求它们中的最大值。请填空。 #include void main() int num1,num2,num3,temp; printf(“please input three numbers:”); scanf(“%d%d%d”,&num1,&num2,&num3); if(num1num2) max=num1; else ; if( ) max= num3; printf(“The largest number is : %d.n”, max); 答案: (1)max=num2 (2)num3max8. 以下程序的功能是从键盘输入一个年份year的值(4位十进制数),判断其是否闰年。闰年的条件是:能被4整除,但不能被100整除;或者能被400整除。请填空。 #include void main() int year,leap=0; printf(“please input the year:”); scanf(“%d”,&year); if(year%400=0) leap=1; else if( )leap=1; else ( ) if( ) printf(“ %d is a leap year.n”, year);else printf(“ %d is not a leap year.n”, year); 答案: (1)year%4=0& year%100!=0 (2)leap=0 (3)leap9. 以下程序运行后,若从键盘输入5 5,则程序的输出结果是: #include void main() int a,b; scanf(“%d%d”, &a,&b); if(a6) if(a6) if(b10)b+; else b-; printf(“ a= %d , b=%dn”, a, b); 答案: a= 5,b=410. 以下程序运行后,若从键盘输入-123,则程序的输出结果是: #include void main() int digit,in,s=0; scanf(“%d”, &in); if(in0)in=-in; digit =in%10; s=s+ digit * digit ; digit =in/100; s=s+ digit * digit ; printf(“ sum= %d n”, s); 答案: sum= 1011. 以下程序运行后,若从键盘输入6,则程序的输出结果是: #include void main() int n; scanf(“%d”, &n); printf(“ %d%cn”, n,(n%4=0)?*:#); 答案: 4#12. 以下程序运行后,若从键盘输入4,则程序的输出结果是: #includevoid main() int n; scanf(“%d”, &n); printf(“ %d%cn”, n,(n%4=0)?*:#); 答案: 4*13. 以下程序的功能是输入一个299之间的数据,判断该数据是否是一个同构数。同构数是指该数出现在其平方数的右边,例5和25是同构数。请填空: #include void main() int x,y; scanf(“%d”, &x); ; if( ) printf(“ %d 是同构数。n”, x ); 答案:(1) y=x*x-x(2) (x/10=0&y%10=0)|y%100=014. 以下程序的功能是判断一个三位数是否是水仙花数。水仙花数是指该数的各位数字的立方和等于该数。请填空: #include void main() int num,a,b,c,sum; ; a=num%10; ; c=num/100; if( ) printf(“ %d 是水仙花数。n”, x ); else printf(“ %d 不是水仙花数。n”, x ); 答案:(1) scanf(“%d”,&num);(2) b= num/10%10(3) num=a*a*a+b*b*b+c*c*c15. 某商场根据购物金额采用打折的方式促销商品。以下程序的功能是计算购物金额。请填空: 购物的折扣率如下 购物金额500元,不打折; 500元购物金额1000元,9折 1000元购物金额,8折。 #includevoid main() float price,r,cost; scanf(“%f”,&price); if(price=500) r=1.0; else if( ) r=0.9 else r=0.8; ; printf(“ n 实际购物金额为:%f n”, cost ); 答案:(1) price=1000(2) cost= price*r三、改错题:1. 以下程序的功是,输入一个整数,判断他是否同时被3、5、7整除;能否被其中一个数整除;是否不能被这3个数整除。以下程序有若干错误,请修改:void main int x;scanf(“%d”,&x);if(x%3=0)|(x%5=0)|(x%7=0) print(“%d can be divided by 3、5、7n”, x);if (x%3=0) print(“%d can be divided by 3n”, x);if (x%5=0) print(“%d can be divided by 5n”, x);if (x%7=0) print(“%d can be divided by 7n”, x);if(x%3!=0)&(x%5!=0)&(x%7!=0) print(“%d cannot be divided by 3、5、7n”, x); 改正以后的程序:#includevoid main() int x;scanf(“%d”,&x);if(x%3=0)&(x%5=0)&(x%7=0) print(“%d can be divided by 3、5、7n”, x);else if (x%3=0) print(“%d can be divided by 3n”, x); else if (x%5=0) print(“%d can be divided by 5n”, x); else if (x%7=0) print(“%d can be divided by 7n”, x);if(x%3!=0)&(x%5!=0)&(x%7!=0) print(“%d cannot be divided by 3、5、7n”, x); 四、将程序补充完整:1. 下面程序的功能是:根据输入的日期(年:ynow, 月:mnow,日:dnow),和出生日期(年:ybirth;月:mbirth; 日:dbirth),计算年龄。请将程序补充完整。 #include void main() int age,ynow,mnow,dnow,ybirth,mbirth,dbirth; printf(“please input your birthday: ”); /*在此补充内容;*/ scanf(“%d%d%d”, &ybirth,&mbirth,&dbirth); printf(“please input todays date(year、month、day) : ”); scanf(“%d%d%d”, &ynow,&mnow,&dnow); age=ynow-ybirth; printf(“your age is : %-d n”,age); 五、编程题:1. 请编写程序,计算一元二次方程ax2+bx+c=0的根。#include#includemain( ) int a,b,c; double d, delta; scanf(%d,%d,%d,&a,&b,&c); if(a=0)if(b!=0) printf( only one root:%fn,-c/(float)b ); else if (c=0) printf(any roots!); else printf( no root!); else delta=b*b-4*a*c;d=sqrt(fabs(delta); if(delta=0)printf(two same r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论