问题:
网上看到一位仁兄的,http://hi.baidu.com/yikouchenai/item/c64e837f94bf19236f29f675,当时觉得不是很完善,自己修改了下:
#include <stdio.h>
#include<math.h>
void diamond(int num, char pattern)
{
int row, col;
if (num % 2 == 0)
{
printf("num must be odd!\n");
return;
}
for (row = -num/2; row <= num/2; row++)
{
for ( col = -num/2; col <= num/2; col++)
{
if (fabs(row) + fabs(col) <= num/2)
printf("%c ", pattern);
else printf(" ");
}
printf("\n");
}
}
int main(){
diamond(5,'#');
return 0;
}
负数除2向上取整,正数向下取整,从负数到正数加上0,一共是num个数,控制了循环次数,再观察菱形的形成条件,合理利用空格,这里是两个空格。