标题:新人初来乍到,请各路高手指点!谢谢!
只看楼主
lalalalala12
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2020-11-5
结帖率:0
已结贴  问题点数:1 回复次数:11 
新人初来乍到,请各路高手指点!谢谢!
这个C语言编程如何判断自守数:
【题目描述】

自守数是指一个数的平方的尾数等于该数自身的自然数。例如252=625,762=5776。输入一个自然数,判断其是否为自守数。 如果是,则输出Yes,否则输出No。

【输入】

一个自然数。

【输出】

如果是自守数,输出Yes,否则输出No。

【样例输入】

5↙

【样例输出】

Yes
搜索更多相关主题的帖子: 输出 自然数 判断 输入 等于 
2020-11-05 14:57
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:1 
回复 楼主 lalalalala12
差点没被你晕死:252 = 625,762 = 5776,你就不能这样写呀:25^2 = 625,76^2 = 5776
稍等,这就帮你做。。。
程序代码:
#include<stdio.h>
int main()
{
    int n, M;
    scanf_s("%d", &n);

    M = n * n;
    if (M >= 1000 && M < 998002)  // 999 x 999 = 998001
    {
        if (n == M % 1000)
            printf("%d 是一个自守数\n",n);
        else
            printf("%d 不是一个自守数\n",n);
    }
    if (M >= 100 && M < 9802)     // 99 x 99 = 9801
    {
        if (n == M % 100)
            printf("%d 是一个自守数\n",n);
        else
            printf("%d 不是一个自守数\n",n);
    }
    if (M >= 10 && M < 81)         // 9 x 9 = 81
    {
        if (n == M % 10)
            printf("%d 是一个自守数\n",n);
        else
            printf("%d 不是一个自守数\n",n);
    }
    if (M < 10)
    {
        printf("%d 不是一个自守数\n",n);
    }
    printf("\n");
}



[此贴子已经被作者于2020-11-5 16:11编辑过]

2020-11-05 15:27
lalalalala12
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2020-11-5
得分:0 
回复 2楼 风过无痕1989
谢谢!我已想到解法了。
2020-11-05 15:36
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:1 
程序代码:
#include <stdio.h>

int main()

{

 long a,b,i=1;

 scanf("%ld",&a);

 b=a;

 do

 {

 b=b/10;

 i*=10;

 }while(b>0);

 if(a*a%i==a)

 printf("Yes\n");

 else

 printf("No\n");

 return 0;
}
2020-11-05 21:06
请输入密码
Rank: 2
等 级:论坛游民
威 望:5
帖 子:35
专家分:84
注 册:2020-11-19
得分:0 
很久没上论坛,难得找到个可以练手的,我也来试试。

程序代码:
#include<stdio.h>

int main( void )
{
    unsigned s;
    unsigned n;
    unsigned res;
              
    scanf("%u%n",&s,&n);

    if ( s == 0) 
        res = 0;
    else
        res = (s*(s-1)) % (10*n);
    
    puts( res? "No" : "Yes" ); 
                
    return 0;
}


[此贴子已经被作者于2020-11-19 18:12编辑过]


Bug易改,码风难移。
有事离开,无事灌水。
2020-11-19 17:17
llc_xz
Rank: 2
等 级:论坛游民
威 望:1
帖 子:4
专家分:14
注 册:2016-7-5
得分:0 
#include<stdio.h>

int main()
{
    int i, m;
    printf("input a natural number:");
    scanf("%d", &i);
    m = i * i;
    do{
        i = i / 10;
        m = m / 10;
    }while (i % 10 == m % 10);
    puts(i == 0 ? "yes" : "no");
    return 0;
}
2020-11-23 03:49
尔二
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2020-10-19
得分:0 
回复 2楼 风过无痕1989
你这个printf输出是原数。。。(25是自守数,输出的是25,不是625。)
2020-12-02 21:40
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:0 
回复 7楼 尔二
此题目做完了,也就没再看了。现在看到,你提出了异议
我程序 printf(),可不就是 25,哪里有输出 625?
举个例子:假设 n = 25 (这是一个自守数),它的平方 M = 625,
if(n = = M % 100),即 if(25 = = 625 % 100)  printf("%d 是一个自守数",n)
如果写成 printf("%d 是一个自守数",M),那就是错误的了
2020-12-03 15:53
尔二
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2020-10-19
得分:0 
回复 8楼 风过无痕1989
如果要让他输出625改怎么做呢
2020-12-03 21:12
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:0 
回复 9楼 尔二
printf("%d = %d * %d",M,n,n)

[此贴子已经被作者于2020-12-3 23:26编辑过]

2020-12-03 23:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503777-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.203751 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved