黑马程序员技术交流社区
标题: 99乘法表的对齐问题 [打印本页]
作者: 余丽丽 时间: 2015-6-6 13:16
标题: 99乘法表的对齐问题
本帖最后由 余丽丽 于 2015-6-6 22:40 编辑
我自己试着写了以下99乘法表,但是我无意中发现一个问题,不知道是什么原理,刚开始的写法:
#include <stdio.h>
int main(int argc, const char * argv[]) {
for (int i=1; i<10; i++) {
for (int j=1; j<i+1; j++) {
printf("%d*%d=%d\t",i,j,i*j);
}
printf("\n");
}
return 0;
}
运行结果:
后来改成:
#include <stdio.h>
int main(int argc, const char * argv[]) {
for (int i=1; i<10; i++) {
for (int j=1; j<i+1; j++) {
printf("%d*%d=%d \t",i,j,i*j);
}
printf("\n");
}
return 0;
}
运行结果:
其实这两种写法只是printf("%d*%d=%d\t",i,j,i*j);改成printf("%d*%d=%d \t",i,j,i*j);而已;
后来我多次测试发现%d*%d=%d\t这部分无论在哪里加空格,对齐效果都是正常的,唯有没有加空格的时候就出现第一种现象;
请问是什么原因?
作者: talent123 时间: 2015-6-6 21:36
我用你的第一种写法
运行出来的也是正确的啊
作者: hi虚无缥缈 时间: 2015-6-6 22:36
看不出来这两种写法有什么不同.
作者: 余丽丽 时间: 2015-6-6 22:40
我是6.3.2版本,你呢?
作者: ⒈苆都s.兲憶 时间: 2015-6-6 23:32
第一种也是正确的吧,没看出来哪有问题!
作者: 七尺阳光 时间: 2015-6-6 23:38
这个对齐跟空格没有关系啊.奇葩的问题
作者: 恩赐_RWQqZ 时间: 2015-6-6 23:58
哦哦哦 好 非常好 很好
作者: 晗修 时间: 2015-6-7 02:00
应该是\t的原因吧 制表符不一定会产生空格的
作者: taolove 时间: 2015-6-7 08:09
我运行的没有这个问题!
作者: 天下1083 时间: 2015-6-7 08:10
一样的吧
作者: 小龙女的萝卜 时间: 2015-6-7 08:11
不懂,两个不是看着一样吗?应该没问题吧
作者: aofex 时间: 2015-6-7 19:58
新手 看不出来啊
作者: talent123 时间: 2015-6-7 20:28
我是DEV C++
作者: 这是829 时间: 2015-6-7 21:45
我又来围观学习啦
作者: huyingbin 时间: 2015-6-7 23:51
可能是xcode的原因吧
作者: Emma 时间: 2015-6-9 22:59
因为\t的意思就是跳到4k+1的位置输出啊,\t就是从行头开始第5个字符开始输出,\t\t就是第9个
作者: 天下1083 时间: 2015-6-10 11:34
/t的原因吧
作者: 苗美丽 时间: 2015-6-10 22:43
在我这运行没有问题。
作者: 余丽丽 时间: 2015-6-10 22:45
这个我知道,应该是版本的问题吧,6.3.1.版本运行着没有问题
作者: 李竞还活着 时间: 2015-6-11 00:02
我怎么感觉这没有问题嘞
作者: 余丽丽 时间: 2015-6-11 00:43
代码是没有问题,版本问题
作者: 马贺飞 时间: 2015-6-13 22:56
围观学习
作者: 皇道金丹 时间: 2015-6-14 01:52
瞬间发现你是咱班大神,这题我捣鼓了许久都没弄出来,还不如你,丢脸啊:L
作者: 皇道金丹 时间: 2015-6-14 02:00
不过后来我还是走出来了,只不过你纵向两数字写反了
printf("%d * %d = %d \t", j, i, i*j);这样试试打印出来序列应该就是正确了吧
作者: goldboy 时间: 2015-6-14 08:46
99乘法是经典编程题,得好好看看
作者: 我丶就这样 时间: 2015-6-15 19:03
理论上应该是一样的
作者: 丁铭检 时间: 2015-6-15 20:26
printf中双引号里的内容是原样输出的。。
作者: 小小羊 时间: 2015-6-15 23:37
看看这个
- #include<stdio.h>
- int main()
- {
- int x,y,z;
- for(x=1;x<=9;x++)
- {
- for(y=1;y<=x;y++)
- {
- z=x*y;
- printf("%d*%d=%-2d ",y,x,z);
- }
- printf("\n");
- }
- return 0;
- }
复制代码
作者: 毓秀钟灵 时间: 2015-6-16 00:00
没区别吧
作者: lipeng524824 时间: 2015-6-16 00:06
围观,学习!
作者: ITClody 时间: 2015-6-16 13:44
正常情况下,加一个制表符"\t"就可以了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |