NOIP 普及组初赛 · NOIP 2014 普及组初赛试题 第 27 题

完善程序 · 答案 || j++j=j+1++jjs[i] · 考点:输入输出、位运算、分支结构、循环结构、字符串(string)

← 整套速查表 NOIP 普及组初赛 全部真题

题目

完善程序: (数字删除) 下面程序的功能是将字符串中的数字字符删除后输出。请填空。(每空 3 分,共 12 分)

#include <iostream>
using namespace std;
int delnum( char *s )
{
	int i, j;
	j = 0;
	for ( i = 0; s[i] != '\0'; i++ )
		if ( s[i] < '0'   ①  s[i] > '9' )
		{
			s[j] = s[i];
			②;
		}
	return(③);
}


const int SIZE = 30;
int main()
{
	char	s[SIZE];
	int len, i;
	cin.getline( s, sizeof(s) );
	len = delnum( s );
	for ( i = 0; i < len; i++ )
		cout << ④;
	cout << endl;
	return(0);
}
答案:|| j++j=j+1++jjs[i]

考点

输入输出位运算 讲解 →位运算 真题汇总 →分支结构循环结构字符串(string)

解题思维

双指针删字符:非数字保留,数字跳过,返回新长度

常见错误

①漏写||导致非数字被删;②j++漏写或写j=i导致错位;④循环填s[i]易误以为要填其他(实则正确)

详细解析(节选)

考点:双指针|字符串处理

程序在做什么

函数遍历字符串,将非数字字符前移,返回新长度;main 按该长度打印。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断