应用题
1. 请打开考生文件夹下的解决方案文件proj2,此工程中含有一个源程序文件proj2.cpp。函数char *GetNum(char *src,char *buf)从src开始扫描下一个数字字符序列,并将其作为一个字符串取出放入字符串空间bur中。函数返回扫描的终止位置,如果返回NULL表示没有扫描到数字字符序列。
运行程序时,如果输入的一行字符序列是
ABC012XYZ378MN274WS
则输出为:
Digit string 1 is 012
Digit string 2 is 378
Digit string 3 is 274
注意:只在横线处编写适当代码,不要删除或移动“//****found****”。
//proj2.cpp
#include<iostream>
using namespace std;
char *GetNum(char *src,char *buf)
{
while($src!='\0')
{
if(isdigit(*src))break;
src++;
}
if(*src=='\0')
//********found********
______;
while(*src!='\0'&& isdigit(*src))
{
//********found********
______;
buf++;
src++;
}
*buf='\0';
return src;
}
int main()
{
char str[100],digits[20];
cin.getline(str,100);
char *p=str;
int i=1;
while((p=GetNum(p,digits))!=NULL)
{
cout<<"Digit string"<<i<<"is"<<digits<<endl;
//********found********
______;
}
return 0;
}
【正确答案】(1)return NULL
(2)*buf=*src
(3)i++
【答案解析】[考点] 主要考查的是GetNmn函数、while循环语句、if语句和字符数组。从该函数的声明中,可以得到如下信息:该函数的返回值为字符指针,形参为两个字符指针src和buf。该函数的功能是,函数从src开始扫描下一个数字字符序列,并将其作为一个字符串取出放入字符串空间buf中。
(1)主要考查考生对if语句的掌握,由判断条件if(*src=='\0'),说明字符串src为空,则返回NULL即可。
(2)主要考查考生对while循环语句的掌握,while语句的循环条件为*src!='\0'&&isdigit(*src),该条件是指,若字符串src不为空并且*src指向的字符为数字字符,则进行循环。题目要求把数字字符放入字符串buf中,因此为*buf=*src。
(3)主要考查考生对while循环语句的掌握,从上一行语句cout<<"Digit string"<<i<<"is"<<digits<<endl;中可以得出,题目要求输出的i是递增的,因此这里需添加语句i++。