36 1234
发新话题
打印

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

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

某园林开始时有森林300公顷,第一年增长率为5公顷\年, 以后每年增长率为1公顷\年,试编程计算N年后森林增长面积。N由键盘输入.
  for 语句编写。
引用:
sanool对帖子标题进行了编辑

C版的

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);
}
引用:
原帖由 ztsmile 于 2007-4-16 10:14 发表

    if (n=1)
      m=300+5;
呵呵
if(n == 1)

是啊

太大意了,程序员最忌讳的事被我给碰上了,唉,谢谢提醒哦....
笑对人生,即使不快乐!
确实现在的语言切换的多了,会在一些小细节上出问题,而这又是偶们需要注意的,偶刚开始是用的c,后来转到delphi,起初就常常犯错,现在固定了,也就习惯了~~~

呵呵

记得我上次在哪看到过,可以把 (n=1)写成(1=n),那么在编译的时候就会提醒错误,这样就不会在程序冗长的时候一行一行的查看错误到底在什么地方了,如果写成前者,则错误很难发现哦
笑对人生,即使不快乐!
这样呢?
#include    <stdio.h>
main()
{
   int i=5,n,a,sum=300;
   printf("qing shu ru yi ge shu\n");
   scanf("%d",&a);
   for(n=1;n<=a;n++)
     if(n==1) sum=sum+i;
       else  sum++;
   printf("%d\n",sum);
}
第一年增长率为5公顷\年, 以后每年增长率为1公顷\年,
作何解释?
用For的话用Pascal可以这样描述。
function area(n:integer): Integer;
var
  i,sum:Integer;
begin
  for i:=1 to n do
  begin
     if i=1 then
       sum:=300+5
     else Inc(sum);
  end;
  Result:=sum;
end;

不过如果不用for可以很简单来实现
function area(n:integer): Integer;
begin
  if n=1then Result :=300+5
  else Result :=300+5+(n-1);
end;
对于新手,for循环也是应该掌握的吖
 36 1234
发新话题