giegie666 发表于 2022-10-15 19:57:56

这哪里有错啊

题目要求输入一个正整数n(n>10),找出1-n之间同时能被3、5和7整除的整数并打印输出。输出时每个整数占用6个字符位置,每行最多输出5个这样的数。

#include <stdio.h>
int main()
{
    int i, n, m = 0;
    scanf(
"%d",&n
);
    for (i = 1; i <= n; i++)
    {
      if (
i%3==0&&i%5==0&&i%7==0
)
            continue;
               
      printf(
"%-6d",i
);
      m++;
      if (
m%5==0
)
            printf("\n");
    }
    return 0;
}

jackz007 发表于 2022-10-15 20:11:20

本帖最后由 jackz007 于 2022-10-15 20:34 编辑

         修改版
#include <stdio.h>

int main(void)
{
      int i , n , m = 0                           ;
      scanf("%d" , & n)                           ;
      for(i = 1 ; i <= n ; i ++) {
                if(i % 3 == 0 && i % 5 == 0 && i % 7 == 0) { // 这里写 continue 几个意思??
                        printf("%-6d" , i)          ;      // 必须纳入 if
                        m ++                        ;      // 必须纳入 if
                        if(m % 5 == 0) printf("\n") ;      // 必须纳入 if
                }
      }
}
          这是我写的版本
#include <stdio.h>

int main(void)
{
      int c , d , k , n                     ;
      scanf("%d" , & n)                     ;
      for(c = 0 , d = 3 * 5 * 7 , k = d ; k < n + 1 ; k += d) {
                if(c && ! (c % 5)) printf("\n") ;
                printf("%6d" , k)               ;
                c ++                            ;
      }
      printf("\n")                            ;
}
      编译、运行实况:
D:\\C>g++ -o c c.c

D:\\C>c
200
   105

D:\\C>c
2000
   105   210   315   420   525
   630   735   840   9451050
11551260136514701575
1680178518901995

D:\\C>
      看看你贴的代码,你自己愿意看吗???

桃花飞舞 发表于 2022-10-15 20:46:08

本帖最后由 桃花飞舞 于 2022-10-15 20:50 编辑

楼主代码已经写的很好了只是把打印输出和continue的位置写反了,

      if (i%3==0 && i%5==0 && i%7==0)
      {
                printf("%-6d",i);
                m++;
      }

条件成立是打印输出,
      
        if (i%3==0 && i%5==0 && i%7==0)
      {
                printf("%-6d",i);
                m++;
      }
      else
      {
            continue;
      }

条件不成立是conitnue;

#include <stdio.h>

int main()
{

    int i, n, m = 0;
    scanf("%d",&n);
    for (i = 1; i <= n; i++)
    {
      if (i%3==0 && i%5==0 && i%7==0)
      {
                printf("%-6d",i);
                m++;
      }
      else
      {
            continue;
      }

      if (m%5==0)
            printf("\n");
    }
    return 0;
}
很简单的逻辑嘛,要不楼主再看看if和 continue的用法,建议楼主好好排版,没人愿意看着这样的代码,毕竟不是机器

giegie666 发表于 2022-10-16 16:52:44

当时没电脑,在手机上复制的,所以排版有问题
页: [1]
查看完整版本: 这哪里有错啊