C语言,输入2473,输出668977,我想请问一下,是先给c赋值为2,还是2473?

C语言,输入2473,输出668977,我想请问一下,是先给c赋值为2,还是2473?#include<stdio.h>main(){charc;while((c=get... C语言,输入2473,输出668977,我想请问一下,是先给c赋值为2,还是2473?#include<stdio.h>
main()
{ char 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"); return 0; } 
展开
 我来答
百度网友f170b16
2016-12-21 · TA获得超过1万个赞
知道大有可为答主
回答量:2271
采纳率:94%
帮助的人:597万
展开全部
#include<stdio.h> 
void main() 
{
    char 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");
    return 0;
}


getchar仅仅读取一个字符,写在while语句的判断条件里,则每执行一遍循环就执行一遍getchar,即读取一个字符。

        输入2,执行第一遍循环,c值2,执行switch(c-'2'),括号中的c-'2'返回值是0。执行case 0:case 1:putchar(c+4); case 2:putchar(c+4); break; 就是输出c+4所代表的字符,就是6,输出两遍6,然后遇到break跳出。

        输入4,执行第二遍循环,c值4,执行switch(c-'2'),括号中的c-'2'返回值是2。执行case 2:putchar(c+4); break; 就是输出c+4所代表的字符,就是8,然后遇到break跳出。

        输入樱侍7,执行第三遍循环,c值7,执行switch(c-'2'),括号中的c-'2'返回值是5。没有姿颂歼case对应,执行default: putchar(c+2); break; 就是输出c+2所代表的字符,就是9,然后遇到break跳出。

        输入3,执行第四遍循环,c值3,执行switch(c-'2'),括号中的c-'2'返回值是1。执行case 1:putchar(c+4); case 2:putchar(c+4); break; 就是输出c+4所代表的字符,就是7,然后遇到break跳出。

        最后输出结果就是 66897

        望采纳~~~

漆翔飞仙漾
2019-03-22 · TA获得超过2.9万个赞
知道小有建树答主
回答量:1.1万
采纳率:27%
帮助的人:653万
展开全部
c-'2'是指将字符c的ascii码与字符'2'的ascii作差。
输入为2,差的结果为0,执行case
0,没有break,继续执行case
1,输出
c+4,因为c为2,所以输出6;没有break,继续执行case
2,输出
c+4,还是6;遇到break,退出swith语句。
输入为4,差的结果为2,执行case
2,输出c+4,为8,遇到break,退出swith语句。
输入为7,差的结果为5,执行default,输出为c+2,即9,后面没有语句了,手咐升即使没有简猜break,也退毕老出switch语句。
输入为3,
差的结果为1,执行case
1,输出
c+4,即7,没有break,继续执行case
2,输出c+4,即7,遇到break,退出switch,输入结束,退出while循环。
故此输出为:668977
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pplixin4
2016-12-21 · TA获得超过282个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:142万
展开全部
赋值为'2',getchar()是读取一个字符
追问
2-2=0,0+4+4=8,那第一个返回的数不应为8吗?请问我哪里算错了?
追答
首先c-'2'=0
switch执行case 0没有语句,向下贯穿,执行case 1,输出 putchar(c+4),
注意这里是输出(c+4),并没有赋值c还是为'2',
继续向下贯穿,执行case 2,输出 putchar(c+4),
break,跳出switch
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式