2 qianrushi521 qianrushi521 于 2015.06.05 17:06 提问

标题是--数据输出,求大神指点迷津

输入整数n(n<100)和m(m<10),输出m和m的倍数,还有包含m的数字,例如(6,12,16,18...60,66,72,76...)。

Input

输入正整数n和m。

Output

输出从小到大排列的不大于n的与m有关的数字。每组数据占一行,每个数字后面有一个空格。

Sample Input

30 6
Sample Output

6 12 16 18 24 26 30
HINT

最后一个数字后面也有空格

代码如下
#include
int main()
{
int n,m,i;
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++)
{
if(i%m==0||i%10==6)
printf("%d ",i);
}
printf("\n");
return 0;
}
测试没错,就是提交错误

12个回答

qq_17246605
qq_17246605   2015.06.05 17:56

改为:
if(i%m==0||i%10==m||i/10==m)

qq_17246605
qq_17246605 回复qianrushi521: 56%10=6,56/10=5,并不一样,一个是10位数,1个是个位数,65%10=5,按照你的算法的话,会被过滤掉,但加上65/10=6时,就不会被过滤掉了。因为是n<100,所以不用考虑 百位数及以上。
2 年多之前 回复
qianrushi521
qianrushi521 但是我觉得i%m==0和i/10==m效果不是一样吗
2 年多之前 回复
Bruce_why
Bruce_why   2015.06.05 20:19
//.cpp
 #include <stdio.h>

int main(){

    int m, n;

    while (scanf("%d%d", &n, &m) != EOF) {

        for (int i = 1; i <= n; i++){
            //判断i是否是m的倍数
            if (i % m == 0){

                printf("%d ", i);
                continue;
            }
            //判断i中是否包含m
            //注意:题设m<10 , 意味m为0~9的单个数字,若m>10呢? ...
            if (i > m){
                int  remainder;
                int  intresult = i;
                //此处使用循环整除 比如 45 对于 4    余数45%10 =5  整除结果45/10 = 4  5!=4 再循环,此时4/10 = 0 4%10 =4; 4==4 ok得结果; 
                while (intresult > m ){
                    remainder = intresult % 10;
                    intresult = intresult / 10;
                    if (remainder == m){
                        printf("%d ", i);
                        break; 
                    }
                }
            }
        }
        printf("\n");
    }

}

nswcfd
nswcfd   2015.06.05 20:47

对,关键是要正确的实现“包含”操作。在遍历n的过程中,看m是否是n的十位数或者个位数。

如果不强调效率的话,可以转换为一个判断是否为子串的操作。

EnderSnow
EnderSnow   2015.06.06 15:34

包含m的数没注意所在数位,请你再看一下吧~

Bruce_why
Bruce_why   2015.06.05 17:16

错误很明显,if语句后 i%10 == m

qianrushi521
qianrushi521 刚才只是针对此题了,大意了,但是改过后还是不对
2 年多之前 回复
qianrushi521
qianrushi521   2015.06.05 17:20

是的,这点我只是针对此题了,但是改过后还是不对

qianrushi521
qianrushi521 考虑不周,谢谢提醒
2 年多之前 回复
Bruce_why
Bruce_why 问题出在包含m的数上,比如33,34,334,都包含3,这个你没有考虑
2 年多之前 回复
u012377333
u012377333   Rxr 2015.06.05 17:36

提交上面显示社么错误么?

qianrushi521
qianrushi521   2015.06.05 17:57

=================/data5.out
Right:
9 18 19


Your:
6 9 16 18

z345434645
z345434645   2015.06.08 23:30

if(i%m==0||i%10==6)
改为
if(i%m==0||i%10==m)

datou431
datou431   Rxr 2015.06.10 15:28

if(i%m==0||i%10==m||i/10==m)

共12条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!