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

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

1
121
12321
1234321
123454321
展开
 我来答
刺友互
高粉答主

2019-07-20 · 每个回答都超有意思的
知道答主
回答量:3979
采纳率:100%
帮助的人:69.6万
展开全部

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


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

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

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

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

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


enjoy冰心玉壶
2015-10-08 · TA获得超过798个赞
知道小有建树答主
回答量:224
采纳率:100%
帮助的人:98.4万
展开全部

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

#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。最后输出一行结束后再换行就可以了。如果你具体哪个语句看不懂,可以再问我。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

推荐于2017-09-12 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

#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"); //暂停,便于看清
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdyzxy
2015-10-08 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:84%
帮助的人:3673万
展开全部
#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");

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式