C语言输出数字菱形

如下图,用for循环实现,大神帮我啊,7年前C语言学得就不怎么样,结果现在去上个培训班,第一周就要写出这样的程序,头大啊。还有就是,我偶尔想了半天,能写出来,但是第二天,... 如下图,用for循环实现,

大神帮我啊,7年前C语言学得就不怎么样,结果现在去上个培训班,第一周就要写出这样的程序,头大啊。
还有就是,我偶尔想了半天,能写出来,但是第二天,又完全没了思路,写不出来了,有经验的给点建议啊。是因为刚接触,程序写的少,还是本身人的逻辑思维能力有问题;还有就是,我学得是iOS开发,后期对这种循环套循环的程序用得多吗??
谢谢大家了。
我写了一个,数字一旦超过10 ,就会出现问题,什么原因啊?
展开
 我来答
听不清啊
高粉答主

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

#include <stdio.h>
#include <math.h>
int main()
{int n,i,j;
 scanf("%d",&n);
 printf("%*d\n",n,n);
 for(i=2-n;i<n-1;i++)
 {if(i)printf("%*c",abs(i),' ');
  for(j=n;j>1+abs(i);j--)
    printf("%d",j);
  for(;j<=n;j++)
    printf("%d",j);
  printf("\n");
 }  
 if(n>1)printf("%*d\n",n,n);
 return 0;
}
IT孤鹜
2014-05-11 · TA获得超过4197个赞
知道大有可为答主
回答量:3960
采纳率:71%
帮助的人:3499万
展开全部

培训机构果然是坑爹的。。。。



晕。。。你是上培训班,还是教培训班的???

#include<stdio.h>
void main()
{
    int n,i,j;
    n=10;
    for(i =1;i<= n;i++)
    {
        for(j=n-i;j>=1;j--)
            printf(" ");
        for(j=1;j<=2*i-1;j++)
            if(j<=i)
            printf("%d",n-i+j);
            else 
            printf("%d",n+i-j);
        printf("\n");
    }
    for(i = 1;i < n;i++)
    {
        for(j=1;j<=i;j++)
            printf(" ");
        for(j=1;j<=2*(n-i)-1;j++)
            if(j<=n-i)
            printf("%d",i+j);
            else
            printf("%d",2*n-i-j);
        printf("\n");
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风_扬起思念
2014-05-12
知道答主
回答量:15
采纳率:0%
帮助的人:8.4万
展开全部
#include<stdio.h>
void main(){
int i,j,n;
printf("请输入菱形的长度数字:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n-i;j++)
printf(" ");
for(j=i;j>=0;j--)
printf("%d",n-j);
for(j=0;j<i;j++)
printf("%d",n-j-1);
printf("\n");
}
for(i=0;i<n-1;i++)
{
for(j=0;j<=i+1;j++)
printf(" ");
for(j=n;j>i+1;j--)
printf("%d",n-j+i+2);
for(j=0;j<n-i-2;j++)
printf("%d",n-j-1);
printf("\n");
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdyzxy
推荐于2017-12-16 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:84%
帮助的人:3569万
展开全部
#include<stdio.h>
#include<stdlib.h>
#define N n
#define M (N/2)
#define KG abs(i-M) //每行空格数
#define XH ((M-abs(i-M))*2+1) //每行字符数
#define ZF XH/2-abs(j-XH/2)
#define FH ZF+KG+'1'
int _tmain(int argc, _TCHAR* argv[])
{
int i,j,n;
printf("请输入行数:"); scanf("%d",&n);
for ( i=0;i<N;i++ )
{ for ( j=0;j<KG;j++ ) printf(" ");
for ( j=0;j<XH;j++ ) printf("%c",FH);
printf("\n");
}
}
这是数字图案,把#define FH ZF+KG+'1'改成#define FH ZF+KG+'A'就是下面那个字符图案
这个程序的关键是总结行号、列号与每行字符数、空格数和具体字符之间的关系,总结出来了,图案就出来了。这是个数学问题而与编程技巧没有太大关系,所以你看到,程序极简单,只要控制几个循环结束条件即可。
比如:
在总行数为11行时,i循环变量取值分别为:0,1,2,...,10
而每行输出的字符数为:1,3,5,7,9,11,9,7,5,3,1
能否根据总行数n和当前的i值计算出当i=0时字符数等于1,i=1时字符数等于3,...
当用i来表示这个值时,会得到逐渐增多的字符数:0,1,2,3,...,10
改成|n/2-i|时,序列为5,4,3,2,1,0,1,2,3,4,5
n/2-|n/2-i|:0,1,2,3,4,5,4,3,2,1,0
(n/2-|n/2-i|)*2+1:1,3,5,7,9,11,9,7,5,3,1这就是我们要得到的序列,其中只用到了总函数n和当前行号i做计算
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
督诺0GMffd
2008-11-17 · TA获得超过2013个赞
知道大有可为答主
回答量:3770
采纳率:0%
帮助的人:2040万
展开全部
#include<iostream.h>
int main()
{
cout<<"*"<<endl;
cout<<"* *"<<endl;
cout<<"* * * *"<<endl;
cout<<"* * * * * *"<<endl;
cout<<"* * * *"<<endl;
couot<<"* *"<<endl;
cout<<"*"<<endl;
return 0;
}//已经运行过了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式