黑马程序员技术交流社区

标题: 求解:99乘法表代码小问题 [打印本页]

作者: Dast    时间: 2015-6-14 15:49
标题: 求解:99乘法表代码小问题
int main()
{   int res=-1;
    for(int i = 1;i <= 9;i++)
    {for(int j = 1;j <= i;j++)
        {   res = i * j;
            printf("%d * %d = %d \t ",j,i,res);
        }
        printf("\n");
    }}
为什么 \t 前后显示距离会不同?


无标题.jpg (40.06 KB, 下载次数: 23)

无标题.jpg

作者: Dast    时间: 2015-6-14 15:50
第二张图没用,添加错误。ps:代码规范的话,{后面当行写代码,还是换一行写啊
作者: 任伟    时间: 2015-6-14 17:49
后面加个—2就可以对齐了
作者: Thomas-王    时间: 2015-6-14 20:24
格式控制符的使用问题
作者: fixer    时间: 2015-6-14 21:21
一个两位一个一位啊
作者: aofex    时间: 2015-6-14 22:22
这个还先不会的了
作者: hanxujie    时间: 2015-6-15 13:52
%d\t前后和中间的所有空格都去掉就可以了,已经帮你试过了,希望能帮到你
作者: Dast    时间: 2015-6-15 22:02
任伟 发表于 2015-6-14 17:49
后面加个—2就可以对齐了

哪里加2?能写出代码吗?
作者: Dast    时间: 2015-6-15 22:05
fixer 发表于 2015-6-14 21:21
一个两位一个一位啊

这也会影响  \t 的效果吗?明显前后空格差太多了
作者: Dast    时间: 2015-6-15 22:07
hanxujie 发表于 2015-6-15 13:52
%d\t前后和中间的所有空格都去掉就可以了,已经帮你试过了,希望能帮到你

前后空白距离不同吧,怎么样让空白距离相同啊
作者: hanxujie    时间: 2015-6-15 22:48
Dast 发表于 2015-6-15 22:07
前后空白距离不同吧,怎么样让空白距离相同啊

就是你空格太多的问题  
作者: 小小羊    时间: 2015-6-15 23:32
这个自己编的你比较一下
  1. #include<stdio.h>

  2. int main()
  3. {
  4.     int x,y,z;
  5.     for(x=1;x<=9;x++)
  6.     {
  7.         for(y=1;y<=x;y++)
  8.         {
  9.             z=x*y;
  10.             printf("%d*%d=%-2d  ",y,x,z);
  11.         }
  12.         printf("\n");
  13.     }
  14.     return 0;
  15. }
复制代码

作者: Dast    时间: 2015-6-16 00:20
本帖最后由 Dast 于 2015-6-16 00:22 编辑

//这个为何结果是第一和第二列之间没有 tab 效果尼?
  1. #include<stdio.h>

  2. int main()
  3. {
  4.     int x,y,z;
  5.     for(x=1;x<=9;x++)
  6.     {
  7.         for(y=1;y<=x;y++)
  8.         {
  9.             z=x*y;
  10.             printf("%d*%d=%d\t",y,x,z);
  11.         }
  12.         printf("\n");
  13.     }
  14.     return 0;
  15. }
复制代码

作者: Dast    时间: 2015-6-16 00:22
小小羊 发表于 2015-6-15 23:32
这个自己编的你比较一下


//这个为何结果是第一和第二列之间没有 tab 效果尼?
#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=%d\t",y,x,z);
        }
        printf("\n");
    }
    return 0;
}
复制代码
作者: Dast    时间: 2015-6-16 00:24
hanxujie 发表于 2015-6-15 13:52
%d\t前后和中间的所有空格都去掉就可以了,已经帮你试过了,希望能帮到你

按你的程序,我在xcode上试的是第一和第二列间没有 tab 的效果啊。
作者: venn    时间: 2015-6-16 09:02
把%d前后的空格都删了即可
作者: Dast    时间: 2015-6-16 21:56
venn 发表于 2015-6-16 09:02
把%d前后的空格都删了即可

把%d前后的空格都删了,我在xcode上试的是第一和第二列间没有 tab 的效果啊。
作者: 张国繁    时间: 2015-6-16 22:22
我做的这个和你写的代码还不太一样,所以自己再琢磨下
作者: 张国繁    时间: 2015-6-16 22:24
我做的这个和你写的代码还不太一样,所以自己再琢磨下
作者: 小龙女的萝卜    时间: 2015-6-17 19:16
回去试下,看看
作者: 潇湘清公子    时间: 2015-6-17 19:39
因为从第二列开始所得结果为两位的整数,所以导致以后的列相对于第一列又向右移一位!谢谢!
作者: 马贺飞    时间: 2015-6-18 22:23
围观学习




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2