首页 > 解决方案 > 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]);
    }
}

标签: carraysalgorithmfunction

解决方案


有趣的小问题,很容易解决。

#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, 

推荐阅读