我也瞎写了一个,运行通过了,高手给指点指点
/*用户输入整数,输出菱形*/
#include<stdio.h>
/*程序从函数main开始执行*/
int main()
{
int n;/*用户输入的整数*/
int i;/*前(n+1)/2行循环计数器*/
int j;/*剩余行循环计数器*/
int k;
printf("输入一个正奇数(-1结束): ");/*输入第一个整数*/
scanf("%d", &n);
while(n != -1){/*循环直至输入标志值*/
if(n % 2 != 0){/*n不是偶数*/
for(i = 1; i <= (n + 1) / 2; i++){/*前(n+1)/2行*/
for(k = 1; k <= (n - (2 * i - 1)) / 2; k++){/*输出第一部分空格*/
printf(" ");
}/*结束for*/
for(k = 1; k <= 2 * i - 1; k++){/*输出星号*/
printf("*");
}/*结束for*/
for(k = 1; k <= (n - (2 * i - 1)) / 2; k++){/*输出第二部分空格*/
printf(" ");
}/*结束for*/
printf("\n");/*输出完一行*/
}/*结束for*/
for(i = (n + 1) / 2; i >= 1; i--){/*输出剩余行*/
for(j = (n + 1) / 2 + 1; j <= n; j++){/*剩余的行*/
if((i + j) % ((n + 1) / 2) == 0){/*这些行输出相同的结果*/
for(k = 1; k <= (n - (2 * i - 1)) / 2; k++){/*输出第一部分空格*/
printf(" ");
}/*结束for*/
for(k = 1; k <= 2 * i - 1; k++){/*输出星号*/
printf("*");
}/*结束for*/
for(k = 1; k <= (n - (2 * i - 1)) / 2; k++){/*输出第二部分空格*/
printf(" ");
}/*结束for*/
printf("\n");/*输出完一行*/
}/*结束if*/
}/*结束for*/
}/*结束for*/
}/*结束if*/
else
printf("输入的数是偶数,不能输出菱形\n");
printf("输入一个正奇数(-1结束): ");/*输入下一个整数*/
scanf("%d", &n);
}/*结束while*/
return 0;/*表示程序成功结束*/
}/*结束函数main*/
[[it] 本帖最后由 苏洵 于 2008-8-16 19:04 编辑 [/it]]