C语言 :打印数字菱形

输入n值,输出如下例(n=4)所示的数字菱形。4434432344321234432344344输入:n输出:数字菱形#include<stdio.h>intmain()... 输入 n 值,输出如下例( n=4 )所示的数字菱形。
4
434
43234
4321234
43234
434
4
输入: n
输出: 数字菱形

#include <stdio.h>
int main()
{
int n,i=1,a=0,k,m,w=0;
scanf("%d",&n);
for (i=1;i<=n;i++)
{ k=1,m=n,w=0;
for (k=1;k<=n-i;k++)
printf(" ");
for (m=n; ; m--)
{ if (i=1) {printf("%d",n);break;}
if (m>n-i+1) {printf("%2d",m);w++;}
else if (m=n-i+1)
{for (m=n-i+1;m<=n;m++)
{printf("%2d",m);
w++;}
}
if (w>=2*i-1) break;
}
printf("\n");
}
if (i>n)
{
i=2*n-i;
for (i=1;i<=n;i--)
{ k=1,m=n,w=0;
for (k=1;k<=n-i;k++)
printf(" ");
for (m=n; ; m--)
{ if (i=1) printf("%d",n);break;
if (m>n-i+1) {printf("%2d",m);w++;}
else if (m=n-i+1)
{for (m=n-i+1;m<=n;m++)
{printf("%2d",m);
w++;}
}
if (w>=(2*i-1)) break;
}
printf("\n");
}
}
return 0;
}

求助~~哪里错了?
C语言菜鸟,谢谢各位帮忙啊
展开
 我来答
roaming_sheep
推荐于2017-12-15 · TA获得超过699个赞
知道小有建树答主
回答量:589
采纳率:0%
帮助的人:695万
展开全部
//你这个写得太麻烦了,也没有注释说一下各个变量做什么用,看的头疼。
//写个简单的吧

#include <stdio.h>
#include <math.h>

int main()
{
int n=4;
int i, j;
for(i=0;i<n*2;++i)
{
for(j=0;j<n*2;++j)
putchar(abs(i-(n-1))+abs(j-(n-1))+1>n ? ' ' : '0'+abs(i-(n-1))+abs(j-(n-1))+1);
printf("\n");
}
}
追问
(⊙o⊙)…把它改成任意n的怎么不对。。。abs是神马。。虽然没懂哈不过谢谢了!!!!
追答
忘了告诉你了,n的范围只支持1-9.
更大的n需要修改一下输出的的地方。

基本思想是:你好好观察一下,打印数字的规律是什么?
答案很简单,每个格子到中心点的距离+1,如果超过4就打印空格。
abs是取绝对值的函数。
---------------------------------
//这个可以支持10以上的n,但就麻烦多了,不够简洁

#include
#include

int main()
{
int n; //最大要打印的数字
int m; //n是几位数
int m2; //打印每个格子数字的时候,计算数字是几位
int l; //每个点到中心的距离
int i, j, k;

scanf("%d",&n); //输入n

m=0;
for(i=n;i>0;i/=10) //计算n有几位
++m;

printf("\n");
for(i=0;in)
// 到中心点距离>n,输出空格
for(k=0;k0;k/=10) //计算l有几位
++m2;
for(k=m-m2;k>0;--k) printf(" "); //输出一堆空格,结果看起来才整齐
// 输出距离l
printf("%d", l);
}
printf(" "); // 数字之间的空格
}
printf("\n"); //输出完一行,换行
}

return 0;
}
645256167leg
2012-03-22 · 超过50用户采纳过TA的回答
知道答主
回答量:176
采纳率:0%
帮助的人:162万
展开全部
for (m=n; ; m--)这儿不会出现死循环吗?
追问
啊是的。。。把for (m=n-i+1;m<=n;m++)改成m--可以么?但是好像前面就开始有问题了,我把后面删去只想输出上半个菱形,但是i<=n的时候已经是死循环了,可我又没找到哪里错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sf4000
2012-03-22 · TA获得超过163个赞
知道答主
回答量:117
采纳率:0%
帮助的人:73.2万
展开全部
简单看了下,if语句里面判断是否相等应该是两个=.
追问
啊谢谢了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式