签到

06月21日
尚未签到

共有回帖数 0

    岁月流逝

    等级:
    刚学c的大一生,基本每天晚上都来这逛逛。
    在大约一两个星期前看到一个求精简的代码(九九乘法表),当时觉的可能自己哪天就会做这个就顺手保存了下来参考下,后来拿到学校机房后自己仔细看了下,发现是竟然自己能精简,激动不已,希望各位高手前辈们不要笑话。原代码如下(Turboc2)
    #include "stdio.h"  
    main()  
    {  
    int n,i;  
    n=1;  
    while(n=9)  
    {  
    printf("%8d",n);  
    n++;  
    }  
    printf("n");  
    n=1;  
    while(n=72)  
    {  
    printf("%c",'-');  
    n++;  
    }  
    printf("n");  
    n=1;  
    while(n!=2)  
    {  
    printf("%2d*1==%d",n,n*1);  
    n++;  
    }  
    printf("n");  
    n=1;  
    while(n!=3)  
    {  
    printf("%2d*2==%d",n,n*2);  
    n++;  
    }  
    printf("n");  
    n=1;  
    while(n!=3)  
    {  
    printf("%2d*3==%d",n,n*3);  
    n++;  
    }  
    printf("%3d*3==%d",n,n*3);  
    printf("n");  
    n=1;  
    while(n!=3)  
    {  
    printf("%2d*4==%d",n,n*4);  
    n++;  
    }  
    printf("%3d*4==%d",n,n*4);  
    printf("%2d*5==%d",n,n*5);  
    printf("n");  
    n=1;  
    while(n!=6)  
    {  
    printf("%2d*5==%d",n,n*5);  
    n++;  
    }  
    printf("n");  
    n=1;  
    while(n!=7)  
    {  
    printf("%2d*6==%d",n,n*6);  
    n++;  
    }  
    printf("n");  
    n=1;  
    while(n!=8)  
    {  
    printf("%2d*7==%d",n,n*7);  
    n++;  
    }  
    printf("n");  
    n=1;  
    while(n!=9)  
    {  
    printf("%2d*8==%d",n,n*8);  
    n++;  
    }  
    printf("n");  
    n=1;  
    while(n!=10)  
    {  
    printf("%2d*9==%d",n,n*9);  
    n++;  
    }  
    printf("n");  
    }


    以下是我自己修改的
    #include"stdio.h"
    void  main()
    {
    int n,i=1;
    while(i!=10)
    {
      printf("%8d",i);
      i++;
    }
    printf("n");
    while(i!=82)
    {
     printf("_");
     i++;
    }
    printf("n");
    for(i=1;i=9;i++)
    {
      for(n=1;n=i;n++)
      printf("%d*%d=%dt",n,i,n*i);
      printf("n");
     }

    }
    #include stdio.h

    int main()
    {
       int i, j;
       for (i = 1; i  10; ++i)
       {
           for (j = 1; j = i; ++j)
               printf("%d*%d=%-2d  ", i, j, i * j);
           putchar('n');
       }
       return 0;
    }
    精简
    #include stdio.h

    int main(void)
    {
    int n,i=1;
    for (; i10; i++)
    printf("%8d", i);
    for (putchar('n'); i82; i++)
    printf("_");
    for (putchar('n'), i=1; i=9; i++)
    {
    for (n=1; n=i; n++)
    printf("%d*%d=%dt",n,i,n*i);
    printf("n");
    }
    return 0;
    }
    再简化
    #include stdio.h
    main(_1,_)
    {
    for(_=1;_10;printf("%-8d",_++));
    for(puts("");_72;_+=printf("_"));
    for(_1=puts(""),_/=_;_1++_||(_9&&(_=-~_,_1=puts("")+1));printf("%d*%d=%dt",_1,_,_1*_));
    }
    Ureys,你的程序还可以精简成这样:
    #includestdio.h
    int b=1;
    main(a){
    b-10&&printf("%d*%d=%-4d",a,b,a*b)&&a=b?putchar(10),b=a+1,main(1):main(a+1);
    }

    return 括号,能去掉的就去掉
    -------
    我的:
    因为“__”占两个字节,就显得长了,现在改为r,一个字节
    #includestdio.h
    int r;
    main(_){
    ++r,printf("%d*%d=%-4d",r,_,_*r),_r?main(_):++_^putchar(10)&&(r=0,main(_));
    }
    Ureys,你的程序还可以精简成这样:
    #includestdio.h
    int b=1;
    main(a){
    b-10&&printf("%d*%d=%-4d",a,b,a*b)&&++ab?putchar(10),b=a,main(1):main(a);
    }

    -------
    我的:
    #includestdio.h
    int r=1;
    main(_){
    printf("%d*%d=%-4d",r,_,_*r),_=r++?r=1,++_^putchar(10)&&main(_):main(_);
    }
    赢了1个字节…��

    楼主 2016-01-23 11:25 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知