main() { int c; while((c=getchar())!= ✀尀n✀) { switch(c-✀2✀) { case 0 : case 1 : putchar(c+4); ca

2025-02-26 14:03:48
推荐回答(2个)
回答1:

main()
{   int c;
    while((c=getchar())!= '\n')
    {     
        switch(c-'2')
        {     case 0 :
              case 1 : putchar(c+4);
              case 2 : putchar(c+4); break;
              case 3 : putchar(c+3);
              default: putchar(c+2); break;
        }
    }
   printf("\n");


先给你解释下getchar的作用
    getchar 的用途是从从标准输入流读取一个字符,读回车符时退出
    getchar();永远只向缓存中输入一个字符。
    putchar 和它同理。

 那么7654回车,程序会一个一个读取,输入7,执行7-2=5 输出default 里面的 7+2=9;
 输入6,执行6-2=4 输出default 6+2=8,输入5,执行5-2=3 
 执行case 3 里面的 5+3=8,
 但是没有break 依然会往下执行 执行default里面的 会输出 5+2=7 遇到break结束,
 输入4  执行4-2 =2 执行case 2 输出 4+4=8 遇到break 执行结束。
 那么最终的结果是: 98878
 小提示:switch(c-'2') 执行的 是 ascii 相减,‘2’的ascii就是 2.



图片中的代码执行结果下图:

回答2:

main()
{ int c;
while((c=getchar())!= '\n')//c依次为字符7654
{ switch(c-'2')//依次为5432
{ case 0 :
case 1 : putchar(c+4);
case 2 : putchar(c+4); break;
case 3 : putchar(c+3);
default: putchar(c+2); break;
}
}
printf("\n");
}

c=7时, 执行default输出9

c=6时,执行default 输出8

c=5时, 执行case 3后 再执行default, 输出87

c=4时执行case 2, 输出8

于是 最终输出为 

98878