c语言题目:编写程序打印数字金字塔(用循环语句编写) 1

c语言题目:编写程序打印数字金字塔(用循环语句编写)

1
121
12321
1234321
123454321

1、首先打开vs2014,新建一个项目。


2、然后开始建一个新的main头文件,新建一个main文件。

3、然后添加头文件<stadio.h>.

4、定义i,j变量,定义一个int数组,为了在里面放入值。

5、接下来用for循环给数组a赋值。

6、用for循环打印数字金字塔。


温馨提示:内容为网友见解,仅供参考
第1个回答  2015-10-08

下面的程序可以实现打印数字金字塔,把源代码复制在下面了

#include<stdio.h>
#include<stdlib.h>

int main()
{
int num;
int i;
int j;

int space=4;

num=1;

for(i=5;i>0;i--)
{
for(j=1;j<=space;j++)
{
printf(" ");
}
for(j=1;j<=num;j++)
{
printf("%d",j);
}
for(j=num-1;j>0;j--)
{
printf("%d",j);
}
for(j=1;j<=space;j++)
{
printf(" ");
}
num++;
space--;
printf("\n");
}

return 0;
}

可以自己跑一下程序,应该没错的,把我的运行结果截图了

追问

你好,能麻烦您给出详细的过程注解吗?可以追加悬赏

追答

好,我说一下大体的思路吧。先看一下这个数字金字塔,第1行输出'1',第5行输出'123454321',中间每1行输出的最大数字递增加1。这样就可以先用for循环来输出数字,像下面这样

1
12
123
1234
12345

上面的顺序是递增的,为了输出金字塔形状,可以再用for循环递减输出数字,从每1行的最大数字递减直到1为止。就像下面这样

1
121
12321
1234321
123454321

然后可以看每1行的数字前后的空格数,第1行数字前后有4个空格,后面递减,第5行就没有空格了,就是0。所以可以在数字前后分别循环输出空格,每1行输出的空格数都比前1行小1。最后输出一行结束后再换行就可以了。如果你具体哪个语句看不懂,可以再问我。

第2个回答  推荐于2017-09-12

#include<stdio.h>

int main()

{

int n,i,j;

    scanf("%d",&n);

for(i=1;i<=n;i++)

{

for(j=0;j<n-i;j++)

printf(" ");

for(j=1;j<=i;j++)

printf("%d",j);

for(j=i-1;j>0;j--)

printf("%d",j);

printf("\n");

}

system("pause");

}

追问

你好,能麻烦您给出详细的过程注解吗?可以追加悬赏

追答

#include
int main()
{
int n,i,j;
scanf("%d",&n); //输入层数
for(i=1;i0;j--) //输出后半部分的……21
printf("%d",j);
printf("\n"); //换一行
}
system("pause"); //暂停,便于看清
}

本回答被提问者采纳
第3个回答  2015-10-08
#include<stdio.h>
#include<stdlib.h>
#define N 5
#define KG (N-i)
#define ZF (i*2+1)
void main()
{
int i,j,k;
for ( i=0;i<N;i++ ) //打印N行
{
for ( j=0;j<KG;j++ ) printf(" "); //每行前的空格
for ( j=0;j<ZF;j++ ) printf("%d",i-abs(i-j)+1); //每行输出ZF个数,每个数的计算
printf("\n");
}
}追问

你好,能麻烦您给出详细的过程注解吗?可以追加悬赏

追答

这不是已经有注释了吗?还有什么方面看不懂的请再追问

请注意:

-外循环的次数N等于5,是因为你要求输出5行的金字塔,修改#define N 5的5成其他数字可输出你要求的行数,对应每行来说i的取值分别是0,1,2,3,4,内循环就通过使用这个i值来实现在不同行输出不同数

-内循环中的第1个j循环,解决每行前面的空格问题,第1行输出5个空格,因为第1行时i=0,用N-i可在i取值0~4时分别得到5,4,3,2,1,用这个N-i进行循环次数的控制就可以在第1行输出5个空格(执行printf(" ");语句5次),然后第2行4个,...

-数字前面的空格输出后,就要输出数字了,先关心每行输出的数字个数:1,3,5,7,9,这些数对应i=0,1,2,3,4来说用i来计算就是i*2+1,所以用这个式子控制printf的执行次数就可以控制得到输出相应的数字;

-再看数字内容,如果用printf("%d",j+1);得到的输出是

printf("%d",(i-j));得到

printf("%d",abs(i-j));得到(去掉负数)

观察一下用i值减掉上述表达式得到printf("%d",i-abs(i-j));

再在表达式上加1即可printf("%d",i-abs(i-j)+1);

所以这个输出是利用j和i进行计算凑出来的

-最后别忘了内循环最后每行都要输出换行printf("\n");

相似回答