C语言第4章 选择结构程序设计

上传人:zw****58 文档编号:41301121 上传时间:2018-05-29 格式:DOC 页数:7 大小:54KB
返回 下载 相关 举报
C语言第4章 选择结构程序设计_第1页
第1页 / 共7页
C语言第4章 选择结构程序设计_第2页
第2页 / 共7页
C语言第4章 选择结构程序设计_第3页
第3页 / 共7页
C语言第4章 选择结构程序设计_第4页
第4页 / 共7页
C语言第4章 选择结构程序设计_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《C语言第4章 选择结构程序设计》由会员分享,可在线阅读,更多相关《C语言第4章 选择结构程序设计(7页珍藏版)》请在金锄头文库上搜索。

1、第第 4 章章 选择结构程序设计选择结构程序设计4.1 什么是算术运算?什么是关系运算?什么是逻辑运算? 答:略 4.2 C 语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?答:在 C 语言中,用 1 和 0 表示真和假的值;判断一个逻辑表达式的值时,非 0 代表真,0 代表假。比如 3 printf(“please input 3 numbers:”);scanf(“%d,%d,%d”,max=(ab)?a:b; /*这里运用条件运算符,将 a 和 b 中较大的那个数赋给 max*/max=(maxc)?max:c; /*用上面得到的 max(a 和 b 中较大的)和 c

2、比较,取较大的再次赋给 max*/ printf(“max=%dn”,max); 方法 2:用 if 语句进行比较求解。 #include”stdio.h” main() int a,b,c,max; printf(“please input 3 numbers:”);scanf(“%d,%d,%d”,max=a; /*为变量 max 赋初值*/if(max10 时*/y=3*x-11;printf(“y=3*x-11=%d“,y); 4.6 给一个不多于 5 位的正整数,要求:求出它是几位数;分别打印出每 一位数字;按逆序打印出各位数字,例如原数为 321,应输出 123。 分析: 1判断输

3、入的数是几位数就是用这个数和 9999,999,99,9 进行比较; 2分别打印出每个数字则利用两个整数相除的结果仍为整数进行计算; 3反序数字,实际上就是将求得的每个数字对应的变量按照不同顺序输出。 题目中说输入的数不多余 5 位,就表示可以输入少于 5 位的数,这样存在一个 问题,如果是 1234,是否将求得的万位数 0 也输出出来,变成 01234,这个问 题在考虑输出时不可避免,因为计算时是要首先计算万位数字的。由于通常不 输出,也就是有几位数就输出几位数字。那么我们将 1234 就表示为 1234,代 码如下: 方法 1: #include “stdio.h“ main()long

4、num; /*为了有效表示数的范围,要将输入的 5 位数定义为长整型*/int ge,shi,bai,qian,wan,place; /*5 个变量分别表示个位,十位,百位,千位,万位数字及数字总个数*/printf(“please input a number(from 0 to 99999):“);scanf(“%ld“,/*计算 place,即求出这个数是几位数:*/if(num9999)place=5;else if(num999)place=4;else if(num99)place=3;else if(num9)place=2;elseplace=1;printf(“Place=%

5、dn“,place);/*利用两个整数相除仍得整数计算每位数字是多少,输出在后面的 switch 中*/wan=num/10000;qian=(num-wan*10000)/1000;bai=(num-wan*10000-qian*1000)/100;shi=(num-wan*10000-qian*1000-bai*100)/10;ge=num-wan*10000-qian*1000-bai*100-shi*10;printf(“Every single number is(from left to right):n“);/*单独输出上面求出的每个数字;将数字反序输出*/switch(plac

6、e)case 1:printf(“%dn“,ge);printf(“opposite words:n%dn“,ge);break;case 2:printf(“%d,%dn“,shi,ge);printf(“opposite words:n%d%dn“,ge,shi);break;case 3:printf(“%d,%d,%dn“,bai,shi,ge);printf(“opposite words:n%d%d%dn“,ge,shi,bai);break;case 4:printf(“%d,%d,%d,%dn“,qian,bai,shi,ge);printf(“opposite words:n

7、%d%d%d%dn“,ge,shi,bai,qian);break;case 5:printf(“%d,%d,%d,%d,%dn“,wan,qian,bai,shi,ge);printf(“opposite words:n%d%d%d%d%dn“,ge,shi,bai,qian,wan);break; 方法 2:将 switch 语句变成 if 语句,但是通常判断有限制个相等的数字而不是判断范围的一般是用 switch 语句,当然 if 也可以。代码如下: #include “stdio.h“ main() long num; int ge,shi,bai,qian,wan,place; pr

8、intf(“please input a number(from 0 to 99999):“);scanf(“%ld“,if(num9999)place=5;else if(num999)place=4;else if(num99)place=3;else if(num9)place=2;elseplace=1;printf(“Place=%dn“,place);wan=num/10000;qian=(num-wan*10000)/1000;bai=(num-wan*10000-qian*1000)/100;shi=(num-wan*10000-qian*1000-bai*100)/10;ge

9、=num-wan*10000-qian*1000-bai*100-shi*10;printf(“Every single number is(from left to right):n“);if(place=1)printf(“%dn“,ge);printf(“opposite words:n%dn“,ge); else if(place=2) printf(“%d,%dn“,shi,ge);printf(“opposite words:n%d%dn“,ge,shi);else if(place=3)printf(“%d,%d,%dn“,bai,shi,ge);printf(“opposite

10、 words:n%d%d%dn“,ge,shi,bai);else if(place=4)printf(“%d,%d,%d,%dn“,qian,bai,shi,ge);printf(“opposite words:n%d%d%d%dn“,ge,shi,bai,qian);else printf(“%d,%d,%d,%d,%dn“,wan,qian,bai,shi,ge);printf(“opposite words:n%d%d%d%d%dn“,ge,shi,bai,qian,wan); 4.7 企业发放的奖金根据利润提成。利润 I 低于或等于 10 万元的,奖金可提 10%; 利润高于 10

11、万元,低于 20 万元(1000001000000 时,超过 100 万元的部分按 1%提成。 从键盘输入当月利润 I,求应发奖金总数。 要求:(1)用 if 语句编程序;(2)用 switch 语句编程序。 分析:意思表达的很清晰了,这里就不分析了。 方法 1.1:通过 if 语句 #include “stdio.h“ main() long p; /*定义长整型数 p 表示利润*/float bonus; /*定义实型数 bonus 表示总奖金*/printf(“Please input profit:“);scanf(“%ld“,if(p10)c=10;switch(c)case 0:b

12、onus=p*0.1;break;case 1:bonus=b1+(p-100000)*0.075;break;case 2:case 3:bonus=b2+(p-200000)*0.05;break;case 4:case 5:bonus=b4+(p-400000)*0.03;break;case 6:case 7:case 8:case 9:bonus=b6+(p-600000)*0.015;break;case 10:bonus=b10+(p-1000000)*0.01;break;printf(“bonus=%fn“,bonus); 4.8 有 4 个圆塔,圆心分别为(2,2) , (

13、-2,2) , (-2,-2) , (2,-2) ,圆半径为 1。见图 4.16。这 4 个塔的高度为 10m,塔外无建筑物。今输入任一点的坐标, 求该点的建筑高度(塔外的高度为零) 。分析:这道题的意思其实很简单,就是判断一个点是否在 4 个圆周范围内, 如 果在就说它的高度为 10,不在就为 0。要判断这个点是否在圆周范围内,首先 计算出这个点和 4 个圆周点之间的距离(利用两点间距离公式) ,然后通过逻辑 运算和圆半径(从题中已知,为 1)进行比较。代码如下: #include“stdio.h“ #include“math.h“ main() int h=10;float x1=2,y1

14、=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2;float x,y,d1,d2,d3,d4;printf(“Please input Coordinate :“);scanf(“%f,%f“,d1=sqrt(x-x1)*(x-x1)+(y-y1)*(y-y1);/*用两点间距离公式求出距 4 个圆心距离 */d2=sqrt(x-x2)*(x-x2)+(y-y2)*(y-y2);d3=sqrt(x-x3)*(x-x3)+(y-y3)*(y-y3);d4=sqrt(x-x4)*(x-x4)+(y-y4)*(y-y4);if(d11printf(“height=%d“,h);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 教育学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号