请用C编写:
求出所有满足以下条件的四位数,其前两位数与后两位的和的平方等于该数.例:
3025=(30+25)(30+25)
#include<stdio.h>
int main(void)
{
int i,j,k;
for (i=0;i<50;i++)
{
for(j=0;j<50;j++)
{
k=i*10+k;
if(k=((i+j)*(i+j)))
{
printf(“%d\n”,k);
}
}
}
return 0;
}
我想了半天自己没有想到怎么写,就在网上找到这个
可怎么运行出现的答案有很多都是不符合条件的呀,是不是那里错了, k=i*10+k;
我也没有看懂放这个在这里是做什么用的?
>> 本文固定链接: http://www.vcgood.com/archives/1671
>> 转载请注明: haihaiquner 2007年06月30日 于 C语言帝国 发表
#include<stdio.h>
main()
{
int i,j,m,n,s;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(m=0;m<=9;m++)
for(n=0;n<=9;n++)
{s=i*1000+j*100+m*10+n;
if (((i*10+j)+(m*10+n))*((i*10+j)+(m*10+n))==s)
printf(“%d\n”,s);}
}
该题一共算出3个数,你自己运行吧!
#include <stdio.h>
void main()
{
int n, a, b, sum;
for(n=1000; n<10000; n++)
{
a = n/100;
b = n – a*100;
sum = (a+b)*(a+b);
if (n == sum)
{
printf(“%d “, n);
}
}
}
这个容易理解吧!!
寒1楼的嵌套
楼主找到的程序的思路是对的,不过中间有点错误!
该算法的思路是分别找前两位和后两位然后计算是否符合条件!
比如要找的数是z,前两位是x,后两位是y;
则有如下等式
z = x * 100 + y;
z = (x + y) * (x + y)
其中x的范围是10 ~ 99 //因为是4位的数.
y的范围是0~99
循环x和y,然后验证等式是否成立就可以了.
[code]
#include<stdio.h>
int main(int argc, char* argv[])
{
int x,y,z;
for (x = 10; x < 99; x++)
{
for (y = 0; y < 99; y++)
{
z = x * 100 + y;
if (z == ((x + y) * (x+y)))
{
printf( "%d\n", z);
}
}
}
return 0;
}
[/code]
原来的代码有如下错误
[code]
#include <stdio.h>
int main(void)
{
int i,j,k;
for (i=0;i<50;i++) //循环次数错误
{
for(j=0;j<50;j++) //循环次数错误
{
k=i*10+k; //10应该为100
if(k=((i+j)*(i+j))) //这里不能是=号,否则是赋值语句了!判断始终成功
{
printf("%d\n",k);
}
}
}
return 0;
}
[/code]
看到你们的程序,再看我的呵呵!我的太头晕了!哈哈!
写的不错。