2014-12-06 83 views
0

对角线,星号图案我必须写一个程序,将打印制成星号的平方有一条对角线,其中n星号的一侧。如果n是5,这个模式将是广场在C

***** 
* ** 
* * * 
** * 
***** 

我的错误代码是:

#include<stdio.h> 
main(){ 
    int n,row,i,star; 
    scanf("%d",&n); 
    for(row=1;row<=n;row++){ 
    if(row==1||row==n){ 
     for(i=1;i<=n;i++){ 
    printf("*"); 
     } 
    } 
    else { for(star=1;star<=n;star++){ 
     if((star==1)||(star=n-row+1)||(star==n)) 
      printf("*"); 
     else printf(" "); 
     } 
    } 

    printf("\n"); 
    } 
} 

而不是做自己的工作,它打印无限的星号。

+1

下次在发布之前检查您输入的错误代码。 – 2501 2014-12-06 18:38:41

+1

并尝试更传统的代码风格。 – bzeaman 2014-12-06 18:40:00

+0

对不起,英语不是我的母语,感谢您的反馈,我会密切关注我的拼写,并改善我的代码风格。 – 2014-12-11 01:38:14

回答

2

您正在分配的,而不是比较。

if((star==1)||(star=n-row+1)||(star==n)) 
       ^
+0

非常感谢,我应该真正关注这些语义错误。 – 2014-12-11 01:34:39

0

试试看看这个代码。

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

     printf("Enter the number of lines to be printed:"); 
     scanf("%d",&n); 
     for(i=0;i<n;i++) 
      printf("*"); 
     printf("\n"); 
     for(i=0;i<n-2;i++) 
     { 
       printf("*"); 
       for(j=0;j<n-2;j++) 
       { 
        if(j==(n-3-i)) 
        { 
         printf("*"); 
        } 
        else{ 
        printf(" "); 
        } 
       } 
       printf("*\n"); 
     } 
     for(i=0;i<n;i++) 
       printf("*"); 
     printf("\n"); 
}