Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的Euler 145项目_C - Fatal编程技术网

C语言中的Euler 145项目

C语言中的Euler 145项目,c,C,我提供了这个问题的链接。很抱歉给你添了这么多麻烦 在上述问题中,当n为1000时,结果为120,这是正确的,但当n=948时,结果仍然为120,这是错误的 # include <stdio.h> # include <math.h> int check(int n) { if(n%10==0) { return 0; } else {

我提供了这个问题的链接。很抱歉给你添了这么多麻烦

在上述问题中,当n为1000时,结果为120,这是正确的,但当n=948时,结果仍然为120,这是错误的

    # include <stdio.h>
    # include <math.h>
    int check(int n)
    {
       if(n%10==0)
       {
          return 0;
       }
       else
       {
          return 1;
       }
    }
    int rev(int n)
    {
       int s=0;
       while(n!=0)
       {
          s=s*10+n%10;
          n=n/10;
       }
   return s;
     }

  int count(int a)
  {
         int c=0;
         while(a!=0)
         {
              c++;
              a=a/10;
         }
         return c;
   }

   int odd(int k)
   {
          if(k%2!=0)
          {
             return 1;
          }
         else
          {
             return 0;
          }
    }

   int digit(int n,int p)
   {
         int k=0,c=0;
         while(n!=0)
         {
              k=n%10;
              if(odd(k)==1)
              {
                 c++;
              }
              n=n/10;
         }
         if(c==p)
         {
              return 1;
         }
         else
         {
              return 0;
         }
     }

     int result(int n)
      {
               int s=0,k=0,i=1,m=0,j=0;
               for(i=0;i<n;i++)
                {
                      if(check(i)==1)
                      {
                          s=i+rev(i);
                          k=count(s);
                          m=digit(s,k);
                         if(m==1)
                         {

                              j++;
                          }
                      }
                 }
             return j;
            }



       int main()
       {
            int n=0,t=0,p=0,k=0,c=1,a[1000],i;
            scanf("%d",&t);
            for(i=0;i<t;i++)
            {
                 scanf("%d",&n);
                 a[i]=result(n);
             }
             for(i=0;i<t;i++)
             {
                 printf("\n %d",a[i]);
             }
      return 0;
    }
请帮我解决这个问题,因为我是C语言的新手 在过去的三周里我一直在学习C语言,我的代码肯定不是你在网上能找到的最好的代码。
任何帮助都将不胜感激。

这里的问题在于您的循环控制

for(i=1;i<=n;i++)

一个很好的起点是学会一致地缩进代码,这样你和其他人就可以真正地阅读它。我建议至少把这个问题放在这里,而不仅仅是在标题中称之为Project,谢谢你的解决方案。程序运行正常。但是当我上传黑客等级的代码时,尽管输出是正确的,但它表明它是错误的。请您帮助解决此问题,尝试更改printf\n%d,j;要打印%d\n,j;没有空格,换行符移动到其通常位置。同时更改扫描%d\n,&t;要扫描%d,&t;说明:在printf中,您的第一个输出是一个空行,这不是问题所要求的,也不需要任何空格。输出包含单个整数的单行,因此请始终仔细阅读条件和说明。在scanf中,格式%d忽略了前导空格,因此不要将其与任何试图使其忽略已完成的操作相混淆。我已对代码进行了轻微更改。尽管显示120和119,编译器仍显示错误答案。
for(i=1; i<n; i++)