C语言:在屏幕上用*输出个菱形,要求菱形的行数是从键盘上输入的 应该怎么做呢?

详细的问题说明,有助于回答者给出准确的答案

第1个回答  2008-12-28
#include <iostream.h>
#include <stdio.h>
void main()
{
int n;
printf("请输入行数:");
scanf("%d",&n);
int i,j;
if(n%2==0)//偶数
{
for(i=0;i<n/2;i++) // 偶数时,从0行开
{
for(j=0;j<n/2-1-i;j++)
cout<<" ";
for(j=0;j<2*i+1;j++)
cout<<"*";
cout<<endl;
}

for(;i<=n;i++)
{
for(j=0;j<i-n/2;j++) // 第n/2行也为最多*

cout<<" ";
for(j=0;j<n-1-(i-n/2)*2;j++)
cout<<"*";
cout<<endl;
}
}
else //奇数时
{
for(i=0;i<=n/2;i++) // 从第0行开始计算,第n/2行*最多 (此行*为n个)
{
for(j=0;j<n/2-i;j++)
cout<<" ";
for(j=0;j<2*i+1;j++)
cout<<"*";
cout<<endl;
}
for(;i<=n;i++)
{
for(j=0;j<i-n/2;j++) //i-n/2 表示在第n/2行往下 的第几行中
cout<<" ";
for(j=0;j<n-(i-n/2)*2;j++)
cout<<"*";
cout<<endl;
}
}
}本回答被提问者采纳
第2个回答  2008-12-30
int i,j,n;
scanf("%d",&n);
for(i=0;i<n;i++){
j = n+i;
while(j--){
printf("%s",j>2*i?" ":"*");
}
printf("\n");
}
for(i=n-1;i>0;i--){
for(j=0;j<n+i-1;j++){
printf("%s",j<n-i?" ":"*");
}
printf("\n");
}