#include <stdio.h>
int main(void){
int i=0,n=0,h=0,p,l;
int f=0;
scanf("%d",&i);
int a[40]={0};
int k=i/2,u=i+1;
for(l=1;l>0;l=l+2)
{
k=k-l;
if(k<0)break;
a[n]=l;
u-=2*a[n];
n++;
}
p=n;
while(i)
{
for(int m=h;m>0;m--)
{
printf(" ");
}
h++;
//printf("%d\n",h);
for(int j=1;j<=a[n];j++){
printf("*");
}
n--;
printf("\n");
if(n==-1){
n=0;
h--;
while(i)
{
h--;
for(int m=h;m>0;m--)
{
printf(" ");
}
n++;
for(int j=1;j<=a[n];j++)
{
if(a[n-1]==a[p])
{
printf("c");
i=0;break;
}
printf("*");
//f++;
}
printf("\n");
f++;
if(i==0)break;
//printf("\n");
}
}
}
printf("%d\n",f);
printf("%d",u);
}
你题目的解答代码如下:
#include <stdio.h>
int main(void){
int n,i,j,k=1,m=1,p,r;
char c;
scanf("%d %c",&n,&c);//要输入一个整数和一个符号
if (n<=0)
{
printf("0\n");
return 0;
}
while(m<=n)
{
p = m;
r = k;
k++;
m += (k*2-1)*2;
}
for (i = r; i > 1 ; i--)
{
for (j = 1; j <= r-i; j++)
printf(" ");
for (j = 1; j <= 2*i-1; j++)
printf("%c",c);
printf("\n");
}
for (i = 1; i <= r; i++)
{
for (j = 1; j <= r-i; j++)
printf(" ");
for (j = 1; j <= 2*i-1; j++)
printf("%c",c);
printf("\n");
}
printf("%d\n",n-p);
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
应该是printf("\n");的位置放的不对。你的代码运行结果也不对,代码修改如下:
#include<stdio.h>
#include<math.h>
void shalou(int n,char c)
{
int i,j,k,p;
for(i=0,p=n;i<n;i++,p--)
{
for(j=0;j<i;j++)
{
printf(" ");
}
for(k=2*p-1;k>0;k--)
{
printf("%c",c);
}
printf("\n");
}
for(i=n-2,p=2;i>=0;i--,p++)
{
for(j=0;j<i;j++)
{
printf(" ");
}
for(k=0;k<2*p-1;k++)
{
printf("%c",c);
}
printf("\n");
}
}
int main()
{
int n,i,yu;
char c;
scanf("%d %c",&n,&c);
for(i=1;;i++)
{
if(i*i*2-1>=n) break;
}
if(i*i*2-1>n)
{
i--;
yu=n-(i*i*2-1);
}
shalou(i,c);
printf("%d",yu);
return 0;
}