永发信息网

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;jif((abs(i)==n/2&&(j<3||j>n+1))||(abs(i)printf("*");
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");    
    }
}


  • 3楼网友:轻熟杀无赦
  • 2021-11-19 02:58
宽度=高度*2吗?如果输入3是什么图形?追问

这是3的 题目放的是5的

追答这个图中间是个叉子,上下两端的规则是怎样的?无论多高x的尖部都是横着的三颗星吗?追问上下对称都是三颗星 中间为2颗星追答#include
#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(" ");
  }
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯