发新话题
打印

一道程序题,测试下大家的能力

JAVA版本
import javax.swing.JOptionPane;

public class Test {
        /**记录用户的输入年*/
        int inputNum;
        public Test(){}
        /**返回用户的输入*/
        public int getYear()
        {
                return inputNum  = Integer.parseInt(JOptionPane.showInputDialog(null,"input a number ,this number >=0"));
        }
        /**计算出相应面积*/
        private int computer()
        {
                Test t = new Test();
                int temp=t.getYear();
                int result=300;
                if(temp==0)
                {
                        return result;
                }
                else if(temp==1)
                {
                        result=305;
                        return result;
                }
                else if(temp>1)
                {
                        for(int i=2;i<=temp;i++)
                        {
                                result=305+(1*(temp-1));
                                return result;
                        }
                       
                }
                return result;        
        }
        /**输出计算结果*/
        public void outPut()
        {
                System.out.println("面积为:"+computer()+"公顷");
        }
        /**Main方法,程序的入口*/
        public static void main(String[] args) {
                // TODO: Add your code here
                new Test().outPut();
               
        }       
}
hehe   :lol
我的C语言学的很差!!!
引用:
原帖由 ztsmile 于 2007-4-16 10:14 发表
int main(){
  int i,n,m;
  scanf(%d,&n);
  for(i=1;i<=n;i++)
    if (n=1)
      m=300+5;
    if(n>=2)
      m+=1;
  printf("%d",m);
}
感觉这样的话,他第一次榆2的话会出错,NUM没给初值!
电脑就是好啊!
为什么要用循环?初初看了一下题目,好像出了第一次+5,其他次都没变化的加+1,这样问增加的面积吗?应该就是

int sum = 0;
if(N) {
    sum += 5;
    -- N;
}
if(N) {
    sum += N;
    N = 0;
}
printf("%d\n", sum);
Fluke's Blog
I'm a user.
引用:
原帖由 infohunter 于 2007-4-17 16:17 发表
楼上的,原题似乎不是这个意思,是说每年递增,第一年为5,第二年为6,第三年为7……
如果是这个意思,也不需要模拟过程,只要用等差数列公式。
Fluke's Blog
I'm a user.
function area($n)
{
    $m=300+5;
    for($i=2;$i<=$n;$i++)
      {
           $m+=1;
      }
}
return $m;
>>增长率为1公顷\年
何为增长率?应该是个百分比才对。

>>试编程计算N年后森林增长面积
何为增长面积?看到很多同志把原来的300也算进去了,真汗啊。

这题要求计算增长的面积,而不是增长后的面积,所以没必要给出初始面积。
既然给出了初始面积,那肯定后面给的增长率,应该是一个百分比,这样初始面积才显得有意义。

PS:出题的人永远不知道自己的责任,曾经看过一个国外导师的试题,很简单一个shell编程题,居然用了7页word稿。对比下国内的老师,一个大型实验的题目,就是2,3行字。诶,学术的严谨至上而下从未见好,,

[ 本帖最后由 bigapple 于 2008-3-18 20:35 编辑 ]
-bigapple-
风吹哪页读哪页
引用:
原帖由 fluke 于 2007-6-23 12:04 发表


如果是这个意思,也不需要模拟过程,只要用等差数列公式。
如果真是这个意思,那就是

300 + 5 + 5N + 1+2+3+...+(N-1) - 300

就让你写个等差数列求和公式Sn=1/2n(a1+an),有意义吗?
-bigapple-
风吹哪页读哪页
每年递增,第一年为5,第二年为6,第三年为7……
int main(void)
{
    int sum = 300
    int n = 0;
    scanf("%d", &n);
    printf("The %d year", n);
    for(; n--; )
             sum +=n+5;
    printf("Trees num is %d\r\n", sum);
    return sum;
}

[ 本帖最后由 wuhua0904 于 2008-3-18 22:05 编辑 ]
永远把艰辛的付出看作是生命的必要;即使没有收获的指望,也心平气静地继续耕种!
发新话题