求助:程序排错

proof1 2014-06-18 05:18:17
题目要求:
使用数字1~9填充等式:sqrt(######)=###
每个#内数字互不相同,即遍历数字1~9
试找出所有的解。


代码如下:
        /* 趣味填数 */

#include <stdio.h>
#include <math.h>

main() {
int flag[10];
int i,a1,d,p,t;
long a2;
for (i=351;i<=987;i++) {

t=0;
for (p=1;p<=9;p++) flag[p]=1;

a1=i;
for (p=1;p<=3;p++) {
d =a1%10;
a1=a1/10;
if (flag[d]) {t++; flag[d]=0;}
}

a2=i*i;
for (p=1;p<=6;p++) {
d =a2%10;
a2=a2/10;
if (flag[d]) {t++; flag[d]=0;}
}

if (t==9)
printf("%d^2=%d\n",i,i*i);

}

getch();
}


...全文
153 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xunfeng0862 2014-06-19
  • 打赏
  • 举报
回复
int fun3(int num) { long sum; int i; int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; sum = num * num * 1000 + num; while(sum) { if(a[sum % 10]) a[sum % 10] = 0; sum = sum / 10; } for(i = 0; i < 10; i++) { if(a[i] != 0) return 0; } return 1; } int main(int argc, char* argv[]) { int i; for(i = 100; i < 1000; i++) { if(fun3(i)) { printf("i = %d, i * i = %ld\n", i, i * i); } } return 0; } 不知道我这种解法怎样??
proof1 2014-06-19
  • 打赏
  • 举报
回复
感谢,问题解决。 用WIN-TC执行源代码,没有输出结果,不知什么原因。
longburulin 2014-06-19
  • 打赏
  • 举报
回复
为何不从123遍历到三百多呢 然后判断是不是?
707wk 2014-06-19
  • 打赏
  • 举报
回复
好吧,看错了,是9位数。。。

#include <stdio.h>

int check_num(int m,int n)
{
	int temp[10]={0};
	int i;
	int num;
	for(;m;m=m/10)
	{
		temp[m%10]++;
	}
	for(;n;n=n/10)
	{
		temp[n%10]++;
	}
	for(num=i=0;i<10;i++)
	{
		if(temp[i]==1)num++;
	}
	if(num==9)return 1;
	return 0;
}

int main()
{
	int i;
	for(i=100;i<=1000;i++)
	{
		if(check_num(i,i*i))
		{
			printf("sqrt(%d)=%d\n",i*i,i);
		}
	}
	return 0;
}
707wk 2014-06-19
  • 打赏
  • 举报
回复
333要改为1000
707wk 2014-06-19
  • 打赏
  • 举报
回复
仅供参考
/*题目要求:
使用数字1~9填充等式:sqrt(######)=###
每个#内数字互不相同,即遍历数字1~9
试找出所有的解。*/

#include <stdio.h>

int check_num(int m,int n)
{
	int temp[10]={0};
	int i;
	int num;
	for(;m;m=m/10)
	{
		temp[m%10]++;
	}
	for(;n;n=n/10)
	{
		temp[n%10]++;
	}
	for(num=i=0;i<10;i++)
	{
		if(temp[i]==1)num++;
	}
	if(num==6)return 1;
	return 0;
}

int main()
{
	int i;
	for(i=100;i<=333;i++)
	{
		if(check_num(i,i*i))
		{
			printf("sqrt(%d)=%d\n",i*i,i);
		}
	}
	return 0;
}
proof1 2014-06-18
  • 打赏
  • 举报
回复
我在打开贴子之前,就猜测有2的回复。 对CSDN有所了解。
赵4老师 2014-06-18
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试是程序员必须掌握的技能之一。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧