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

2018-12-20 22:20

low+=step; }

return 0; }

else if(ch1=='F'&&ch2=='C') {

scanf(\ c=(low-32)*((double)5/9); if(low==-100||c<=-100) {

printf(\ F -> C\ while(low<=high+0.01) {

c=(low-32)*5/9.0;

printf(\ low+=step; }

return 0; }

printf(\ F -> C\ while(low<=high+0.01) {

c=(low-32)*5/9.0;

printf(\ low+=step; }

return 0; } }

Problem C: 1!+2!+…+k!=?

Time Limit: 1 Sec Memory Limit: 2 MB Submit: 5125 Solved: 1645 [Submit][Status][Web Board]

Description

求1!+2!+…+k!=?,并判断是否溢出。

Input

输入为一个正整数k。

Output

若1!+2!+…+k!的值溢出unsigned(无符号整型)的范围输出“overflow”,否则输出1!+2!+…+k!的结果。

Sample Input

5

Sample Output

153

HINT

如果一个值溢出某个变量的数据类型存储范围,但仍然存入该变量,那么存入该变量中的值实际上是什么?

Append Code

#include int main() {

int i,j;

unsigned int s,b,a; s=0;

scanf(\ b=1;

for(i=1;i<=j;i++) { a=b; b=b*i;

if((double)b/a

{ printf(\ return 0; }

s=s+b; }

printf(\ return 0; }

Problem D: 辗转相除法

Time Limit: 1 Sec Memory Limit: 2 MB Submit: 3383 Solved: 1185 [Submit][Status][Web Board]

Description

辗转相除法,也称欧几里得算法,是求最大公约数的算法。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。

两个整数的最大公约数(亦称公约数)是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。例如,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的最大公约数和最小公倍数,顺序与输入对应。

从整除定义出发:若a整除b(b除以a没有余数),则b是a的倍数,a是b的约数,这里要求b不为0。因此0是任意整数的倍数(任意整数都是0的约数),但是0不能是约数。

Sample Input

1 1 2 3 2 2 3 2 4 6 7 5 12 6 18 9 24 36

Sample Output

1 1 1 6 2 2 1 6 2 12 1 35 6 12 9 18 12 72

HINT

按照题目描述所给的算法解题,注意以下几点:辗转相除法对两个数的大小关系有要求,根据倍数和约数的数学定义,一个非0数和0的约数是多少?辗转相除法的计算过程是符合这种定义的。

Append Code

[Submit][Status][Web Board] 错误:#include

int main()

{

int a,b,i,c;

for(;scanf(\

{ c=a*b; if(a==0&&b!=0) printf(\ else if(a!=0&&b==0) printf(\

else {

while(a!=b)

{ if(a>b) a=a-b; if(a

}

printf(\

} } }

正确:#include int main()

{ int a,b,c,m,t;

while(scanf(\ {

if(a==0&&b!=0)

printf(\ else if(a!=0&&b==0)

printf(\

else {

if(a


山东科技大学C语言作业四(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017妇产科护理期中试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: