C语言 加油问题

C语言 加油问题,第1张

是scanf和getchar的机制问题,你可察芹以尝试把

printf("请选择加油方式:s或a或n(s自助,a协助,n普通):\n")

service = getchar()

移动到最前面输入,这样应该就可以衡没缺解决你的问题咐辩了

算塌好法我不会,但你的问题我知道、

你是从input文件输入数据的,而不是键盘,所以你要先建个文件,将数据输入进去。

按照你的算法修改了下,应该可以。我侍衫猜的数据应该在1、3、5加油。

#include<stdio.h>

void main()

{   FILE *in,*out

    int i,s,n,k,x[100] //x数组用来存储距离,sum表示加油次数,s表示加油后行驶的距离

    in=fopen("input.txt","r")    //读入n,k以及距离

    out=fopen("output.txt","w")   //输出结果sum到output.txt中

    fscanf(in,"%d",&n)

    fscanf(in,"%d",&k)

    for(i=0i<=ki++)

        fscanf(in,"%d",&x[i])

    for(i=0i<=ki++)

    {

        if(x[i]>n)

        {

            printf("No Solution!\n")

      老型      return

        }

    }

    for(i=0,s=0i<=ki++)

    {

        s+=x[i]

        if(s>n)

        {   s=x[i]

            fprintf(out,"%d\t",i)

        }

  }

    fclose(in)

    fclose(out)

    return  

}

#include<stdio.h.>

int main()

{

int n,m,i,j,k,d[1000],dis,count,n2

while((scanf("%d%d",&n,&k))!=EOF)

{ dis=0

count=0

for(i=0i<稿租k+1i++)

{scanf("%d",&d[i])

dis+=d[i]

}

if(dis<=n)

{

printf("0\n")

}

else{

j=0

for(i=1i<k+1i++)

if(d[0]==d[i]&&d[0]==n)

j++

if(j==k)

printf("%d\瞎猜n",k)

else

{

j=0

for(i=1i<k+1i++)

if(d[0]==d[i]&&d[0]>n)

j++

if(j==k)

printf("No Solution\n")

else

{

n2=n

for(j=0j<k+1j++)

{

if(n2>=d[j])

{

n2=n2-d[j]

}

else

{

n2=n-d[j]

if(n2<磨敬型0)

{printf("No Solution\n")

break

}

else

count++

}

}

if(j>=k+1)

printf("%d\n",count)

}

}

}

}

}

这个我上交是对的!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12499464.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存