出力ダイヤモンドパターンC言語とPythonの実装

トピック:

  • 要件、ひし形の幅nを入力します。これは、最も広い場所の*の数を表します。たとえば、次のではn = 7です
    ここに画像の説明を挿入

C言語の実装

  • スキル:
  • (1)ひし形(上図のように)を上三角に分割し、逆三角形を実現します。
  • (2)出力スペース法の各行にアスタリスク*が付いていることがわかりました。
#include<stdio.h>
int main()
{
    
    
	int n, m, c, i;
	printf("请输入*号的个数,代表菱形宽度:\n");
	scanf("%d", &n);
	//打印上三角形
	for(i=1; i<= (n + 1)/2; i++)
	{
    
    
		// 打印空格
		for(m=1; m<= (n + 1)/2 - i; m++)
		{
    
    
			printf(" ");
		}
		// 打印 *, 这里 *的个数 和行数是有关系的, 第i行就有  2*(i-1)+1 个 *
		for(c=1; c<=2*(i-1)+1; c++)
		{
    
    
			printf("*");
		}
		printf("\n");
	}

	// 下面再来一个循环,打印倒三角, 上三角和倒三角拼成一个 菱形
	for(i=1; i<(n/2 + 1); i++)
	{
    
    
		// 打印空格
		for(c=1; c<=i; c++)
		{
    
    
			printf(" ");
		}
		// 打印*号, 这里加入打印7个宽的菱形,这里倒三角是(表示*数) 5,3,1  ,所以 (n+1)/2 - i) 表示倒着的行号 3, 2, 1, 在利用 (行号*2 -1)的行数计算。
		for(m=1; m<=((n+1)/2 - i) * 2 -1; m++)
		{
    
    
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

Pythonの実装

  • 記述は少し面倒ですが、それはまさにそのようなことです。C言語の実装を参照してください。内部のロジックは変更されておらず、コピーしただけです。言語が違うだけで、実装時のコードも違います。
n = int(input("请输入菱形的宽度:"))
# 打印上三角
for i in range(1, int((n + 1)/2) + 1):
    print(" "*int(((n + 1)/2 - i)) , "*"*(2*(i-1)+1))

for i in range(1, int((n + 1)/2)):
    print(" "*i , "*"*((int((n+1)/2) - i) * 2 - 1))

# 1. 利用python字符串可以用 乘法运算符,省去两个for循环
# 2. 得到的结果是 浮点类型~,需要转换为int类型
print(type(5/3))
# 3. 另外需要注意的是,连个字符串用 , 连接,不能使用 + , 加号会使 第一个 空格没有

おすすめ

転載: blog.csdn.net/pythonstrat/article/details/112743240