LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 660|回复: 2

大家一起来做题哈哈!~~

[复制链接]
发表于 2007-1-28 20:14:54 | 显示全部楼层 |阅读模式
1,输入两个数n与m,计算n与m之间的所有整数的和,包括n和m,有n>=m,n<=m 两种情况
#include<stdio.h>
main()
{
        int i,n,m,s1=0,s2=0;
        scanf("%d%d",&n,&m);
        if(n<m)
        {
                for(i=n;i<=m;i++)
                {
                        s1=s1+i;
                }
        }
        else
                for(i=m;i<=n;i++)
                {
                        s1=s1+i;
                }
                printf("%d",s1);
}


2,  利用循环计算(5+5*5)*(4+4*4)*(3+3*3)*(2+2*2)*(1+1*1)*(1/2+1/3+1/4+1/5)
#include<stdio.h>
main()
{
        float i,sam1,sam2,s1=1,s2=0;
        for(i=5;i>0;i--)
        {
                sam1=1/i;
                s2=s2+sam1;
                sam2=i+i*i;
                s1=s1*sam2;
        }
        printf("%f\n",s1*s2);
}


3,  一球从100米的高度落下,每次落地后反跳高度的一半再落下,求它人第10次落地时,是从什么高度落下的,第10次落地时,球经过了多少米?
#include<stdio.h>
main()
{
        float l=100,i,n=0;
        for(i=1;i<10;i++)
        {       n=l+n;
                l=l/2;
        }
        printf("%f\t%f",n,l);
}
我也要做大家一起做啊!~
发表于 2007-1-29 02:59:09 | 显示全部楼层
楼主又来考我们来啦,我来漏一小手,不过程序就懒得写了。
---------
这三道题应该都用不到循环的:
1. 1+2+3+...+n = n(n+1)/2,
所以n到m的和是:[n*(n+1) - (m-1)*m]/2, when n>=m;

2. 5+5*5 = 6*5 所以公式是:[(n+1)*n*n*(n-1)*...*2*1] * (1/2 + 1/3 +...+ 1/n)
以下的化简我就不会了,呵呵。
注意题目的第二部分求和是从1/2算起,不是从1/1算起,所以楼主的代码中 sam1 多算了1/1;

3. 高度:100 * [1/(2^(n-1))], n=10
总长:100 * [1/1 +1/2+ 1/4 + ... + 1/(2^(n-1))], n=10
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-29 11:04:18 | 显示全部楼层
我用两小时才写出来的程序,让你轻松做完了,真不简单哦!~`
刚刚学C,所以出来,也像大家求教的!!~谢谢朋友!~

还有,谢谢指正
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表