C程打印图案问题:输入一个正整数n,打印一个边长为 n 的菱形图案

输入一个正整数repeat (0<repeat<10),做repeat次下列操作:
输入一个正整数n,打印一个边长为 n 的菱形图案。
输出使用以下语句:
printf(" ");
printf("* ");
printf("\n");

#include "stdio.h"
int main(void)
{
int i, j, n;
int repeat, ri;

scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d", &n);
/*---------*/
}
}

第1个回答  推荐于2017-05-26
#include "stdio.h"
int main(void)
{
int i, j, n;
int repeat, ri;

scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d", &n);
j=n;
while(j){
i=2*(n-1)-2*(n-j);
while(i){
printf(" ");
i--;
}
i=0;
do{
printf("* ");
i++;
}while(i!=1+2*(n-j));
j--;
printf("\n");
}
j=n-1;
while(j){
for(i=1;i<=(n-j)*2;i++)printf(" ");
for(i=1;i<=n*2-1-(n-j)*2;i++)printf("* ");
j--;
printf("\n");
}
}
}本回答被网友采纳
第2个回答  2014-04-16
void output(int n)
{
for(int k=1;k<=n;k++)
{
for(int i=k;i<n;i++)
printf(" ");
for(int j=1;j<=n;j++)
printf("*");
printf("\n");
}
}

int main(void)
{ int i, j, n;
int repeat, ri;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++)
{ scanf("%d", &n);
output(n); }追问

不能加入k的```

追答

int main(void)
{ int i, j, n;
int repeat, ri;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++)
{
scanf("%d", &n);
for(i=1;i<=n;i++)
{
for(j=i;j<n;j++)
printf(" ");
for(j=1;j<=n;j++)
printf("*");
printf("\n");
}
}

}

相似回答