1. 已有定义 int x; float y; 且执行 scanf("%3d%f", &x, &y);语句时,假设输入数据为 12345□678↙,则 x、y 的值分别为( B), 解释原因。
A. 12345 678.000000
B. 123 678.000000
C. 123 45.678000
D. 123 45.000000
原因:x为int类型,%3d为取输入数据前三位,所以x为123
遇到空格,重新输入y的值,y为float类型,取空格后面的数据,所以y为678.000000
2. 阅读以下程序,当输入数据的形式为:12a345b789↙,已知正确答案为(A),请用文字 解释原因。
A. 2, 345, 1, a B. 12, 345, a, b C. 2a, 45b, 1, 3 D. 2, 789, 1, a
原因:c1为char类型单字节取输入数据第一位1。a1为int类型,%2d取余下的数字,因为a是字 母,无法赋值给a1,a1为2。c2为char单字节,取a1余下的a。a2为int类型,赋值余下数据, %3d赋值三个数,a2为345。
3. 填空: 以下程序的输出结果为:_________。
结果:k为int类型,%d是十进制,输出为17。%o是八进制,将17除以8等于2余下1,输出为21。
%x是十六进制,将17除以10等于1,余下1,输出为11。
4. 填空: 以下程序的输出结果为_________。
结果:\*3.140000,3.142\*\
5. 在 Dev Cpp 平台上新建一个项目,仿照 PPT【4.2.1 键盘输入和屏幕输出(下)】,完成功能:在命令窗口输入任意大写英文字母,输出值为对应的小写英文字母。(要求在 CSDN/博 客园上粘贴代码,以及输入输出截图)
6. 在 Dev Cpp 平台上新建一个项目,输入下方截图的程序代码(同样也是上课的例子)。假 设输入 a=12, b=’a’, c=3.5,观察其输出。在这个过程中,程序出现了什么问题,应该如何 补救?请对补救方法重新生成一段新的程序,并观察其输出。(要求在 CSDN/博客园上粘贴 下方代码,以及输入输出截图;改进后的代码,以及改进后的输入输出截图)
用户输入数据先放入缓冲区程序再从缓冲区读取,前一个输入函数没有读走的数据仍在缓冲区,将被下一个输入函数读取。
补救后,用getchar清空缓冲区,重新输入新的数据。