C语言图形跑出X
答案:4 悬赏:0 手机版
解决时间 2021-11-19 19:24
- 提问者网友:相思似海深
- 2021-11-19 00:35
C语言图形跑出X
最佳答案
- 五星知识达人网友:野慌
- 2021-11-19 01:26
本题斜方向的*号按直角坐标系中直线方程考虑就很简单了,算法用一条语句就够了,而且这种算法执行效率高。
#include
#include
void main()
{
int i,j,n;
printf("输入不小于3的奇数: ");
scanf("%d",&n);
if(n<3||n%2==0)
printf("
输入错误!");
else
{
for(i=n/2;i>=-n/2;i--)
{
printf("
");
for(j=0;j if((abs(i)==n/2&&(j<3||j>n+1))||(abs(i) printf("*");
else printf(" ");
}
}
}
#include
#include
void main()
{
int i,j,n;
printf("输入不小于3的奇数: ");
scanf("%d",&n);
if(n<3||n%2==0)
printf("
输入错误!");
else
{
for(i=n/2;i>=-n/2;i--)
{
printf("
");
for(j=0;j
else printf(" ");
}
}
}
全部回答
- 1楼网友:逃夭
- 2021-11-19 04:55
#includeintmain(){inti,j,n;scanf("%d",&n);for(i=0;i追问不好意思回答不见了不好意思回答不见了
- 2楼网友:一秋
- 2021-11-19 03:45
望采纳
#include
#include
void c(void)//清空缓冲函数
{
char ch;
while((ch=getchar())!=' '&&ch!=EOF);
}
int main()
{
int m,n,j,i,l;//m数组行数,n数组列数,i,j下标,l数组行数的一半,用作上下两边处理
int **arry;
while(1)
{
m=n=j=i=l=0;
arry=(int **)0;
printf("输入奇数高度:(大于等于3)");
scanf("%d",&m);
c();
if(m<3)//出错处理
{
printf("输入错误! ");
continue;
}
else if(m%2==0)
{
printf("偶数错误! ");
continue;
}
l=m/2+1;
n=4+2*l;//列数
arry=(int **)malloc(m*sizeof(int *));//建立动态二维数组,静态数组因为不能动态变化大小所以不能用
for(i=0;i {
arry[i]=(int *)calloc(n,sizeof(int));
}
j=n-1;//给数组赋值,上下两边处理,1的为×,0为空格
i=0;//第一行
arry[i][0]=1;
arry[i][1]=1;
arry[i][2]=1;
arry[i][j]=1;
arry[i][j-1]=1;
arry[i][j-2]=1;
i=m-1;//最后一行
arry[i][0]=1;
arry[i][1]=1;
arry[i][2]=1;
arry[i][j]=1;
arry[i][j-1]=1;
arry[i][j-2]=1;
for(i=1,j=n-1;i {
arry[i][2+i]=1;
arry[i][j-2-i]=1;
}
for(i=l,j=n/2-1;i {
arry[i][j-(i-l+1)]=1;
arry[i][j+1+(i-l+1)]=1;
}
for(i=0;i {
for(j=0;j {
if(arry[i][j]==0)
printf(" ");
else
printf("*");
}
printf(" ");
}
for(i=0;i {
free(arry[i]);
}
free(arry);
getchar();
system("clear");
}
}
#include
#include
void c(void)//清空缓冲函数
{
char ch;
while((ch=getchar())!=' '&&ch!=EOF);
}
int main()
{
int m,n,j,i,l;//m数组行数,n数组列数,i,j下标,l数组行数的一半,用作上下两边处理
int **arry;
while(1)
{
m=n=j=i=l=0;
arry=(int **)0;
printf("输入奇数高度:(大于等于3)");
scanf("%d",&m);
c();
if(m<3)//出错处理
{
printf("输入错误! ");
continue;
}
else if(m%2==0)
{
printf("偶数错误! ");
continue;
}
l=m/2+1;
n=4+2*l;//列数
arry=(int **)malloc(m*sizeof(int *));//建立动态二维数组,静态数组因为不能动态变化大小所以不能用
for(i=0;i
arry[i]=(int *)calloc(n,sizeof(int));
}
j=n-1;//给数组赋值,上下两边处理,1的为×,0为空格
i=0;//第一行
arry[i][0]=1;
arry[i][1]=1;
arry[i][2]=1;
arry[i][j]=1;
arry[i][j-1]=1;
arry[i][j-2]=1;
i=m-1;//最后一行
arry[i][0]=1;
arry[i][1]=1;
arry[i][2]=1;
arry[i][j]=1;
arry[i][j-1]=1;
arry[i][j-2]=1;
for(i=1,j=n-1;i
arry[i][2+i]=1;
arry[i][j-2-i]=1;
}
for(i=l,j=n/2-1;i
arry[i][j-(i-l+1)]=1;
arry[i][j+1+(i-l+1)]=1;
}
for(i=0;i
for(j=0;j
if(arry[i][j]==0)
printf(" ");
else
printf("*");
}
printf(" ");
}
for(i=0;i
free(arry[i]);
}
free(arry);
getchar();
system("clear");
}
}
- 3楼网友:轻熟杀无赦
- 2021-11-19 02:58
宽度=高度*2吗?如果输入3是什么图形?追问
#include
void main() { int n,i,j,k; char c;
scanf("%d",&n);
for ( i=0;i c=( i==0 || i==n-1 )?('*'):(' '); k=n/2-abs(n/2-i);
for ( j=0;j<2;j++ ) printf("%c",c);
for ( j=0;j printf("*");
for ( j=0;j<(n/2-k)*2;j++ ) printf(" ");
printf("*");
for ( j=0;j<2;j++ ) printf("%c",c);
printf(" ");
}
}
这是3的 题目放的是5的
追答这个图中间是个叉子,上下两端的规则是怎样的?无论多高x的尖部都是横着的三颗星吗?追问上下对称都是三颗星 中间为2颗星追答#include#include
void main() { int n,i,j,k; char c;
scanf("%d",&n);
for ( i=0;i
for ( j=0;j<2;j++ ) printf("%c",c);
for ( j=0;j
for ( j=0;j<(n/2-k)*2;j++ ) printf(" ");
printf("*");
for ( j=0;j<2;j++ ) printf("%c",c);
printf(" ");
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯