大神帮帮忙,小白很慌张

编程利用循环打印如下字符图形:
12345678987654321
234567898765432
3456789876543
45678987654
567898765
6789876
78987
898
9
我的代码如下:
#include
void main()
{
int a,sum;
sum=1;
for(a=1;a<=9;a++)
{
sum=sum+1;
printf("%d",sum);
}
for(a=1;a<=8;a++)
{
sum=sum-1;
printf("%d\n",sum);
}
sum=2;
for(a=1;a<=8;a++)
{
sum=sum+1;
printf("%d",sum);
}
for(a=1;a<=7;a++)
{
sum=sum-1;
printf("%d\n",sum);
}
sum=3;
for(a=1;a<=7;a++)
{
sum=sum+1;
printf("%d",sum);
}
for(a=1;a<=6;a++)
{
sum=sum-1;
printf("%d\n",sum);
}
sum=4;
for(a=1;a<=6;a++)
{
sum=sum+1;
printf("%d",sum);
}
for(a=1;a<=5;a--)
{
sum=sum+1;
printf("%d\n",sum);
}
sum=5;
for(a=1;a<=5;a++)
{
sum=sum+1;
printf("%d",sum);
}
for(a=1;a<=4;a++)
{
sum=sum-1;
printf("%d\n",sum);
}
sum=6;
for(a=1;a<=4;a++)
{
sum=sum+1;
printf("%d",sum);
}
for(a=1;a<=3;a++)
{
sum=sum-1;
printf("%d\n",sum);
}
sum=7;
for(a=1;a<=3;a++)
{
sum=sum+1;
printf("%d",sum);
}
for(a=1;a<=2;a++)
{
sum=sum-1;
printf("%d\n",sum);
}
sum=8;
for(a=1;a<=2;a++)
{
sum=sum+1;
printf("%d",sum);
}
for(a=1;a<=1;a++)
{
sum=sum-1;
printf("%d\n",sum);
}
sum=9;
printf("%d",sum);
}

c

6个回答

这其实只要两层循环就可以了吧

include
include
int main()
{
char a="12345678987654321",*b=a;
for(int i=0;i<strlen(a)/2+1;i++)
{
for(int j=i;j<strlen(a)-i;j++)
{
printf("%c",a[j]);
}
printf("\n");
}
return 0;
}

levenloveyou
居朝阳谷而向北 回复levenloveyou: 掉个顺序。 也就是先打印。在赋值。 ...... .... ..
3 年多之前 回复
levenloveyou
居朝阳谷而向北 回复znevegiveup1: 第二个for循环的\n不应该在那,应该放到第二个for 循环的后面,也就是sum=2的前面,printf("\n"); 还有就是你可以把所有的for 循环里的打印语句和sum赋值语句掉个顺序,也就是先打印,在赋值。
3 年多之前 回复
levenloveyou
居朝阳谷而向北 回复znevegiveup1: 你sum的初始化错了。 按你的思路sum应等于0,否则你第一个for循环打出的第一个字是2。
3 年多之前 回复
levenloveyou
居朝阳谷而向北 回复znevegiveup1: 你sum的初始化错了。 按你的思路sum应等于0,否则你第一个for循环打出的第一个字是2。
3 年多之前 回复
znevegiveup1
白袍侠客 还有能不能指点一下我程序中的错误
3 年多之前 回复
znevegiveup1
白袍侠客 大师,我还没学数组,而且我没看懂你的思路,能不能介绍一下
3 年多之前 回复

2层循环即可,你写的有点复杂了。

建议再优化下,把复杂的事情简单化

你那代码根本就没经过认真分析后去构思写出来的,因此,心中无底显得慌张.
嵌套循环最内层的循环一定是循环完成后才跳到外循环,因此,
你可以让一个内循环从1到9打印后跳外循环增1,内循环打印2-9跳外循环增1,内循环打3-9......
for(int a=1;a {
for(int b=a;b if(b==9)for(int c=b;c>1;c--)printf("%d",c);
}
这样就够了,这是直接写的代码,未经调试,自己去调试。

这网站出问题了?代码怎么丢失?
你那代码根本就没经过认真分析后去构思写出来的,因此,心中无底显得慌张.
嵌套循环最内层的循环一定是循环完成后才跳到外循环,因此,
你可以让一个内循环从1到9打印后跳外循环增1,内循环打印2-9跳外循环增1,内循环打3-9......
for(int aa=1;aa {
for(int ab=aa; ab printf("%d",ab);
if(ab==9)
for(int ac=ab; ac>1;ac--)
printf("%d",ac);
}
这样就够了,这是直接写的代码,未经调试,自己去调试。

你那代码根本就没经过认真分析后去构思写出来的,因此,心中无底显得慌张.
嵌套循环最内层的循环一定是循环完成后才跳到外循环,因此,
你可以让一个内循环从1到9打印后跳外循环增1,内循环打印2-9跳外循环增1,内循环打3-9......
for(int a=1;a < 9; a++)
{
for(int b=a; b < 9; b++) printf("%d",ab);
if(b==9) for(int c=b; c>1; c--)printf("%d",c);
}
这样就够了,这是直接写的代码,未经调试,自己去调试。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐