C语言每日小练(一)——7744问题
2014-04-08 16:52
387 查看
例:aabb
输出所有形如aabb的四位完全平方数(前两位数字相等、后两位数字相等)。
解:
法(1):(a)构造aabb形式的数;(b)判断是否为完全平方数。
代码:
#include<stdio.h>
#include<math.h>
int main()
{
int a, b, n;
double m;
for(a = 1; a <= 9; a++)
{
for(b = 0; b <= 9; b++)
{
n = 1100*a + 11*b;
m = sqrt(n);
if(floor(m+0.5) == m) printf("(1):%d\n", n);//判断两个浮点数是否相等,floor函数的作用是返回m的整数部分,加上0.5是为了减少误差影响。
}
}
return 0;
}
结果:
法(2):(a)以平方根x作为循环变量,构造完全平方数n;(b)判断是否为aabb形式的数。
#include<stdio.h>
int main()
{
int a, b, x, n;
for(x = 32; ; x++)
{
n = x * x;
if(n > 9999) break;
a = n / 100;
b = n % 100;
if(a/10 == a%10 && b/10 == b%10) printf("(2):%d\n", n);
}
return 0;
}
结果:
比较上面两个程序,得到的结果都为7744,但执行时间不同,显然(2)比(1)更快,程序(1)用时0.001s,而程序(2)则用时0.000s,原因就在于程序(1)进行了大量的开方运算~
输出所有形如aabb的四位完全平方数(前两位数字相等、后两位数字相等)。
解:
法(1):(a)构造aabb形式的数;(b)判断是否为完全平方数。
代码:
#include<stdio.h>
#include<math.h>
int main()
{
int a, b, n;
double m;
for(a = 1; a <= 9; a++)
{
for(b = 0; b <= 9; b++)
{
n = 1100*a + 11*b;
m = sqrt(n);
if(floor(m+0.5) == m) printf("(1):%d\n", n);//判断两个浮点数是否相等,floor函数的作用是返回m的整数部分,加上0.5是为了减少误差影响。
}
}
return 0;
}
结果:
法(2):(a)以平方根x作为循环变量,构造完全平方数n;(b)判断是否为aabb形式的数。
#include<stdio.h>
int main()
{
int a, b, x, n;
for(x = 32; ; x++)
{
n = x * x;
if(n > 9999) break;
a = n / 100;
b = n % 100;
if(a/10 == a%10 && b/10 == b%10) printf("(2):%d\n", n);
}
return 0;
}
结果:
比较上面两个程序,得到的结果都为7744,但执行时间不同,显然(2)比(1)更快,程序(1)用时0.001s,而程序(2)则用时0.000s,原因就在于程序(1)进行了大量的开方运算~
相关文章推荐
- C语言每日小练(三)——abc排列问题
- 每日总结关于c语言中不会问题的解答
- 『每日一题 2012-02-10』猴子选大王问题 C语言实现
- C语言每日小练(一)——n!问题
- C语言每日小练(三)——竖式问题
- C语言 7744问题
- 每日一点C语言--开灯问题
- C语言每日小练(二)——开灯问题
- C语言每日小练(一)——3n+1问题
- C语言中绘图时闪烁的问题
- 关于C语言中scanf()的相关问题
- 用C语言实现--生产者与消费者的问题(PV操作)
- C语言出错问题汇总【需要更新】
- 0-1背包和背包问题(C语言实现)——贪心算法应用(3)
- c语言字符串变量赋值问题
- [C语言]排序问题
- c语言汉诺塔问题
- 问题之编程语言_c语言_无符号计算
- 二叉搜索树最低访问代价问题C语言
- c语言形参传递的问题