c语言的相关问题,高手帮忙~!!急用~!谢谢

来源:百度知道 编辑:UC知道 时间:2024/04/30 14:25:06
本人刚刚学习C语言,遇到了那个编辑
*
***
*****
*******
*****
***
*
的问题
可是,我想做一个可以自己输入一个数控制这个图形大小的程序
于是我做了下面的编译。但是,其中有错误,本人才疏学浅,找不到,请高手帮忙,谢谢。
#include<stdio.h>
#include<math.h>

main()

{
int i=0,x,m=1,k,l[70]={0};
scanf("%d",&x);
k=(floor(x/2)+x%2);
do
{
for(l[i]=0,l[i]<(k-i),l[i]=++1)
printf(" ");i++;
for(x=0,x<2*i,x++)
printf("*");printf("\n");m++;
}
while (m>k);
i--;
do
{
for(l[i]=0,l[i]<k-i,l[i]--)
printf(" ");i--;
for(x=0,x<2*i,x++)
printf("*");printf("\n");m++;
}
while (m>k-2);

getch();
}

这个题用到数组根本没必要,每次for循环中的变量在每次do循环中可以相同l[i]可以用j代替
帮你改正了些错误(算法是和你一样的思想)
#include<stdio.h>
#include<math.h>

main()

{
int i=0,x,m=1,k,l[70]={0};
scanf("%d",&x);
k=(floor(x/2)+x%2);
do
{
for(l[i]=0;l[i]<(k-i-1);l[i]++)
printf(" ");i++;
for(x=0;x<2*i-1;x++)
printf("*");printf("\n");m++;
}while (m<=k);

i-=2;//注意在第一个for的最后一个do循环中有i++,因此应额外-1;
m--;//与上面的同理

do
{
for(l[i]=0;l[i]<k-i-1;l[i]++)
printf(" ");
for(x=0;x<2*i+1;x++)
printf("*");printf("\n");m++;i--;//i放在这里防止出现i<0的情况
}while (m<=2*k-1);
getch();
}

#include "stdio.h"
/*由于本题*号遵循规律是2*i-1 所以即便自己输入也只能输入奇数,偶数是不可以的*/
void main()
{
int i,j,k,n;
printf("\ninput number:");
scanf("%d",&n);
for(i=