1

我编写了以下程序,当您从 IDE 运行它时运行良好。但是,当我想通过从inp.txt文件中获取输入并输出到out.txt文件来测试它时,它不会这样做。


#include <stdio.h>
#include <stdlib.h>

struct node
{
  int data;
  struct node *next;
}*start;

void insertatend(int d)
{
  struct node *n;
  n=(struct node *)malloc(sizeof(struct node));
  n->data=d;
  n->next=NULL;

  if(start==NULL)
  {
    start=n;
  }

  else
  {
    struct node *tmp;
    for(tmp=start;tmp->next!=NULL;tmp=tmp->next);
    tmp->next=n;
  }
}

int max(int  a,int b)
{
  int c=(a>b)?a:b;
  return c;
}

int maxCoins(int n)
{
  int arr[n+1],i;
  arr[0]=0;
  arr[1]=1;
  arr[2]=2;
  arr[3]=3;

  if(n>2)
  {


    for(i=3;i<=n;i++)
    {
      int k= arr[(int)(i/2)]+arr[(int)(i/3)]+arr[(int)(i/4)];
      arr[i]=max(i,k);
    }
  }

  return arr[n];
}

int main(void)
{
  int coins,i;
  start=NULL;
  struct node*p;

  while(scanf("%d",&coins)>0)
  {
    insertatend(coins);
  }

  for(p=start;p!=NULL;p=p->next)
  {
    printf("%d\n",maxCoins(p->data));
  }

  getchar();

  return 0;
}

我尝试在命令提示符下执行以下操作ByteTest.exe<inp.txt>out.txt,但未对文件进行任何更改out.txt

我通过输入来终止程序的输入CTRL+Z。这和这个有关系吗?


例如,inp.txt and out.txt可能包含


inp.txt      out.txt

12             13
24             27
26             27
4

1 回答 1

2

你的问题可能是:

while(scanf("%d",&coins)>0)

这将返回字符数。您在这里检查的不是硬币的价值,而是输入字符串的长度。

于 2012-07-18T21:08:10.280 回答