2014-12-06 59 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"); 
}