LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 997|回复: 13

不好叫什么问题,暂定为非典型问题。

[复制链接]
发表于 2003-6-19 20:06:05 | 显示全部楼层 |阅读模式
程序是打引一个扬辉三角。

  1. #include <stdio.h>
  2. #define space " "

  3. int main()
  4. {
  5.         int i,j,k,p,n;

  6.         printf("Enter a number:");
  7.         scanf("%d",&n);

  8.         for (i=1;i<=n;i++)
  9.         {
  10.                 for (j=i;j<=n-1;j++)
  11.                         printf("%c",space);   //见注释1和2
  12.                 for (k=1;k<=i;k++)
  13.                         printf("%d",k);
  14.                 for (p=i-1;p>0;p--)
  15.                         printf("%d",p);
  16.                 printf("\n");
  17.         }
  18.         return 0;
  19. }
复制代码


输出结果:
  1. $$$$$1
  2. $$$$121
  3. $$$12321
  4. $$1234321
  5. $123454321
  6. 12345654321
复制代码


注释1,改为printf("%s",space);
注释2,改为printf(" ");
输出结果:
  1.      1
  2.     121
  3.    12321
  4.   1234321
  5. 123454321
  6. 12345654321
复制代码



为什么啊?
发表于 2003-6-19 20:15:33 | 显示全部楼层
space????
or
space(1) ??/
 楼主| 发表于 2003-6-19 20:16:47 | 显示全部楼层
space的定义在宏里面。
发表于 2003-6-19 20:26:45 | 显示全部楼层
是不是保留字??

很久没有用了

忘了
 楼主| 发表于 2003-6-19 20:28:00 | 显示全部楼层
不是啊,
#define space " "         //定义了space的值是一个空格啊。
发表于 2003-6-19 20:35:25 | 显示全部楼层
我是问 space 是不是保留字??
 楼主| 发表于 2003-6-19 20:37:17 | 显示全部楼层
不是吧。。。。
发表于 2003-6-19 20:41:09 | 显示全部楼层
#define space " "定义的是字符串。
#define space '   '定义的才是字符。
 楼主| 发表于 2003-6-19 20:44:38 | 显示全部楼层
那$$$$是怎么出来的呢?
发表于 2003-6-19 20:53:01 | 显示全部楼层
同意kj501,
#define space " " /* 定义的是字符串 */
printf("%c",space);宏替换以后就是printf("%c"," ");而" "实际是一个地址,输出的字符取决于地址的低位字节。
#define space " "
printf("%s",space); 或者
#define space ' '
printf("%c",space); 是正确的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表