标题:小白求教
只看楼主
goosey
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2018-4-7
结帖率:71.43%
已结贴  问题点数:20 回复次数:16 
小白求教
输入一个位数不超过300位的整数。
如果输入的数可以被3整除输出YES,否则输出NO。


[此贴子已经被作者于2018-4-16 09:35编辑过]

搜索更多相关主题的帖子: 输入 位数 整数 整除 输出 
2018-04-15 21:14
李晨经纪人
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:175
专家分:848
注 册:2018-2-14
得分:3 
程序代码:
#include<stdio.h>
int main(void)
{
    char a[301];
    int i=0,n=0;
    while(scanf("%c",&a[i])&&a[i]!='\n')
    {
        n+=a[i]-'0';
        ++i;
    }
    if(n%3==0)
        printf("YES\n");
    else
        printf("NO\n");
    return 0;
}
2018-04-15 21:45
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:3 
回复 2楼 李晨经纪人
数组是不是多余用了?
2018-04-15 22:07
李晨经纪人
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:175
专家分:848
注 册:2018-2-14
得分:0 
回复 3楼 xzlxzlxzl
只是输出yes还是no是不用数组,一个char就行。不过我还是习惯弄个数组把数字保存下来。

[此贴子已经被作者于2018-4-15 23:01编辑过]

2018-04-15 22:40
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:3 
大意就是说判断位数上面数字是否能被3整除,大数除以一位数通常可以用看余数和的方法~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-04-16 00:52
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:3 
#include <stdio.h>
main()
{
    char ch;
    int i,m=0;
    for (i=0; i<300 && (ch=getchar())!='\n'; ++i)
        m = (m*10+ch-'0')%3;
    printf("%s\n", m==0?"YES":"NO");
}


[此贴子已经被作者于2018-4-16 07:52编辑过]

2018-04-16 07:48
goosey
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2018-4-7
得分:0 
回复 6楼 吹水佬
为啥for循环中等号右边m要乘10?
2018-04-16 09:11
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:3 
回复 7楼 goosey
可以不用
程序代码:
#include <stdio.h>
int main( void )
{
    unsigned k = 0;
    for( int ch; ch=getchar(), ch!='\n'; )
        k = (ch-'0' + k)%3;
    puts( k==0? "YES" : "NO" );
}

甚至在“不超过300位”的情况下,可以确定无溢出
程序代码:
#include <stdio.h>
int main( void )
{
    unsigned k = 0;
    for( int ch; ch=getchar(), ch!='\n'; )
        k += ch;
    puts( k%3==0? "YES" : "NO" );
}
2018-04-16 11:00
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
可以~

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

int main( void )
{
    int ch=0;
    
    while ((ch+'\n')!=(ch+=getchar()));
    
    puts( ch%3==1? "YES" : "NO" );
    
    return 0;
}


[此贴子已经被作者于2018-4-16 11:47编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-04-16 11:41
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1728
专家分:3216
注 册:2015-12-2
得分:3 
回复 9楼 九转星河
是否考虑把字母当成数字的问题?
2018-04-16 11:59



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




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

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