在我输入scanf需要的输入后,程序立即退出

最后发布: 2019-10-24 15:12:52


问题

我正在尝试制作菱形。 我问用户一个数字,然后我将2n + 1乘以2n + 1的形状。 我要求不是字母,而是打印字母。 另外,我用空格代替空格。 我的程序已停止运行。 它要求我提供输入,然后窗口消失,程序消失。 我真的可以使用提示。 是的,这是一个作业问题。

#include <stdio.h>

void main(){
    int number_user_Input;
    int temp;
    char letter;
    int shape_dimension;

    printf("Enter a number please: ");
    while((temp=scanf("%d", &number_user_Input))==0)
    {
        scanf("%*[^\n]");
        printf("Please enter an actual number:\n");
    }
    if(temp==EOF)
    {
        printf("Nothing to read, number was not found.\n");
    }
    else
    {
        printf("You typed: %d\n", number_user_Input);
    }
    printf("Please type only one letter: ");
    scanf(" %c", &letter);
    shape_dimension = 2*number_user_Input+1;
    printf("Shape dimensions are: %d \n", shape_dimension);
    for(int i=0; i<shape_dimension; i++)
    {
         for(int j=1; j <shape_dimension-i; j++)
        {
           printf(".");
        }
        for(int j=1; j<2*i-1; j++){
            printf("%c", letter);
        }
        printf("\n");

    }

    for(int i=shape_dimension-1; i>=1; i--)
    {
        for(int j=1;j<=shape_dimension-i;j++){
            printf(".");
        }
        for(int j=1;j<=2*i-1;j++){
            printf("%c", letter);

        }
        printf("\n");
}
}
c
回答

我认为对此进行更改将解决您的问题。

for(int i=0; i<shape_dimension; i++){
    for(int j=0; j <shape_dimension-i; j++){
        printf(".");
    }

    for(int j=0; j<2*i-1; j++){
        printf("%c", letter);
    }
    printf("\n");

}

//~ printf("\n");

for(int i=shape_dimension; i>=1; i--){

    for(int j=0;j<shape_dimension-i;j++){
        printf(".");
    }

    for(int j=0;j<2*i-1;j++){
        printf("%c", letter);
    }
    printf("\n");
}

运行代码将产生此输出

./code <<< "1 a"
Enter a number please: You typed: 1
Please type only one letter: Shape dimensions are: 3 
...
..a
.aaa
aaaaa
.aaa
..a

其他注意事项

  • void main() -> int main(void)return 0; main()的末尾。