正在载入在线练习界面,本页内容可直接阅读…

AK CSP › NOIP 普及 2016 第一轮真题 › 第 28 题

NOIP 普及 2016 第一轮 第 28 题:逐字符读入两个整数:第 1 空

完善程序 · 程序基本概念与数据类型 · 难度 中等 · 答案 cin.get()

题目

完善程序:
(读入整数) 请完善下面的程序,使得程序能够读入两个 int 范围内的整数, 并将这两个整数分别输出,每行一个。(第一、五空 $2.5$ 分,其余 $3$ 分)
输入的整数之间和前后只会出现空格或者回车。输入数据保证合法。
例如:
输入:

123  -789

输出:

123
-789

程序:

#include <iostream>
using namespace std;

int readint(){
	int num = 0;	      // 存储读取到的整数
	int negative = 0;    // 负数标识
	char c;	              // 存储当前读取到的字符
	c = cin.get();
	while ((c < '0' || c > '9') && c != '-')
		c = ①;
	if (c == '-')
		negative = 1;
	else
		②;
	c = cin.get();
	while (③){
		④;
		c = cin.get();
	}
	if (negative == 1)
		⑤;
	return num;
}
int main()
{
	int a, b;
	a = readint();
	b = readint();
	cout << a << endl
		 << b << endl;
	return 0;
}
NOIP 普及 2016 第一轮 第 28 题 原题
原题扫描(页面加载后可直接在线作答)

本小题

①处应填( )

答案

cin.get()

题解

考点定位

本题(完善程序「读入整数」第①空)考「跳过非数字」,对应大纲 4.2.1 字符处理(难度【3】)。

程序思路:手工读字符解析整数:跳过前置非数字,读符号与数字拼数。

解题过程

①处跳过前置空白/非数字字符:

``cpp c = cin.get(); ``

答案:cin.get()。

易错提醒

① cin.get() 逐字符读(含空格换行);② 循环条件在下一空判定数字到达。

真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1 京公网安备11010502062986号