标题:算术题____人过大佛寺
只看楼主
x乌鱼
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2006-7-1
 问题点数:0 回复次数:9 
算术题____人过大佛寺
今天在做寒假作业的时发现一道有趣的数学题

人过大佛寺
*4

寺佛大过人


求这5个字母所代表的数字,我想把这题用C实现一下, 无奈想不出算法,所以来求各位大侠帮下忙
搜索更多相关主题的帖子: 大佛寺 算术题 
2007-02-16 16:20
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 

哈哈哈
我做出来了答案是21978
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void transform(char []);
void main()
{
int a1,b1,i;
char a[5],b[5];
for(i=10000;i<25000;i++)//不能少于10000否则他的四倍就没有五个数,不能大于25000否则要进位
{
a1=i;
b1=i*4;
itoa(a1,a,10);//转换成字符
itoa(b1,b,10);
transform(b);//首尾调换
if(strcmp(a,b)==0)//比较相等就有输出
printf("%d\n",i);
}
}
void transform(char b[])
{
int i,temp;
for(i=0;i<3;i++)
{
temp=b[i];
b[i]=b[4-i];
b[4-i]=temp;

}
}
希望我合你意


2007-02-16 17:02
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 
a1 是多余的

2007-02-16 17:02
x乌鱼
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2006-7-1
得分:0 
以下是引用crackerwang在2007-2-16 17:02:15的发言:

哈哈哈
我做出来了答案是21978
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void transform(char []);
void main()
{
int a1,b1,i;
char a[5],b[5];
for(i=10000;i<25000;i++)//不能少于10000否则他的四倍就没有五个数,不能大于25000否则要进位
{
a1=i;
b1=i*4;
itoa(a1,a,10);//转换成字符
itoa(b1,b,10);
transform(b);//首尾调换
if(strcmp(a,b)==0)//比较相等就有输出
printf("%d\n",i);
}
}
void transform(char b[])
{
int i,temp;
for(i=0;i<3;i++)
{
temp=b[i];
b[i]=b[4-i];
b[4-i]=temp;

}
}
希望我合你意

谢谢你的回答,但我对中间几行不是很明白itoa是什么函数,什么用途的呀!


2007-02-16 19:48
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 
itoa是用来转换的
比如itoa(a,b,10);就是把a以10进制转换为char b[]
比如itoa(a,b,2);就是把a以2进制转换为char b[]

2007-02-16 23:55
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
得分:0 

#include<stdio.h>
#define N 5
union node
{
long int sum;
char m;
};
int main()
{
char a[N]={0};
long int i=99999;
register int j,k;
union node n;

while(i)
{
for(n.m=0;n.m<N-1;n.m++)
for(j=n.m+1;j<N;j++)
if(a[n.m]!=a[j])
k++;
n.sum=0;
if((N-1)*N/2==k)
{
k=0;
for(j=0;j<N;j++)
n.sum=n.sum*10+a[N-1-j];
n.sum*=4;

for(j=0;j<N;j++)
{
if(a[N-j-1]==n.sum%10)
k++;
n.sum/=10;
}

if(k==N)
{ for(j=0;j<N;j++)
printf("%d ",a[N-1-j]);
puts(""); }
}
n.sum=0;
k=0;
a[0]++;

for(j=0;j<N-1;j++)
if(a[j]>9)
{
a[j]=0;
if(j+1<N)
a[j+1]++;
else
a[j+1]=0;
}
i--;
}
return 0;
}

[此贴子已经被作者于2007-2-17 10:24:06编辑过]


谁有强殖装甲第二部,可以Q我460054868
2007-02-17 10:11
qq7400264
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-2-18
得分:0 
2楼的就用那个程序能运行出来么? 我运行了一下不行,不知你们的电脑行不?后来我把int 改成 long ,printf("%ld",i);后才行。
2007-02-18 02:16
qq7400264
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-2-18
得分:0 
#include<stdio.h>
main()
{
long i,a1,a2,a3,a4,a5,b1,b2;
for(i=10000;i<25000;i++)
{
b1=i*4;
a1=b1/10000;
a2=b1%10000/1000;
a3=b1%1000/100;
a4=b1%100/10;
a5=b1%10;
b2=a5*10000+a4*1000+a3*100+a2*10+a1;
if(i==b2)
printf("%ld\n",i);
}
}
2007-02-18 02:28
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 
楼上的是最简单的

2007-02-18 02:44
penggf
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-1-19
得分:0 
我来学itoa的。
2007-02-18 07:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-121108-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049771 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved