[C puzzle book] Control Flow

#include <stdio.h>

#define PR(format,value) printf(#value"= %"#format"\t",(value))
#define NL putchar('\n')

#define PRINT1(f,x1) PR(f,x1), NL
#define PRINT2(f,x1,x2) PR(f,x1), PRINT1(f,x2)
#define PRINT3(f,x1,x2,x3) PR(f,x1), PRINT2(f,x2,x3)
#define PRINT4(f,x1,x2,x3,x4) PR(f,x1), PRINT3(f,x2,x3,x4

 

#include "defs.h"

int main(void)
{
    int x, y=1, z,d;

    if(y!=0) x=5;
    PRINT1(d,x);

    if(y==0) x=3;
    PRINT1(d,x);

    x=1;
    if(y<0) if(y>0) x=3;
    else x=5;
    PRINT1(d,x);
    
    if(z=y<0) x=3;
    else if(y==0) x=5;
    else x=7;
    PRINT2(d,x,z);

    if(z=(y==0)) x=5; x=3;
    PRINT2(d,x,z);

    if(x=z=y); x=3;
    PRINT2(d,x,z);
}
#include "defs.h"

int main(void)
{
    int x,y,z;
    x=y=0;
    while(y<10) ++y; x += y;
    PRINT2(d,x,y);

    x=y=0;
    while(y<10) x += ++y;
        PRINT2(d,x,y);

    y=1;
    while (y<10) {
        x = y++;
        z = ++y;
    }
    PRINT3(d,x,y,z);

    for(y=1; y<10; y++) x=y;
    PRINT2(d,x,y);

    for(y=1; (x=y)<10; y++) ;
    PRINT2(d,x,y);

    for(x=0,y=1000;y>1; x++,y/=10)
        PRINT2(d,x,y);
}
#include "defs.h"

#define ENUF 3
#define EOS '\0'
#define NEXT(i) input[i++]
#define TRUE 1
#define FALSE 0

char input[]="PI=3.14159, approximately";

int main(void)
{
    char c;
    int done, high, i, in, low;

    i=low=in=high=0;
    while(c=NEXT(i) !=EOS)
        if(c<'0') low++;
        else if(c>'9') high++;
        else in++;
    PRINT3(d,low,in,high);

    i=low=in=high=0; done=FALSE;
    while((c=NEXT(i))!=EOS && !done)
        if(c<'0') low++;
        else if(c>'9') high++;
        else in++;
        if(low>=ENUF || high>=ENUF || in>=ENUF)
            done = TRUE;
    PRINT3(d,low,in,high);

    i=low=in=high=0; done=FALSE;
    while((c=NEXT(i))!=EOS && !done)
        if(c<'0') d
#include "defs.h"

char input[] = "SSSWILTECH1\1\11w\1WALLMP1";

int main(void)
{
    int i, c;
    for(i=2; (c=input[i])!='\0';i++) {
            switch(c) {
            case 'a' : putchar('i'); continue;
            case '1' : break;
            case 1 : while((c = input[++i])!='\1' && c!='\0') ;
            case 9 : putchar('S');
            case 'E': case 'L': continue;
            default: putchar(c); continue;
            }
            putchar(' ');
        }
        putchar('\n');
}

转载于:https://www.cnblogs.com/abacuspix/archive/2012/08/09/2630079.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值