18131431963 发表于 2022-5-9 10:20

编程问题 大神们看看问题在啊里?

某地绿化造林,按计划:第一年种植树木x颗,后续每年都种树,第 i 年种植的树木是第 i-1 年的 3 倍。输入需要种植树木的总数量与第一年种植的颗数,请编程计算第几年可完成任务。输入格式:输入2个整数,用空格分隔。分别是需要种植树木的总数量与第一年种植的颗数输出格式:n,n完成任务的年数。
#include <stdio.h> #include <math.h>
int main()
{
    float nub,x,i,y=0,c=0;
    scanf("%f%f",&nub,&x);
    for(i=0;i<=100;i++)
   y=y+pow(3,i)*x;
   
    if(nub<=y)
   
    printf("%f",i+1);
      
    return 0;
}

gaolibinbm 发表于 2022-5-9 10:33

for循环没加大括号

hello6word 发表于 2022-5-9 11:27

for后面的大括号加上试试

LogerLaw 发表于 2022-5-9 11:39

for后加大括号把最后四行都括起来,if后加大括号把最后两行括起来

gunxsword 发表于 2022-5-9 11:47

最明显的两个问题,怎么都没有人提呢
1.题目要求输入整数,为什么用浮点数?
2.题目要求输出年份数,但是你这逻辑,输出的是在未完成前的全部年数吧

tiepeng 发表于 2022-5-10 00:56

int main()
{
    inttotal , //总数
          a ,       //第一年
          i = 0 ,//计数
          tem = 0 , //某年植数
          sum = 0 ;
    float n = .0 ;    //年数

    scanf( "%d%d" , &total , &a );
    //就不验证这两个数了

    while ( total <= sum )
      {
      tem = a * pow ( 3 , i ++ );
      sum += tem ;
      }

    if ( sum - total )
         n += (float)( sum - total ) / (float)( tem );//不考虑季节
    n += (float) ( i ) ;
    printf( "%f" , n);

    return 0;
}

18131431963 发表于 2022-5-12 16:09

#include <stdio.h>
#include <math.h>
int main()
{
   int nub,x,i,y=0,c=0;
        scanf("%d,%d",&nub,&x);
        for(i=0;;i++)
       
       
       {
               y=y+pow(3,i)*x;

        if(y>=nub)break;
       
        }
       
        printf("%d",i+1);
       
               
        return 0;
}

tiepeng 发表于 2022-5-13 13:15

tiepeng 发表于 2022-5-10 00:56
int main()
{
    inttotal , //总数


用记事本编辑后,就直接发上来了。
刚才一看,有个很直白的错误:
while 行,循环条件应该把sum跟total倒一下,
实在有愧。
页: [1]
查看完整版本: 编程问题 大神们看看问题在啊里?