C语言中的Euler 145项目
我提供了这个问题的链接。很抱歉给你添了这么多麻烦 在上述问题中,当n为1000时,结果为120,这是正确的,但当n=948时,结果仍然为120,这是错误的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 {
# 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++)