打印九九乘法表,要求只能用一个变量

Smile_大笑 2013-10-07 09:29:08
加精
c语言要求最多只能用一个变量打印出九九乘法表。
...全文
18702 3 收藏 207
写回复
207 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
JustDoin 2016-01-14
c语言实现打开指定网址谁会?如何实现?
回复
baidu_33612050 2016-01-03
引用 楼主 z542858367 的回复:
c语言要求最多只能用一个变量打印出九九乘法表。
顶,不过好想笑啊
回复
飞机君 2015-11-18
学生党,有不足的请不要喷
回复
mong_ma 2015-07-26
引用 1 楼 mujiok2003 的回复:
九九乘法表是个不变的,何必用变量。

int main()
{
char const* const tbl = "1×1=1\n" 
"1×2=2 2×2=4\n" 
"1×3=3 2×3=6 3×3=9 \n" 
"1×4=4 2×4=8 3×4=12 4×4=16\n"  
"1×5=5 2×5=10 3×5=15 4×5=20 5×5=25\n"  
"1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36\n"  
"1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49\n"  
"1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64\n"  
"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";
puts(tbl);
  return 0;
}
回复
银河洗剑 2015-07-16
引用 1 楼 mujiok2003 的回复:
九九乘法表是个不变的,何必用变量。

int main()
{
char const* const tbl = "1×1=1\n" 
"1×2=2 2×2=4\n" 
"1×3=3 2×3=6 3×3=9 \n" 
"1×4=4 2×4=8 3×4=12 4×4=16\n"  
"1×5=5 2×5=10 3×5=15 4×5=20 5×5=25\n"  
"1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36\n"  
"1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49\n"  
"1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64\n"  
"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";
puts(tbl);
  return 0;
}
必须顶这个
回复
java_928 2015-07-15
15楼的好强
回复
Takukai 2015-06-30
#include <stdio.h>
int main()
{
    for(int a=16;(a>>4)<=9;a+=16)
        {
            a&=0xF0;
            a|=1;
            for(;(a&15)<=(a>>4);a++)
            {
                printf("%dx%d=%d\t",a>>4,a&15,(a>>4)*(a&15));
            }
        printf("\n");
        }
    return 0;
}

虽然这问题早已经结束,但拿来练习一下位操作还是蛮不错的
回复
ggsjj 2015-06-17
引用 22 楼 jiyy7758521 的回复:
#include <stdio.h> main() { int i;//取一个变量,用变量的十位代表另一变量,注意个位每次要归1 i=0; for(i=11;i<92;i+=10) { for(;i%10<=i/10;i++) { printf("%d*%d=%d ",i/10,i%10,(i/10)*(i%10)); } i=i/10*10+1; printf("\n"); } }
#include <iostream> using namespace std; int main() { int i; for (i=11;i<100;i++) { if (i%10==0); else if (i/10>=i%10) cout<<i%10<<"*"<<i/10<<"="<<i/10*(i%10)<<" "; if (i%10==9) cout<<endl; } return 0; }修改了一下,也可以,感觉方法挺好的
回复
qq_26880215 2015-06-01
{ int i,j; for(i=1;i<10;i++) { for(j=1;j<i+1;j++) printf("%d*%d=%d\t",i,j,i*j); } printf("\n",i); } }
回复
brucetong 2015-05-12
横看成林侧成峰!学习!
回复
chenpony99 2015-01-29
std:: cout<<i; 应该是这个也不算什么死循环
回复
fisrt_goal 2014-11-08
引用 16 楼 max_min_ 的回复:
[quote=引用 8 楼 vrace 的回复:]

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int a;
	
	for (a = 0x11; a < 0xa0; a++)
	{
		for (a = (a & 0xf0) + 1; (a & 0x0f) <= ((a & 0xf0) >> 4); a++)
		{
			printf("%dx%d=%d\t",
				(a & 0x0f),
				(a & 0xf0) >> 4,
				((a & 0xf0) >> 4) * (a & 0x0f));
		}
		a += 0x10;
		printf("\n");
	}
	
	return 0;
}
这个应该能满足你的要求...
[/quote] 膜拜啊!
回复
echo_oy 2014-11-05
回复
Archie_w 2014-07-13
引用 208 楼 u011371360 的回复:
[quote=引用 38 楼 qweiu 的回复:] [quote=引用 23 楼 jiyy7758521 的回复:] //突然想到一个更简单的 这个错的 全部打印: 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=
这样就对了嘛![/quote] #include <stdio.h> main() { int i;//取一个变量,用变量的十位代表另一变量,注意个位每次要归1 i=0; for(i=11;i<100;i++) { if(i%10==0||i%10>i/10) { printf("\n"); i=(i/10+1)*10+1; } printf("%d*%d=%d ",i/10,i%10,(i/10)*(i%10)); } printf("\n"); }
回复
Archie_w 2014-07-13
引用 38 楼 qweiu 的回复:
[quote=引用 23 楼 jiyy7758521 的回复:] //突然想到一个更简单的 #include <stdio.h> main() { int i;//取一个变量,用变量的十位代表另一变量,注意个位每次要归1 i=0; for(i=11;i<100;i++) { if(i%10==0||i%10>i/10) { printf("\n"); i=i/10*10; } printf("%d*%d=%d ",i/10,i%10,(i/10)*(i%10)); } }
这个错的 全部打印: 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=1 1*0=0 1*1=[/quote] 这样就对了嘛!
回复
朔野西骑 2014-05-28
引用 8 楼 vrace 的回复:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int a;
	
	for (a = 0x11; a < 0xa0; a++)
	{
		for (a = (a & 0xf0) + 1; (a & 0x0f) <= ((a & 0xf0) >> 4); a++)     //这里的a++有啥用???倒数第三行的a+=0x10是不是可以放在这里
		{
			printf("%dx%d=%d\t",
				(a & 0x0f),
				(a & 0xf0) >> 4,
				((a & 0xf0) >> 4) * (a & 0x0f));
		}
		a += 0x10;
		printf("\n");
	}
	
	return 0;
}
这个应该能满足你的要求...
回复
cn_lf_c_android 2014-05-12
1楼相当霸气
回复
sunnyshot 2014-05-12
引用 165 楼 KenZhang1031 的回复:
#include <stdio.h>

void main(void)
{
	int i;

	for(i=11; i<100; i++)
	{
		if((i % 10) != 0)
		{
			if((i % 10) <= (i / 10))
			{
				printf("%dx%d=%d   ", i % 10, i / 10, (i % 10) * (i / 10));
			}
		}
		else
		{
			printf("\n");
		}
	}
}
神一般的存在,用%d省去小数部分,好聪明的想法
回复
sunnyshot 2014-05-12
引用 134 楼 gaoshou998 的回复:
我还是觉得我这个简单 python写的

def A(n):
    if 0< n <= 9:
        A(n-1)
        for i in range(1,n+1):
            print "%2sx%2s=%2s"%(i,n,i*n),
        print

A(9)

>>> 
 1x 1= 1
 1x 2= 2  2x 2= 4
 1x 3= 3  2x 3= 6  3x 3= 9
 1x 4= 4  2x 4= 8  3x 4=12  4x 4=16
 1x 5= 5  2x 5=10  3x 5=15  4x 5=20  5x 5=25
 1x 6= 6  2x 6=12  3x 6=18  4x 6=24  5x 6=30  6x 6=36
 1x 7= 7  2x 7=14  3x 7=21  4x 7=28  5x 7=35  6x 7=42  7x 7=49
 1x 8= 8  2x 8=16  3x 8=24  4x 8=32  5x 8=40  6x 8=48  7x 8=56  8x 8=64
 1x 9= 9  2x 9=18  3x 9=27  4x 9=36  5x 9=45  6x 9=54  7x 9=63  8x 9=72  9x 9=81
>>> 
n和i2个了。。。
回复
cao_julians 2014-05-12
九九表无非就是被乘数和乘数均为一位数,我们构造一个两位数的数列x, 则(x/10)得到被乘数,(x%10)得到乘数,跳过乘数为0的不就可以了 for(x=11; x<100; x++) { if(x%10==0) continue; printf("% d", (x/10)*(x%10)); ....... } 格式控制我就不讨论了
回复
加载更多回复
相关推荐
发帖
C语言
创建于2007-09-28

6.4w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2013-10-07 09:29
社区公告
暂无公告