c语言问题:如何编写一个程序,输入一个正整数N,在屏幕上用‘*’打印以N为边长的正六边形。
3个回答
展开全部
a ?
正六边形 你们老师学过数学么?
你可以告诉他 在数学上实现不了这个算法,因为会出现非整数无法在屏幕上实现。
支持楼上的说法,但有一点需要修正,控制台如果用星号的话应该大于45度 因为字符的纵横比不是正方形的,但是绝对到不了120度
我只能做一个类似六边形。不是很正的
#include "stdafx.h"
#include "math.h"
main()
{
int n,cont,cont2,conts;
scanf("%d",&n);
for(cont = 1;cont < 2*n ; cont++)
{
for(cont2=1;cont2<= abs(n-cont);cont2++)
putchar(' ');
for(cont2=1;cont2< 2*n-abs(n-cont);cont2++)
{
printf("* ");
}
putchar('\n');
}
getchar();getchar()
}
正六边形 你们老师学过数学么?
你可以告诉他 在数学上实现不了这个算法,因为会出现非整数无法在屏幕上实现。
支持楼上的说法,但有一点需要修正,控制台如果用星号的话应该大于45度 因为字符的纵横比不是正方形的,但是绝对到不了120度
我只能做一个类似六边形。不是很正的
#include "stdafx.h"
#include "math.h"
main()
{
int n,cont,cont2,conts;
scanf("%d",&n);
for(cont = 1;cont < 2*n ; cont++)
{
for(cont2=1;cont2<= abs(n-cont);cont2++)
putchar(' ');
for(cont2=1;cont2< 2*n-abs(n-cont);cont2++)
{
printf("* ");
}
putchar('\n');
}
getchar();getchar()
}
展开全部
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define ERROR 0
int main(void)
{
int i=0,n=0,j=0,from=0,midi=0,midj=0,endj=0,endi=0;
char a[300][300];
printf("请正六边形的边长(像素单位):\n");
while((scanf("%d",&n))!=ERROR)
{
from=n;
midj=2*n;
midi=n;
endj=3*n;
endi=2*n;
for(i=0;i<=endi;i++)
for(j=0;j<=endj;j++)
a[i][j]=' ';
for(j=from,i=0;j<midj;j++)
a[i][j]='*';
for(j=from,i=endi;j<midj;j++)
a[i][j]='*';
for(j=0,i=midi;i>=0;j++,i--)
a[i][j]='*';
for(j=0,i=midi;i<=endi;j++,i++)
a[i][j]='*';
for(j=endj,i=midi;i>=0;j--,i--)
a[i][j]='*';
for(j=endj,i=midi;i<=endi;j--,i++)
a[i][j]='*';
a[endj][midi]='*';
for(i=0;i<=endi;i++)
{
for(j=0;j<=endj;j++)
printf("%3c",a[i][j]);
printf("\n");
}
printf("是否输入其他尺寸(像素单位)的正六边形(end to q)\n");
}
return 0;
}
这个打印出来和你的效果可能有点不一样,帮我看看哪里还能改进的,感觉这样太繁琐了。一条边一个for语句。
#include<math.h>
#include<stdlib.h>
#define ERROR 0
int main(void)
{
int i=0,n=0,j=0,from=0,midi=0,midj=0,endj=0,endi=0;
char a[300][300];
printf("请正六边形的边长(像素单位):\n");
while((scanf("%d",&n))!=ERROR)
{
from=n;
midj=2*n;
midi=n;
endj=3*n;
endi=2*n;
for(i=0;i<=endi;i++)
for(j=0;j<=endj;j++)
a[i][j]=' ';
for(j=from,i=0;j<midj;j++)
a[i][j]='*';
for(j=from,i=endi;j<midj;j++)
a[i][j]='*';
for(j=0,i=midi;i>=0;j++,i--)
a[i][j]='*';
for(j=0,i=midi;i<=endi;j++,i++)
a[i][j]='*';
for(j=endj,i=midi;i>=0;j--,i--)
a[i][j]='*';
for(j=endj,i=midi;i<=endi;j--,i++)
a[i][j]='*';
a[endj][midi]='*';
for(i=0;i<=endi;i++)
{
for(j=0;j<=endj;j++)
printf("%3c",a[i][j]);
printf("\n");
}
printf("是否输入其他尺寸(像素单位)的正六边形(end to q)\n");
}
return 0;
}
这个打印出来和你的效果可能有点不一样,帮我看看哪里还能改进的,感觉这样太繁琐了。一条边一个for语句。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
做不到,正六边形内角为120度,控制台模式下只能显示45度.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询