菱形输出

问题描述 :
明明这次又碰到问题了:
给定一个正整数N,明明的爸爸让他输出一个以Z开始的菱形,以后依次为Y,X…,
比如当N等于1的时候输出图形:
Z

当N等于2的时候,输出图形:(Y前没有空格,Z、X和W前一个空格)
Z
Y X
W

当N等于3的时候,输出图形:
Z
Y X
W V
U T
S

明明发现当N很大的时候就不是很容易了,所以找到了你,希望你编写一个程序帮助他
明明的问题可以归结为:输入一个正整数N,输出一个以Z开始的菱形,以后依次为Y,X…。

输入说明 :
你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据仅占一行,每行仅包括一个正整数n(1≤n≤7)。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。

输出说明 :
对于每一组测试数据,你写的程序要求计算出一组相应的运算结果,并将这一组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组输出一个以Z开始的菱形,具体格式参照样例输出。每组运算结果与其后一组运算结果之间有一个空行,最后一组运算结果之后没有空行。 注:通常,显示屏为标准输出设备。

输入范例 :
1
3

输出范例 :
Z

Z
Y X
W V
U T
S


#include<stdio.h>
/**
1到n行
前面输出n-i个空格,之后第当j==1个或第j==2*i-1个输出字符 

n+1到2*n-1行
也就是1到2*n-1-n行 
从第1行开始,每行前面输出i个空格,此后每行输出的字符加空格个数为2*n-1-(2*i+1)+1个 
*/

void print(int n); 
char s[26];

int main(void){
	int n;
	for(int i=0;i<26;i++){
		s[i]='Z'-i;
	}
	while(scanf("%d",&n)!=EOF){
		print(n);
	}
	
	return 0;
}


void print(int n){
	int i,j,k=0;
	//1到n行 
	for(i=1;i<=n;i++){
		//输出每行前面的空格
		for(j=1;j<=n-i;j++){
			printf(" ");
		} 
		
		//输出每行空格之后的内容
		for(j=1;j<=2*i-1;j++){
			if(j==1||j==2*i-1){
				printf("%c",s[k++]);
			}
			else{
				printf(" ");
			}
		}
		printf("\n"); 
	}
	
	//n+1行到2*n-1行
	int num=2*n-1;
	for(i=1;i<=num-n;i++){
		for(j=1;j<=i;j++){
			printf(" ");
		}
		
		for(j=num;j>=2*i+1;j--){
				if(j==num||j==2*i+1){
				printf("%c",s[k++]);
			}
			else{
				printf(" ");
			}
		}
		printf("\n"); 
		
	} 
	printf("\n"); 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值