C 了解所有汇文号码的程序不';工作不好
这个程序是为了知道从1到256的所有汇文数而编写的 像11^2=121,所以11是回文。 实际上我有一个很好的C 了解所有汇文号码的程序不';工作不好,c,C,这个程序是为了知道从1到256的所有汇文数而编写的 像11^2=121,所以11是回文。 实际上我有一个很好的 但我不明白为什么这个程序不能很好地工作 #include<stdio.h> int is_huiwen(int l) { //DON'T WORK?WHY? int number[20]={0}; int i,j,k; int f=l*l; for(j=0;f;j++) { number[j]=f%10
但我不明白为什么这个程序不能很好地工作
#include<stdio.h>
int is_huiwen(int l)
{
//DON'T WORK?WHY?
int number[20]={0};
int i,j,k;
int f=l*l;
for(j=0;f;j++)
{
number[j]=f%10;
f/=10;
}
for(k=0;j-k>0;k++,j--)
{
if(number[j]!=number[k] )
{
return 0;
}
}
return 1;
/* this is ok
int y=0;
int t = l*l;
int x = t;
do
{
y=y*10+t%10;
t /= 10;
}
while(t);
if(x==y)
return 1;
else
return 0;
*/
}
int main()
{
int i;
int flag;
for(i=0;i<256;i++)
{
flag=is_huiwen(i);
if(flag)
{
printf("%d is huiwen",i);
}
else
{
printf("\n");
}
}
printf("end\n\n\n\n");
return 0;
}
#包括
int是_huiwen(int l)
{
//不工作?为什么?
整数[20]={0};
int i,j,k;
int f=l*l;
对于(j=0;f;j++)
{
数量[j]=f%10;
f/=10;
}
对于(k=0;j-k>0;k++,j--)
{
如果(数字[j]!=数字[k])
{
返回0;
}
}
返回1;
/*这没关系
int y=0;
int t=l*l;
int x=t;
做
{
y=y*10+t%10;
t/=10;
}
while(t);
如果(x==y)
返回1;
其他的
返回0;
*/
}
int main()
{
int i;
int标志;
对于(i=0;i而言,错误是BluePixy指出的if(number[j]!=number[k])
行
如果(数字[j-1]!=数字[k]),则更正为
我想指出的是,代码隐藏了这个问题,部分原因是只有一个字母的变量名和不一致的命名
下面是我用来寻找相同解决方案的代码
int is_huiwen_2(int L )
{
int ret = 1;
int j = 0;
int k = 0;
int t = L * L;
int number[8] = { 0 };
for( j = 0; t; j++)
{
number[j] = t % 10;
t /= 10;
}
for( k = 0; (j - k) > 0 && ret; k++, j-- )
{
if( number[j-1] != number[k] )
{
ret = 0;
}
}
return( ret );
}
int is_huiwen_1( int L )
{
int ret = 1;
int y = 0;
int t = L * L;
int x = t;
do
{
y = y * 10 + t % 10;
t /= 10;
}
while( t );
if( x != y )
{
ret = 0;
}
return( ret );
}
int main()
{
int i = 0;
int flag = 0;
for( i = 0; i < 256; i++)
{
flag = is_huiwen_1(i);
if(flag)
{
printf("1: %d is huiwen\n",i);
}
}
for( i = 0; i < 256; i++)
{
flag = is_huiwen_2(i);
if(flag)
{
printf("2: %d is huiwen\n",i);
}
}
printf("end\n");
return( 0 );
}
虽然这可能是一个简单的练习,但如果这不是一个琐碎的练习,那么它预示着将来会出现更大的问题。尽量不要让下一个程序员感到困难
请记录你的算法、算术和变量。if(number[j]!=number[k])
-->if(number[j-1]!=number[k])
慧文数是什么?你是在问为什么int number[20]={0}
不起作用?可能是因为使用了不理解C99或C11的旧编译器。出现了什么问题?预期的行为是什么?谢谢大家,很抱歉没有注意到。我会仔细查看。
// A Huiwen number looks like this "12321", "1589851"