题目
12.(填空题)当运行以下程序时,从键盘键入right?,则下面程序的运行结果是____。#includeint main(void){char c;while((c=getchar())!='?') putchar(++c);return 0;}
12.(填空题)当运行以下程序时,从键盘键入right?,则下面程序的运行结果是____。
#include
int main(void)
{
char c;
while((c=getchar())!='?') putchar(++c);
return 0;
}
题目解答
答案
程序逐字符读取输入,若字符非`'?'`,则将其加1后输出。对于输入“right?”:
- `'r'` → `'s'`
- `'i'` → `'j'`
- `'g'` → `'h'`
- `'h'` → `'i'`
- `'t'` → `'u'`
- `'?'`终止循环。
最终输出为:
```
sjhiu
```
解析
本题考查对C语言中字符输入输出函数getchar()和putchar()的理解与运用,以及while循环的执行逻辑。解题的关键在于明确程序会逐字符读取输入,当读取到的字符不是'?'时,将该字符的ASCII码值加1后输出,遇到'?'则终止循环。
- 程序开始执行,
while循环条件判断(c = getchar()) != '?'。getchar()函数从键盘读取一个字符并赋值给变量c。 - 若读取的字符不是
'?',则执行putchar(++c)。++c是前置自增运算符,会先将c的ASCII码值加1,然后将加1后的字符输出。 - 若读取的字符是
'?',则while循环条件不成立,循环终止。 - 对于输入“right?”:
- 当读取到字符
'r'时,++c将'r'的ASCII码值加1,'r'的ASCII码值为114,加1后为115,对应的字符是's',然后通过putchar输出s。 - 当读取到字符
'i'时,'i'的ASCII码值为105,加1后为106,对应的字符是'j',输出j。 - 当读取到字符
'g'时,'g'的ASCII码值为103,加1后为104,对应的字符是'h',输出h。 - 当读取到字符
'h'时,'h'的ASCII码值为104,加1后为105,对应的字符是'i',输出i。 - 当读取到字符
't'时,'t'的ASCII码值为116,加1后为117,对应的字符是'u',输出u。 - 当读取到字符
'?'时,while循环条件不成立,循环终止。
- 当读取到字符