循环-空心梯形

【题】

空心梯形

成绩 5 开启时间 2012年10月24日 星期三 12:00
折扣 0.8 折扣时间 2012年11月4日 星期日 23:55
允许迟交 关闭时间 2012年11月7日 星期三 00:00

输入行数 n 和首数字字符,在屏幕上输出由数字围起的高和下底宽度均 n 的空心梯形。 要求:输出的数字是循环的,即输出数字 9 后再输出的数字是 0。

输入:
  行数n 和首字符

输出:
    空心梯形

  测试输入关于“测试输入”的帮助 期待的输出关于“期待的输出”的帮助 时间限制关于“时间限制”的帮助 内存限制关于“内存限制”的帮助 额外进程关于“{$a} 个额外进程”的帮助
测试用例 1 以文本方式显示
  1. 5 5↵
以文本方式显示
  1. 5 6 7 8 9 0 1 0 9 8 7 6 5↵
  2.   6                   6↵
  3.     7               7↵
  4.       8           8↵
  5.         9 0 1 0 9↵
无限制 64M 0
测试用例 2 以文本方式显示
  1. 1 0↵
以文本方式显示
  1. 0↵
无限制 64M 0
测试用例 3 以文本方式显示
  1. 2 9↵
以文本方式显示
  1. 9 0 0 9↵
  2.   0 0↵
无限制 64M 0
【代码】
        写得比较匆忙,凑合着看吧。。。
#include "stdio.h"

int main()
{
	int i, j, k, n, num, temp_num;
	scanf("%d %d", &n, &num);
	getchar();
	
	num = num % 10;
	int width = n*2 + n-2;  //宽度,字符数
	
	for (i = 1; i <= n; i++)
	{
		//前面空格部分
		for (j = 1; j <= (i-1)*2; j++)
		{
			printf(" ");
		}
		//第一行,一个字符
		if (i == 1)
		{
			temp_num = num;
			for (k = 1; k <= width; k++)
			{
				printf("%d ", temp_num);
				if (k <= width/2)			
					temp_num = (temp_num+1)%10;
				else
					temp_num = (temp_num+10-1) % 10;
				if (n % 2 == 0 && k == width / 2)   //中间的处理
				{
					temp_num = (temp_num+10-1) % 10;
				}
			}
			printf("\n");
			num = (num+1)%10;
			width -= 2;
			continue;
		}
		//最后一行
		else if (i == n)
		{
			temp_num = num;
			for (k = 1; k <= n; k++)
			{
				printf("%d ", temp_num);
				if (k <= n/2)			
					temp_num = (temp_num+1)%10;
				else
					temp_num = (temp_num+10-1) % 10;
				if (n % 2 == 0 && k == n / 2)
				{
					temp_num = (temp_num+10-1) % 10;
				}
			}
			printf("\n");
			break;
		}
		
		//左边字符
		printf("%d", num);

		//中间空格
		for (k = 1; k <= 2*width-3; k++)
		{
			printf(" ");
		}

		//右边字符
		printf("%d\n", num);
		
		num = (num+1)%10;
		width -= 2;
	}

    return 0; 
}





  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值