Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C循环模式_C - Fatal编程技术网

C循环模式

C循环模式,c,C,我的代码工作了一半,但另一半无法工作 需要什么样的图案: 1SSSS s2ssss ss3sss sss4ss SS5s SSS 6 我的模式是什么样子的: 一, s2 ss3 sss4 ssss5 SSS 6 这是我的密码 #include <stdio.h> int main() { int i, j, k, num; printf("Enter number "); scanf("%d", &num); for (i = 1; i &

我的代码工作了一半,但另一半无法工作

需要什么样的图案:

1SSSS s2ssss ss3sss sss4ss SS5s SSS 6

我的模式是什么样子的:

一, s2 ss3 sss4 ssss5 SSS 6

这是我的密码

#include <stdio.h>
int main()
{
    int i, j, k, num;

    printf("Enter number ");
    scanf("%d", &num);

    for (i = 1; i <= num; ++i)
    {
        for (j = 1; j <= i; ++j)
        {
            if (j != i) {
                printf("s");
            }
        }

        printf("%d ", j-1);
        printf("\n");
    }

    return 0;
}

我猜你在这件事上犯了个错误

     for(int j=1; j<=i ; ++j)
我应该一直到num变量,因为需要打印num次


希望这有帮助

问题在您的for循环中。你需要一个else子句,还需要打印i而不是j-1。这段代码运行正常

#include <stdio.h>

int main()
{
    int i, j, num;

    printf("Enter number ");
    scanf("%d", &num);

    for (i = 1; i <= num; ++i)
    {
        for (j = 1; j <= num; ++j)
        {

            if (j != i)
            {
                printf("s");
            }
            else
            {
                printf("%d", i);
            }
        }

        printf("\n");
    }
    return 0;
}

在内部循环中,从1计数到num,并在if中添加一个else以打印数字。

精度字段%.precision可用于打印特定数量的字符,星号提供了使用变量的方法

#include <stdio.h>
#include <string.h>

int main()
{
    int each = 0;
    char s[] = { "ssssssss"};

    for ( each = 0; each < 6; each++) {
        printf ( "%.*s%d%.*s\n", each, s, each + 1, 5 - each, s);
    }

    return 0;
}
内部循环输出i-1个字符,而不是num个字符

    for (j = 1; j <= i; ++j)
    {
        if (j != i) {
            printf("s");
        }
    }

    printf("%d ", j-1);
程序输出可能如下所示

Enter a positive number less than 10 (0 - exit): 9

1ssssssss
s2sssssss
ss3ssssss
sss4sssss
ssss5ssss
sssss6sss
ssssss7ss
sssssss8s
ssssssss9

Enter a positive number less than 10 (0 - exit): 8

1sssssss
s2ssssss
ss3sssss
sss4ssss
ssss5sss
sssss6ss
ssssss7s
sssssss8

Enter a positive number less than 10 (0 - exit): 7

1ssssss
s2sssss
ss3ssss
sss4sss
ssss5ss
sssss6s
ssssss7

Enter a positive number less than 10 (0 - exit): 6

1sssss
s2ssss
ss3sss
sss4ss
ssss5s
sssss6

Enter a positive number less than 10 (0 - exit): 5

1ssss
s2sss
ss3ss
sss4s
ssss5

Enter a positive number less than 10 (0 - exit): 4

1sss
s2ss
ss3s
sss4

Enter a positive number less than 10 (0 - exit): 3

1ss
s2s
ss3

Enter a positive number less than 10 (0 - exit): 2

1s
s2

Enter a positive number less than 10 (0 - exit): 1

1

Enter a positive number less than 10 (0 - exit): 0

为什么每个人都认为这个答案实际上产生了预期的结果!没有。你有6行SSS6。请用else条件至少添加一点,否则UPVOUTS根本不合理……正如@MongZhu解释的,这里也有错误逻辑,您应该打印内部的j循环
Enter a positive number less than 10 (0 - exit): 9

1ssssssss
s2sssssss
ss3ssssss
sss4sssss
ssss5ssss
sssss6sss
ssssss7ss
sssssss8s
ssssssss9

Enter a positive number less than 10 (0 - exit): 8

1sssssss
s2ssssss
ss3sssss
sss4ssss
ssss5sss
sssss6ss
ssssss7s
sssssss8

Enter a positive number less than 10 (0 - exit): 7

1ssssss
s2sssss
ss3ssss
sss4sss
ssss5ss
sssss6s
ssssss7

Enter a positive number less than 10 (0 - exit): 6

1sssss
s2ssss
ss3sss
sss4ss
ssss5s
sssss6

Enter a positive number less than 10 (0 - exit): 5

1ssss
s2sss
ss3ss
sss4s
ssss5

Enter a positive number less than 10 (0 - exit): 4

1sss
s2ss
ss3s
sss4

Enter a positive number less than 10 (0 - exit): 3

1ss
s2s
ss3

Enter a positive number less than 10 (0 - exit): 2

1s
s2

Enter a positive number less than 10 (0 - exit): 1

1

Enter a positive number less than 10 (0 - exit): 0