C语言程序设计填空题

设有正整数a和b,其中:(1)a<50,b<50;(2)a+b*b等于1564;(3)a*a+b*b等于3370。求满足条件的a和b的值(说明:a和b的值唯一)。输出格式... 设有正整数a和b,其中:
(1)a<50,b<50;
(2)a+b*b等于1564;
(3)a*a+b*b等于3370。
求满足条件的a和b的值(说明:a和 b的值唯一)。

输出格式:
a=3,b=4

#include <stdio.h>
void PRINT(int a,int b)
{
FILE *out;
printf("a=%d,b=%d\n",a,b);
if((out=fopen("K:\\24000101\\RESULT.DAT","w+"))!=NULL)
fprintf(out,"a=%d,b=%d",a,b);
fclose(out);
}
void main()
{

/*此处填写答案*/

PRINT(a,b);
}
展开
 我来答
谢玉斐
2010-06-22 · TA获得超过136个赞
知道答主
回答量:25
采纳率:0%
帮助的人:0
展开全部
先说一下我的理解。
第一,由于解是唯一的,所以,可以对处理做这样的理解,当获得一个正解的时候,不需要继续判断。当然,如果解不是唯一的,那么就意味着需要利用指针动态分配内存来存储多组解,显然这里降低了难度。
第二,它给定了一个函数PRINT,这个函数的目的,很明显,是将算出的结果输出到文件K:\24000101\RESULT.DAT中去
第三,原理是利用穷举法获得结果,由观察数据,可知,结果应该比较偏大,所以判断的起始从高值开始判断会比较好,当然,如果没有给出数据,从低值开始判断还是从高值判断也就没有影响了。下面是代码:
unsigned int a = 0, b = 0;
int stop=0;
for (a = 50; a >0; a--)
{
for (b = 50; b > 0; b--)
{
if((a+b*b)!=1564)
continue;
if((a*a+b*b)!=3370)
continue;
else
{
stop=1;
break;
}

}
if(stop==1)
break;
}

输出结果:
a=43,b=39
TableDI
2024-07-18 广告
仅需3步!不写公式自动完成Excel vlookup表格匹配!Excel在线免,vlookup工具,点击19步自动完成表格匹配,无需手写公式,免费使用!... 点击进入详情页
本回答由TableDI提供
raef_beyond
2010-06-22 · TA获得超过1651个赞
知道小有建树答主
回答量:382
采纳率:50%
帮助的人:230万
展开全部
int stop_flag = 0;
unsigned int a = 0, b = 0;

for (a = 1; a < 50; a++)
{
for (b = 1; b < 50; b++)
{
if ((a + b * b) == 1564 && (a * a + b * b) == 3370)
{
stop_flag = 1;
break;
}
}
if (stop_flag == 1)
{
break;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式