C语言输出数字菱形
如下图,用for循环实现,大神帮我啊,7年前C语言学得就不怎么样,结果现在去上个培训班,第一周就要写出这样的程序,头大啊。还有就是,我偶尔想了半天,能写出来,但是第二天,...
如下图,用for循环实现,
大神帮我啊,7年前C语言学得就不怎么样,结果现在去上个培训班,第一周就要写出这样的程序,头大啊。
还有就是,我偶尔想了半天,能写出来,但是第二天,又完全没了思路,写不出来了,有经验的给点建议啊。是因为刚接触,程序写的少,还是本身人的逻辑思维能力有问题;还有就是,我学得是iOS开发,后期对这种循环套循环的程序用得多吗??
谢谢大家了。
我写了一个,数字一旦超过10 ,就会出现问题,什么原因啊? 展开
大神帮我啊,7年前C语言学得就不怎么样,结果现在去上个培训班,第一周就要写出这样的程序,头大啊。
还有就是,我偶尔想了半天,能写出来,但是第二天,又完全没了思路,写不出来了,有经验的给点建议啊。是因为刚接触,程序写的少,还是本身人的逻辑思维能力有问题;还有就是,我学得是iOS开发,后期对这种循环套循环的程序用得多吗??
谢谢大家了。
我写了一个,数字一旦超过10 ,就会出现问题,什么原因啊? 展开
7个回答
展开全部
培训机构果然是坑爹的。。。。
晕。。。你是上培训班,还是教培训班的???
#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");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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");
}
}
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");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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做计算
#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做计算
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream.h>
int main()
{
cout<<"*"<<endl;
cout<<"* *"<<endl;
cout<<"* * * *"<<endl;
cout<<"* * * * * *"<<endl;
cout<<"* * * *"<<endl;
couot<<"* *"<<endl;
cout<<"*"<<endl;
return 0;
}//已经运行过了。
int main()
{
cout<<"*"<<endl;
cout<<"* *"<<endl;
cout<<"* * * *"<<endl;
cout<<"* * * * * *"<<endl;
cout<<"* * * *"<<endl;
couot<<"* *"<<endl;
cout<<"*"<<endl;
return 0;
}//已经运行过了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询