我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

XTU-创新互联

按照给定小菱形的数量n,利用字符打印菱形,要求

成都创新互联公司主要从事成都网站设计、成都做网站、外贸网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务泰安,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
  1. 只使用/\,空格,回车四种字符。
  2. 行首无多余的空格,行末无空格。
  3. 菱形从上到下,从左到右,依次编码,从1到n,不要输出多余的菱形。
  4. 边长为a的大菱形,最少有(a−1)2+1个小菱形,最多有a2个小菱形。

具体格式见样例。

比如边长为3的菱形,最少有5个小菱形(左边的情况),最多有9个小菱形(右边的情况)。

/\      /\
  /\/\    /\/\
 /\/\/   /\/\/\
 \/\/    \/\/\/
          \/\/
           \/

对应的编号分别为

1     1
 2 3   2 3
4 5   4 5 6
       7 8
        9
输入格式

存在多个样例,每个样例是一个整数n(1≤n≤100)。如果n为0,表示输入结束,这个样例不需要处理。

输出格式

依次按要求输出对应数量的菱形。

样例输入
1
2
3
4
5
6
7
0
样例输出
/\
\/
 /\
/\/
\/
 /\
/\/\
\/\/
 /\
/\/\
\/\/
 \/
  /\
 /\/\
/\/\/
\/\/
  /\
 /\/\
/\/\/\
\/\/\/
  /\
 /\/\
/\/\/\
\/\/\/
 \/
代码:
#include#includeint main(){
	int n = 1;
	while(n!=0){
		scanf("%d",&n);
		if(n==0) break;
		int a = ceil(sqrt((float)n));
		int head = a;
		int last = a;
		int count = 0;
		int up = (a*a-a)/2+a;
		
		
		for(int x = 0;x< a;x++){
			for(int y = 1;y< last||y == last;y++){
				if(y< head) printf(" ");
				else{
					if((y-head)%2==0){
						printf("/");
						printf("\\");
						count=count+1;
						if(count == n) break;
						y++;
					}
				}
			}
			head = head-1;
			last = last+1;
			if(x != a-1) printf("\n");
			
			if(x == a-1){
				if(countup){
		printf("\n");
		count = up;
		for(int x = 0;x< a-1;x++){
			head = head+1;
			last = last-1;
			for(int y = 0;y
运行结果:

思路:

于是再次进行题目分析:

  首先菱形可以分为上半部分up和下半部分down,经过计算,我们可以得到

up=(a^2-a)/2+a

down=(a^2-a)/2

  画菱形无非三种情况:

  1. 一种是画到上半部分的最后一层的中间,上层画不满:如N=5的情况;
  2. 上层刚好画满,如N=6;
  3. 画完上层还不够,画到下层,如N=7;

所以上层一定会画到最后一层,我们只需要把上层的最后一层根据最后一层所画的结点数去补一个/

——>如果是情况1则在最后补一个/,然后换行

——>如果是情况2则不需要补,直接换行

记录下最后一层所画的节点数count=count-(a^2-a)/2+a

换行之后,因为最后一层只缺\/了,画count个\/即可

至此为止,上半部分就画好了

下半部分我们经过分析,发现直接在节点处画\/即可

注意每好一个节点需判断画好的节点数是否等于n,等于则结束循环直接输出,不等于则下一步;

画节点的算法:

  1、将菱形分为上界和下界,上界a层,下界a-1层

  2、两层for循环:

  第一层for循环遍历层数

  第二层for遍历打印每一层的数据

  对每一层又根据第一个节点head和最后一个节点last划分区域

  当当前位置在head之前,打印空格,当当前位置与head的差值为2的倍数时,打印/\,计数点跳过\往前走一步;

  内层循环结束后换行;

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站栏目:XTU-创新互联
文章来源:http://shouzuofang.com/article/pcdjs.html