回复 15楼 xzlxzlxzl
刚在那个网站试了一下,非要加个floor编译才会通过
还有就是要排除n=1,m=0的情况
改正如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main( void)
{
unsigned n,m;
char c;
scanf( "%u %c", &n, &c );
m=sqrt(n/2.0+0.5); //等于等差数列的项数
for(int i=m-1;abs(i)<m;i--)
{
printf("%*c",m-abs(i),c);
//输出第一个字符及前面的空格
for(int j=2;j<=2*abs(i)+1;j++) //输出后面的字符
printf("%c",c);
printf("\n");
}
printf("%d\n",n-2*m*m+1);
return 0;
}
多次测试后发现可以不要floor,但一定要包含math.h stdlib.h两个头文件。
还真有点奇怪abs居然需要两个头文件的支持。
[此贴子已经被作者于2016-10-12 11:14编辑过]