发布网友 发布时间:2022-09-01 02:19
共3个回答
热心网友 时间:2024-02-28 10:24
#include<stdio.h>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
望采纳~~~
热心网友 时间:2024-02-28 10:24
c-'2'是指将字符c的ascii码与字符'2'的ascii作差。热心网友 时间:2024-02-28 10:25
赋值为'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