解答私信@m0_63882080 // 2021-11-5 C语言 编写程序,输入一个n(2<=n<=7)值,输出如右所示的菱形图形(n=5)。

编写程序,输入一个n(2<=n<=7)值,输出如右所示的菱形图形(n=5)。

注意:此代码在win32控制台运行,在不同的IDE环境下,有部分可能需要变更。
IDE工具:Visual Studio 2010
                 Z
             Y      X
        W               V
   U                           T
S                                    R
   R                           Q
         P                O
              N      M
                   L

代码块:
方法一:(用双层循环控制结构)

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int i, j, k, n;
	char sign='Z';
	printf("Please enter n: ");
	scanf_s("%d", &n);
	while(n<2||n>7){
		printf("Error! Retry!\nPlease enter n: ");
		scanf_s("%d", &n);
	}
	for(i=0; i<n; i++){
		for(j=n-i-1; j>0; j--)
			printf(" ");
		printf("%c", sign--);
		if(i){
			for(k=0; k<2*i-1; k++)
				printf(" ");
			printf("%c", sign--);
		}
		printf("\n");
	}
	for(i=n-1; i>0; i--){
		for(j=0; j<n-i; j++)
			printf(" ");
		printf("%c", sign--);
		if(i!=1){
			for(k=0; k<2*i-3; k++)
				printf(" ");
			printf("%c", sign--);
		}
		printf("\n");
	}
	system("pause");
	return 0;
}

方法二:(用函数结构设计)

#include <stdio.h>
#include <stdlib.h>

void inputNum(int *num);
void outputGraphic(int *num);

int main()
{
	int *num=(int*)malloc(sizeof(int));
	inputNum(num);
	outputGraphic(num);
	free(num);
	system("pause");
	return 0;
}

void inputNum(int *num){
	printf("Please enter n: ");
	scanf_s("%d", num);
	while(*num<2||*num>7){
		printf("Error! Retry!\nPlease enter n: ");
		scanf_s("%d", num);
	}
}
void outputGraphic(int *num){
	int i, j, k;
	char sign='Z';
	for(i=0; i<*num; i++){
		for(j=*num-i-1; j>0; j--)
			printf(" ");
		printf("%c", sign--);
		if(i){
			for(k=0; k<2*i-1; k++)
				printf(" ");
			printf("%c", sign--);
		}
		printf("\n");
	}
	for(i=*num-1; i>0; i--){
		for(j=0; j<*num-i; j++)
			printf(" ");
		printf("%c", sign--);
		if(i!=1){
			for(k=0; k<2*i-3; k++)
				printf(" ");
			printf("%c", sign--);
		}
		printf("\n");
	}
}

方法三:(极简写法)

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int i, j, k, n, sign='Z';
	printf("Please enter n: ");
	scanf_s("%d", &n);
	while(n<2||n>7){
		printf("Error! Retry!\nPlease enter n: ");
		scanf_s("%d", &n);
	}
	for(i=0; i<n; printf("\n"), i++){
		for(j=n-i-1; j>0; printf(" "), j--);
		printf("%c", sign--);
		if(i==0) continue;
		for(k=0; k<2*i-1; printf(" "), k++);
		printf("%c", sign--);
	}
	for(i=n-1; i>0; printf("\n"), i--){
		for(j=0; j<n-i; printf(" "), j++);
		printf("%c", sign--);
		if(i==1) continue;
		for(k=0; k<2*i-3; printf(" "), k++);
		printf("%c", sign--);
	}
	system("pause");
	return 0;
}
上一篇:12. 整数转罗马数字


下一篇:IOS 某电商App签名算法解析(一) 还是套路