如何在不使用代码中的任何数字的情况下打印0到9位数?

时间:2017-04-03 10:03:40

标签: c

最近,我在hackerearth上发现了一个问题,即如何在没有任何数字的情况下打印726。这是问题:https://www.hackerearth.com/challenge/college/r1/golf/726/

的链接

我用这个解决了这个问题:

#include <stdio.h>
main()
{
    printf("%d",('\e'*'\e')-('\r'-'\n'));

}

但是由于我发现这个问题很有趣,我希望不使用任何数字来打印每一个数字。因此,我希望在新行中打印0到9,而不使用任何数字并使用unicodes。我怎么能这样做?

5 个答案:

答案 0 :(得分:2)

#include <stdio.h>

int main(void){
    for(int n = !&n; snprintf(NULL, !&n, "%d", n)==!!&n; printf("%d\n", n++));
}

答案 1 :(得分:1)

#include <stdio.h>

#define ZERO ('a' - 'a')
#define ONE ((int)(sizeof (char)))
#define TWO (ONE + ONE)
#define THREE (TWO + ONE)
#define SIX (TWO * THREE)
#define SEVEN (SIX + ONE)

int main(void) {
    printf("%d%d%d\n", SEVEN, TWO, SIX);
    /* Assume C99 and implicit return 0; */
}

答案 2 :(得分:1)

有无数种方法可以编写模糊的,无意义的C代码。一个例子:

#include <stdio.h>

int main (void)
{
  for(size_t i=!"A string."; i<sizeof("A string."); i++)
    printf("%zu ", i);
}

或者,更具创造性地,在纯标准C:

??= include"stdio.h"

#define wtf(x,...) x%:%: nt ma ##x %:%:n(vo ##x %:%:d) ??<for(x %:%:nt x =(+ __LINE__??!??!\
+__LINE__) +- !!"WTF"; x<=__LINE__; +i++)??<\
pr ##x %:%:nt %:%:f((char[])<%'%','d',' ',!"WTF"??>,-+-x);%>??>



                                   wtf(i)

答案 3 :(得分:0)

#include <stdio.h>
void main()
{
  char ch='/';
  while(ch!=':')
  { 
      if(isdigit(ch))
      {
        printf("%c\n ",ch);
      }
      ch++;
   }
}

答案 4 :(得分:-2)

您可以检查ASCII code的值并使用带有%d占位符的字符来提取数字。 例如。 :

#include <stdio.h>

int main(int argc, char **argv)
{
    char a='H';
    printf("%d",a);
    return 0;
}