方法一:先計算菱形中最長"*"的個數,通過交換字符的方法來輸出圖案。
void step1(int left,int right)
{
char arr1[] ="*************";
char arr2[] =" ";
while((left>1)&&(right<12))
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
left--;
right++;
printf("%s\n",arr2);
}
}
void step2(int left,int right)
{
char arr1[] ="*************";
char arr2[] =" ";
while(left != right)
{
arr1[left] = arr2[left];
arr1[right] = arr2[right];
left++;
right--;
printf("%s\n",arr1);
}
}
int main()
{
step1(6,6);
step2(0,12);
return 0;
}
方法二:通過菱形圖案的行數,來輸出圖案。
#include <stdio.h>
int main()
{
int line = 0;
int i = 0;
scanf("%d",&line);
for(i=0; i<line ; i++)
{
int j = 0;
for(j=0 ; j<line-i-1; j++)
{
printf(" ");
}
for(j=0 ; j<2*i+1; j++)
{
printf("*");
}
printf("\n");
}
for(i=0; i<line-1 ; i++)
{
int j = 0;
for(j=0; j<=i ; j++)
{
printf(" ");
}
for(j=0 ; j<(line-1-i)*2-1 ; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
最後是輸出結果。。。