昨天去一家公司面试,碰到一道很古老的面试题,就是编写乘法口诀,如下:1*1 = 1
1*2 = 2 2*2 = 4
1*3 = 3 2*3 = 6 3*3 = 9
1*4 = 4 2*4 = 8 3*4 = 12 4*4 = 16
1*5 = 5 2*5 = 10 3*5 = 15 4*5 = 20 5*5 = 25
1*6 = 6 2*6 = 12 3*6 = 18 4*6 = 24 5*6 = 30 6*6 = 36
1*7 = 7 2*7 = 14 3*7 = 21 4*7 = 28 5*7 = 35 6*7 = 42 7*7 = 49
1*8 = 8 2*8 = 16 3*8 = 24 4*8 = 32 5*8 = 40 6*8 = 48 7*8 = 56 8*8 = 64
1*9 = 9 2*9 = 18 3*9 = 27 4*9 = 36 5*9 = 45 6*9 = 54 7*9 = 63 8*9 = 72 9*9 = 81小弟临时写了如下代码,面试官说不是很准确,小弟代码如下:
public class Test{
public static void main(String [] args){
int i = 1;
for(int j =1;j<10;j++){
for (int m =1;m<10;m++){
System.out.print(m + "*" +i +" = "+m*i+" ");
if(m == i){
System.out.println(" ");
i = i+1;
break;
}
}
}
}
}好像没啥问题,哪位大哥有更好的代码啊?
1*2 = 2 2*2 = 4
1*3 = 3 2*3 = 6 3*3 = 9
1*4 = 4 2*4 = 8 3*4 = 12 4*4 = 16
1*5 = 5 2*5 = 10 3*5 = 15 4*5 = 20 5*5 = 25
1*6 = 6 2*6 = 12 3*6 = 18 4*6 = 24 5*6 = 30 6*6 = 36
1*7 = 7 2*7 = 14 3*7 = 21 4*7 = 28 5*7 = 35 6*7 = 42 7*7 = 49
1*8 = 8 2*8 = 16 3*8 = 24 4*8 = 32 5*8 = 40 6*8 = 48 7*8 = 56 8*8 = 64
1*9 = 9 2*9 = 18 3*9 = 27 4*9 = 36 5*9 = 45 6*9 = 54 7*9 = 63 8*9 = 72 9*9 = 81小弟临时写了如下代码,面试官说不是很准确,小弟代码如下:
public class Test{
public static void main(String [] args){
int i = 1;
for(int j =1;j<10;j++){
for (int m =1;m<10;m++){
System.out.print(m + "*" +i +" = "+m*i+" ");
if(m == i){
System.out.println(" ");
i = i+1;
break;
}
}
}
}
}好像没啥问题,哪位大哥有更好的代码啊?
for(int i=1,j=1;i<10;){
System.out.print(i+"*"+j+"="+j*i+"\t");
if(j<i){
j++;
}
else if(j==i){
System.out.println();
j=1;
i++;
}
}
i++的时候不必j=1的,直接j=i就好,可以省去一些多余的执行步骤
for (int ii = 1; ii < 10; ii++)
{
for (int jj = 1; jj <= ii; jj++)
{
System.out.print(ii + "*" + jj + "=" + ii * jj + " ");
}
System.out.println();
}
{
for (int jj = 1; jj <= ii; jj++)
{
System.out.print(jj + "*" + ii + " = " + ii * jj + " ");
}
System.out.println();
}
System.out.print(j + "*" + i + "=" + j * i + "\t");
if (j == i) {
System.out.println();
j = 0;
i++;
}
j++;
}
ALTER PROC [dbo].[proc_Test]
AS
DECLARE
@i int, @j int, @sOut varchar(100);
SET @i = 1;
SET @j = 1;
SET @sOut = '';
while @j <= 9
begin
set @sOut = @sOut + CAST(@i AS VARCHAR) +'*'+CAST(@j AS VARCHAR)+' = '+CAST(@j*@i AS VARCHAR)+' '
if @i = @j
begin
print @sOut
set @i = 0;
set @j = @j + 1;
set @sOut = '';
end
set @i = @i + 1;
end
for(int i=1;i<10;i++){
for(int j=1;j<=i;j++){
System.out.print(j + " * " + i + " = " + i*j + "\t");
}
System.out.println();
}
}研究下单层循环