c - C程序在用户给定的数字内找到完美的正方形?
问题描述
我试图在下面的程序中解决这个问题,但我不知道如何在给定的数字内找到完美的正方形。我不知道如何解决这个问题。请帮我解决问题。
程序:-
编写一个 C 程序从用户那里获取一个数字,并在数字内找到完美的正方形并按升序打印它们。
预期输出:-
User :- 4673681
Result:- 1,4,36,.81
User :- 1625649
Result:- 1,16,25,49,64,256,625.
我写了下面这样的程序,在这里,我做了什么?我用一些值初始化数组并将一个值设为完美正方形,然后最后按升序排序。但是,我的预期完全不同。请参阅上述预期输出示例以更好地理解。
#include<stdio.h>
int main()
{
int a[10]={4,6,3,9,7,2,8};
int i,j,m=8,temp;
// printf("Enter the elements:");
//scanf("%d",&m);
for(i=0;i<m;i++)
{
a[i]= a[i]*a[i];
}
for(i=0;i<m-1;i++)
{
for(j=i+1;j<m;j++)
{
if(a[i]>a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
printf("ascending orders:\n");
for(i=0;i<m;i++)
{
printf("%d\n",a[i]);
}
}
解决方案
有趣的小问题,很容易解决。
#include <stdio.h>
#include <math.h>
void findsquares(int num)
{
for(int x = 1; x*x <= num; ++x)
{
int m = pow(10,(int)log10(x*x)+1);
for(int t = num; t; t /= 10)
{
printf((t%m == x*x)? "%d, " : "", x*x);
}
}
}
int main(void) {
int num = 1625649;
findsquares(num);
return 0;
}
输出
Success #stdin #stdout 0s 4360KB
1, 4, 9, 16, 25, 49, 64, 256, 625,
推荐阅读
- sql - 如何根据在 oracle 中具有空值的列从两个不同的列中进行选择
- python - Pygame 表面位置似乎与屏幕上的位置不同?
- python - Cython - 动态 2D C++Array 的 Memoryview
- mongodb - MongoDB按偶数元素将数组拆分为N元素数组
- c# - 寻找着陆点
- json - Nil 与预期的参数类型“JSON”不兼容
- c# - 用于 IList 的 WPF 数据网格
- 无法添加新值 - authentication - 我重新启动节点红色,但用户仍然登录
- mysql - 当没有匹配的数据而不是返回 0 行时,有没有办法返回一个为零的列?
- redis - Redisson本地缓存使用