山东科技大学C语言作业四

上传人:hs****ma 文档编号:486477967 上传时间:2024-01-24 格式:DOC 页数:22 大小:120KB
返回 下载 相关 举报
山东科技大学C语言作业四_第1页
第1页 / 共22页
山东科技大学C语言作业四_第2页
第2页 / 共22页
山东科技大学C语言作业四_第3页
第3页 / 共22页
山东科技大学C语言作业四_第4页
第4页 / 共22页
山东科技大学C语言作业四_第5页
第5页 / 共22页
点击查看更多>>
资源描述

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

1、wordProblem A: 只有一个二元运算符的表达式运算Time Limit: 1 SecMemory Limit: 2 MBSubmit: 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 InputSample 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,分别表示摄氏和华氏,与小数点对齐。假如输出摄氏华氏温度转换表,如此C在前、F在后;反之,如此输

3、出华氏摄氏温度转换表。从输出的第2行开始为从温度low到温度high包括low和high的转换表,温度输出准确到小数点后1位,表格被“-分为两个宽度一样的局部,其它的测试样例也不会给出超出宽度的数据,格式详见sample。Sample InputSample Output2HINT输出格式可以通过sample分析出来,因为两栏的总宽度是固定的。一个隐藏的陷阱是step是浮点数,某些浮点数是无法准确存储的,因此经过一定量的计算后这个误差会影响到浮点数的相等性判断,需要加上精度控制。Append CodeSubmitStatusWeb Board#include int main() double

4、 low,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%l

5、f,&low,&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!=?,并判断是

6、否溢出。Input输入为一个正整数k。Output假如1!+2!+k!的值溢出unsigned无符号整型的X围输出“overflow,否如此输出1!+2!+k!的结果。Sample Input5Sample Output153HINT如果一个值溢出某个变量的数据类型存储X围,但仍然存入该变量,那么存入该变量中的值实际上是什么?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(o

7、verflown); 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中,而在中国如此可以追溯至东汉出现的九章算术。两个整数的最大公约数(亦称公约数)是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中

8、较小的数和两数的差的最大公约数。例如,252和105的最大公约数是21252 = 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,余数是2

9、1: 462 = 3 147 + 21.再从147中不断减去21直到小于21可以减7次,即q2 = 7,没有余数: 147 = 7 21 + 0.此时,余数是0,所以1071和462的最大公约数是21。Input输入为多行,每行有一对非负整数a,b,且a*b不会超出int类型的数据X围。输入至EOF完毕。Output每行输出一对a,b的最大公约数和最小公倍数,顺序与输入对应。从整除定义出发:假如a整除bb除以a没有余数,如此b是a的倍数,a是b的约数,这里要求b不为0。因此0是任意整数的倍数任意整数都是0的约数,但是0不能是约数。Sample Input1 12 32 23 24 67 512 618 924 36Sample Output1 11 62 21 62 121 356 129 1812 72HINT按照题目描述所给的算法解题,注意以下几点:辗转相除法对两个数的大小关系有要求,根据倍数和约数的数学定义,一个非0数和0的约数是多少?辗转相除法的计算过程是符合这种定义的。Append CodeSubmitStatusWeb Board错误:#include int main() int a,b,i,c; for(;s

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

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