执行如下 C++ 代码如果在键盘上输入 10,执行后将输出 20。( )
char N;
printf("请输入正整数:");
cin >> N;
printf("%d\n", N * 2);答案B。逐行追踪代码:从main开始,记录每个变量的值变化。注意循环的起止条件和累加过程。
逐行模拟时建议画表格记录变量值的变化过程,特别是循环体中的变化。
【考点】数据类型与变量定义|输入输出流与类型匹配
1. 🎯 考纲定位:本题考查GESP一级大纲"数据类型与变量定义"与"输入输出流与类型匹配"基础模块。命题人专卡初学者"char≠int"的认知盲区——90%考生会下意识把char当整数用,却忽略ASCII编码本质。
2. 🧠 解题思维:看到char N应先警觉"这是字符而非数字";cin>>N遇到"10"时,字符串被拆成'1'和'0',但cin遇空格/换行即停止,故N仅捕获'1';printf输出N*2即ASCII码49×2=98,而非数值10×2=20。通法:遇char变量时,立即翻译为ASCII码参与运算。
3. 🪤 陷阱拆解:选项A利用"输入数字就能运算"的惯性思维;命题人最阴险处是把两位数拆成两个字符——输入"10"只读'1',若输入"5"才读'5';若学生背过"char存ASCII"却不懂流式输入截断规则,仍会误判。
4. 🔄 反命题思维:若把char改为int,答案立正;若问"输入10实际输出什么",答案98;若用getchar()替换cin,考察边界条件更狠。刷此类题先问"变量类型是否匹配输入流"。