我必须编写一个程序,打印一个由带有一个对角线的星号组成的正方形,旁边是n个星号。如果n为5,则模式为
*****
* **
* * *
** *
*****
我错误的代码是:
#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");
}
}
它打印无限的星号,而不是完成它的工作。
答案 0 :(得分:2)
您要分配而不是比较。
if((star==1)||(star=n-row+1)||(star==n))
^
答案 1 :(得分: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");
}