【NYOJ】[v1-463]九九乘法表

文章字数:673

问题描述

九九乘法表
时间限制:1000 ms内存限制:64 MB

描述

小时候学过的九九乘法表也许将会扎根于我们一生的记忆,现在让我们重温那些温暖的记忆,请编程输出九九乘法表

现在要求你输出它的格式与平常的不同啊!是那种反过来的三角形啦,具体如下图:

1
2
3
4
5
6
7
8
9
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 
2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 
3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 
4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 
5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 
6*6=36 6*7=42 6*8=48 6*9=54 
7*7=49 7*8=56 7*9=63 
8*8=64 8*9=72 
9*9=81 

每两个式子之前用一个空格隔开。。。

输入

第一有一个整数N,表示有N组数据(N<10) 接下来由N行,每行只有一个整数M(1<=M<=9);

输出

对应每个整数M,根据要求输出乘法表的前N行,具体格式参见输入输出样例和上图.
每两组测试数据结果之间有一个空行隔开,具体如输出样例。

样例输入

1
2
3
4
3
2
1
5

样例输出

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 
2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 

1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 

1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 
2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 
3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 
4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 
5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 

问题分析

一眼扫过 感觉有趣 就先做了这一题
先放AC代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
int main() {
	int T,flag=0;
	scanf("%d",&T);
	while(T--) {
		int n;
		scanf("%d",&n);
		if(flag)
			printf("\n");
		flag=1;
		for(int i=1; i<=n; i++) {
			for(int j=i; j<=9; j++) {
				printf("%d*%d=%d",i,j,i*j);
				if(j==9)
					printf("\n");
				else
					printf(" ");
			}
		}
	}
	return 0;
}

其实主要是我突然想起来这种无赖的写法:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#include<stdio.h>
int main() {
	char s[9][80]= {"1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9","2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18","3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27","4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36","5*5=25 5*6=30 5*7=35 5*8=40 5*9=45","6*6=36 6*7=42 6*8=48 6*9=54","7*7=49 7*8=56 7*9=63","8*8=64 8*9=72","9*9=81"};
	int T,flag=0;
	scanf("%d",&T);
	while(T--) {
		int n;
		scanf("%d",&n);
		if(flag)
			printf("\n");
		flag=1;
		for(int i=0; i<n; i++)
			printf("%s\n",s[i]);
	}
	return 0;
}

哈哈哈~打表法
虽然并没有什么卵用

不过看标程来说
我对空行的处理还是过于严格了
不过……
在下自认为是好习惯~哈哈哈

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#include<stdio.h>
int main()
{
	int t,n;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		for(int i=1;i<=n;i++){
			for(int j=i;j<10;j++)
				printf("%d*%d=%d ",i,j,i*j);
			printf("\n");
		}
	}
}        

该内容采用 CC BY-NC-SA 4.0 许可协议。

如果对您有帮助或存在意见建议,欢迎在下方评论交流。

加载中...