1 条题解

  • 0
    @ 2024-12-18 14:07:27

    C :

    #include<stdio.h>
     int main()
     {
     	int n,i,j,a;
     	while(1)
     	{
     		scanf("%d",&n);
     		if (n%2==1&&n>=1&&n<=99)
     		{break;}
     	}
     	
     	for(i=1;i<=n/2+1;i++)
     	{
     		for(a=i;a<=n/2;a++)
     		{
     			printf(" ");
     		}
     		for(j=1;j<=2*(i-1)+1;j++)
     		{
     		printf("*");
     		}
     		printf("\n");
     	}
     	i-=2;
     	for(;i>0;i--)
     	{
     		for(a=i;a<=n/2;a++)
     		{
     			printf(" ");
     		}
     		for(j=1;j<=2*(i-1)+1;j++)
     		{
     		printf("*");
     		}
     		printf("\n");
     	}
     	
     	return 0;
     }
    

    C++ :

    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    int main()
    {
        int n;
        cin >> n;
        int cx = n / 2, cy = n / 2; // 求出曼哈顿公式中的x1,y1
        for (int i = 0; i < n; i ++ )
        {
            for (int j = 0; j < n; j ++ )
                if (abs(i - cx) + abs(j - cy) <= n / 2) cout << '*'; 
                // <=号前面的值就是这个点和中心的曼哈顿距离,如果他小于n/2,则可以输出
                else cout << ' '; // 不可以输出补空格
            cout << endl;
        }
    
        return 0;
    }
    
    • 1

    信息

    ID
    626
    时间
    1000ms
    内存
    128MiB
    难度
    5
    标签
    提交数
    74
    已通过
    28
    上传者