如何根据C

时间:2016-10-29 06:48:21

标签: c

您好我目前正在我的学校练习使用c,我根据用户输入在C中进行交叉签名时遇到问题,我的代码只有在高度为11时才能正常工作 首先我在高度= 11时做了非用户输入的代码(这是我的实际识别)然后在这里进行一些更改 谢谢你的回答

#include <stdio.h>

int main(void)    
{
    int n, i = 1, j = 9, l = 0, height;
    char ch = '#';

    printf("Enter the height of cross sign : ");
    scanf("%d",&height);

    n = (height / 2.0) - 0.5;
    while (i <= n)
    {
        printf("%*c%*c\n", i, ch, (2*n - 2*i + 1), ch);
        i++;
    }
    while (n < j)
    {
        printf("%*c%*c\n", (j - n), ch, (j - n - 1 + l), ch);
        n++;
        l += 3;
    }
    return 0;
}

2 个答案:

答案 0 :(得分:0)

首先,您的代码有一些编译器错误。你错过了一些分号。其次你的代码工作正常,直到CPL的11个原因。您可以在下面给出的链接中阅读相关内容:https://en.wikipedia.org/wiki/Characters_per_line

答案 1 :(得分:0)

如果你有两个相反的变量,你不需要看中间位置,比如一个变量减少而另一个变量同时增加。

这是解决该问题的代码:

int height, i , j, l;
char ch = '#', sp = ' ';

printf("Enter the height of cross sign : ");
scanf("%d",&height);

j=height;
for(i=1;i<=height;i++)
{
    for(l=1;l<=height;l++)
    {
        if(l==i||l==j)
        {
            printf("%c", ch); //if it's suppose to print '#'
        }
        else
        {
            printf("%c", sp); //if it's suppose to print space - ' '
        }
    }
    j--;
    printf("\n");
}

return 0;