前言
我真的好懒呀QAQ
不能再这样下去了,我师父会不要的我。今天去参加了礼仪培训,4月9日会参加学校活动的颁奖典礼,人生第一次,还是蛮期待的。
第三题
题目:
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
我的思路
在做这题之前,先在草稿纸上用数学模型演算一下,再将设置的变量用编程的实型数据表达。理清这三个变量之间的关系。
我的过程
#include<stdio.h>
void main()
{
int x1,x2,y,z;
for(y=0;y>=0;y++){x1=y*y-100;}
for(z=0;z>=0;z++){x2=z*z-268;}
if(x2=x1)
{printf("该条件下的数x为:\n%d\n",x1);}
}
运行结果
题目答案
我只想说,是我天真了,我没有考虑到这个数不唯一的情况…
原答案链接:(https://www.runoob.com/cprogramming/c-exercise-example3.html)
原答案代码:
#include <stdio.h>
int main (void)
{
int i, j, m, n, x;
for (i = 1; i < 168 / 2 + 1; i++)
{
if (168 % i == 0)
{
j = 168 / i;
if ( i > j && (i + j) % 2 == 0 && (i - j) % 2 == 0)
{
m = (i + j) / 2;
n = (i - j) / 2;
x = n * n - 100;
printf ("%d + 100 = %d * %d\n", x, n, n);
printf ("%d + 268 = %d * %d\n", x, m, m);
}
}
}
return 0;
}
我跟着这个思路写了一下过程和代码,确实不得不服。不仅
找出了所有满足条件的X,还写出来是哪几个平方数相乘。这就是写代码的优化吗??但是我觉得这个答案的计算过程很复杂,看着看着就糊涂了。
我尝试了用自己的思路来优化我的代码,还是我天真了。这个正确答案真棒!!
总结
1、要做到代码的优化,就要考虑到更多除题目以外可能会看的东西。比如这题答案怎么来的可能不重要,但如果看到过程会更加一目了然。而且把平方数也说明清楚了,更方便在脑海里推演。
2、引用中间变量是个很方便很重要的方法,与其直接用已知变量来循环,不如用中间变量来循环,然后再赋值给已知变量,这样既可以方便更改,也便于纠错。