山东科技大学c语言作业四资料

上传人:E**** 文档编号:107346434 上传时间:2019-10-19 格式:DOC 页数:26 大小:168KB
返回 下载 相关 举报
山东科技大学c语言作业四资料_第1页
第1页 / 共26页
山东科技大学c语言作业四资料_第2页
第2页 / 共26页
山东科技大学c语言作业四资料_第3页
第3页 / 共26页
山东科技大学c语言作业四资料_第4页
第4页 / 共26页
山东科技大学c语言作业四资料_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《山东科技大学c语言作业四资料》由会员分享,可在线阅读,更多相关《山东科技大学c语言作业四资料(26页珍藏版)》请在金锄头文库上搜索。

1、Problem A: 只有一个二元运算符的表达式运算Time Limit: 1 SecMemory Limit: 2 MB Submit: 5044Solved: 1937SubmitStatusWeb BoardDescription编程序读入并计算只有一个二元运算符的表达式的值。用到的二元运算符有:“+”、“-”、“*”、“/”、“%”,与C语言的语法一致。Input每行输入一个表达式,格式为:二个整型的操作数a和b,中间用一个符号分开,这个符号就是运算符。测试样例不存在除数为0的情况。输入以a和b为0,且用一个空格分开结束。Output每行对应输入的运算符为“+”、“-”、“*”、“/”

2、、“%”,则计算a+b、a-b、a*b、a/b、a%b的值;否则输出“invalid op”。Sample Input33+58*92.21-617/39%30 0Sample Output3872invalid op-550#include #include void main() int i,a,b; char c; for(i=0;iF”表示输出:摄氏华氏温度转换表,若为“F-C”表示输出:华氏摄氏温度转换表。第2、3行为两个整数:high和low,其值在-100到200之间。第4行为step,step精确到小数点后1位。Output输出第一行为C和F,分别表示摄氏和华氏,与小数点对齐。

3、若输出摄氏华氏温度转换表,则C在前、F在后;反之,则输出华氏摄氏温度转换表。从输出的第2行开始为从温度low到温度high(包括low和high)的转换表,温度输出精确到小数点后1位,表格被“-”分为两个宽度相同的部分,其它的测试样例也不会给出超出宽度的数据,格式详见sample。Sample InputC-F-10402.5Sample Output C - F-10.0 - 14.0 -7.5 - 18.5 -5.0 - 23.0 -2.5 - 27.5 0.0 - 32.0 2.5 - 36.5 5.0 - 41.0 7.5 - 45.5 10.0 - 50.0 12.5 - 54.5

4、15.0 - 59.0 17.5 - 63.52 20.0 - 68.0 22.5 - 72.5 25.0 - 77.0 27.5 - 81.5 30.0 - 86.0 32.5 - 90.5 35.0 - 95.0 37.5 - 99.5 40.0 - 104.0HINT输出格式可以通过sample分析出来,因为两栏的总宽度是固定的。一个隐藏的陷阱是step是浮点数,某些浮点数是无法精确存储的,因此经过一定量的计算后这个误差会影响到浮点数的相等性判断,需要加上精度控制。Append CodeSubmitStatusWeb Board#include int main() double low

5、,high; double step,c,f; char ch1,ch2; scanf(%c-%c,&ch1,&ch2); if(ch1=C&ch2=F) scanf(%lf%lf%lf,&low,&high,&step); f=(double)9/5*low+32; if(low=-100|f F); while(low %6.1lf,low,f); low+=step; return 0; printf( C - F); while(low %5.1lf,low,f); low+=step; return 0; else if(ch1=F&ch2=C) scanf(%lf%lf%lf,&l

6、ow,&high,&step); c=(low-32)*(double)5/9); if(low=-100|c C); while(low %6.1lf,low,c); low+=step; return 0; printf( F - C); while(low %5.1lf,low,c); low+=step; return 0; Problem C: 1!+2!+k!=?Time Limit: 1 SecMemory Limit: 2 MBSubmit: 5125Solved: 1645SubmitStatusWeb BoardDescription求1!+2!+k!=?,并判断是否溢出。

7、Input输入为一个正整数k。Output若1!+2!+k!的值溢出unsigned(无符号整型)的范围输出“overflow”,否则输出1!+2!+k!的结果。Sample Input5Sample Output153HINT如果一个值溢出某个变量的数据类型存储范围,但仍然存入该变量,那么存入该变量中的值实际上是什么?Append Code#include int main() int i,j; unsigned int s,b,a; s=0; scanf(%d,&j); b=1; for(i=1;i=j;i+) a=b; b=b*i; if(double)b/ai) printf(over

8、flown); return 0; s=s+b; printf(%un,s); return 0; Problem D: 辗转相除法Time Limit: 1 SecMemory Limit: 2 MBSubmit: 3383Solved: 1185SubmitStatusWeb BoardDescription辗转相除法,也称欧几里得算法,是求最大公约数的算法。辗转相除法首次出现于欧几里得的几何原本(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的九章算术。两个整数的最大公约数(亦称公约数)是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小

9、的数和两数的差的最大公约数。例如,252和105的最大公约数是21(252 = 21 12;105 = 21 5);因为252 105 = 147,所以147和105的最大公约数也是21。在这个过程中,较大的数缩小了,所以继续进行同样的计算可以不断缩小这两个数直至其中一个变成零。这时,所剩下的还没有变成零的数就是两数的最大公约数。例如,计算a = 1071和b = 462的最大公约数的过程如下:从1071中不断减去462直到小于462(可以减2次,即商q0 = 2),余数是147: 1071 = 2 462 + 147.然后从462中不断减去147直到小于147(可以减3次,即q1 = 3),余数是21: 462 = 3 147 + 21.再从147中不断减去21直到小于21(可以减7次,即q2 = 7),没有余数: 147 = 7 21 + 0.此时,余数是0,所以1071和462的最大公约数是21。Input输入为多行,每行有一对非负整数a,b,且a*b不会超出int类型的数据范围。输入至EOF结束。Output每行输出一对a,b

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

当前位置:首页 > 办公文档 > 其它办公文档

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