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);
} 展开
(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);
} 展开
2个回答
展开全部
先说一下我的理解。
第一,由于解是唯一的,所以,可以对处理做这样的理解,当获得一个正解的时候,不需要继续判断。当然,如果解不是唯一的,那么就意味着需要利用指针动态分配内存来存储多组解,显然这里降低了难度。
第二,它给定了一个函数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
第一,由于解是唯一的,所以,可以对处理做这样的理解,当获得一个正解的时候,不需要继续判断。当然,如果解不是唯一的,那么就意味着需要利用指针动态分配内存来存储多组解,显然这里降低了难度。
第二,它给定了一个函数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 广告
2024-07-18 广告
仅需3步!不写公式自动完成Excel vlookup表格匹配!Excel在线免,vlookup工具,点击19步自动完成表格匹配,无需手写公式,免费使用!...
点击进入详情页
本回答由TableDI提供
展开全部
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;
}
}
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;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询