欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C 语言学习 3

程序员文章站 2022-07-15 08:38:49
...
【程序3】
题目:一个整数,它加上100后是一个全然平方数。再加上168又是一个全然平方数。请问该数是多少?
1.程序分析:在10万以内推断。先将该数加上100后再开方,再将该数加上268后再开方,假设开方后的结果满足例如以下条件,即是结果。请看详细分析:
2.程序源码:

#include "math.h"
#include "stdio.h"
#include "conio.h"
main()
{
  long int i,x,y,z;
  for (i=1;i<100000;i++)
  {
    x=sqrt(i+100); /*x为加上100后开方后的结果*/
    y=sqrt(i+268); /*y为再加上168后开方后的结果*/
    if(x*x==i+100&&y*y==i+268) /*假设一个数的平方根的平方等于该数,这说明此数是全然平方数*/
    printf("\n%ld\n",i);
  }
  getch();
}

这个函数中调用了 sqrt 函数,它在 math.h 文件里,我第一次调用这个函数出错,但不是由于我使用的错误,而是程序中的 x、y、z 參数的类型设错了。应该设 long int,它是有符号的,并且应该是 long 型的,否则有可能会溢出。

至于函数中为什么要推断小于 100000,这个真不知道,标记一下。或者谁知道,给个答案。

这里面还有个思维方式的问题。假设你想用开根号函数来做此题,不是不能够,不过只在參数的类型上就非常麻烦。假设不用开根号而是用平方来推断,结果是一样的,可是会简单非常多。