【题】
空心梯形
成绩 | 5 | 开启时间 | 2012年10月24日 星期三 12:00 |
折扣 | 0.8 | 折扣时间 | 2012年11月4日 星期日 23:55 |
允许迟交 | 否 | 关闭时间 | 2012年11月7日 星期三 00:00 |
输入行数 n 和首数字字符,在屏幕上输出由数字围起的高和下底宽度均 n 的空心梯形。 要求:输出的数字是循环的,即输出数字 9 后再输出的数字是 0。
输入:
行数n 和首字符
输出:
空心梯形
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
---|---|---|---|---|---|
测试用例 1 | 以文本方式显示
| 以文本方式显示
| 无限制 | 64M | 0 |
测试用例 2 | 以文本方式显示
| 以文本方式显示
| 无限制 | 64M | 0 |
测试用例 3 | 以文本方式显示
| 以文本方式显示
| 无限制 | 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;
}