欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

湖大2020年计算机学院研究生复试题目:输出字符串中第一个出现的,连续的数字作为一个整数返回,若没有数字出现,返回0

程序员文章站 2022-03-10 22:08:20
...

湖大2020年计算机学院研究生复试题目

编写一个函数FirstInt,功能是将字符串中第一个出现的,连续的数字作为一个整数返回,若没有数字出现,返回0。

/***************************************************
****将字符串中第一个出现的连续的数字作为整数返回****
***************************************************/

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;

#define N 50

int main()
{
	int len = 0;
	int len1 = 0;
	char str[N];												//定义原始字符数组
	char str1[N];												//定义存储数字字符的数组
	cout<<"please input the string: "<<endl;
	while((cin.peek()!=EOF)&&(cin.peek()!='\n')&&len<N)			//键盘上输入回车表示字符输入完成
		{
		cin>>str[len];
		len++;													//记录str字符数组的长度
	}
	cout<<"The string is:"<<endl;
	for(int i=0;i<=len;i++)										//输出str字符数组
		cout<<str[i];
	cout<<endl;	
	/*********************************************************
	设置一个标志flag,当字符数组中出现数字时标志位置1,
	当字符数组中出现非数字的字符且标志位为1时代表查找结束
	*********************************************************/
	int flag = 0;												
	int j = 0;
	int sum = 0;
	int tmp = 1;												//存储字符需要乘的数字,如数字有3个,第一个数字要乘以100,第二个乘以10,第三个乘以1
	for(i=0; i<len; i++)
	{
		if((str[i]>='0') && (str[i]<='9') && (flag==0))
		{
			flag = 1;											//第一次查找到数字时,将标志位置为1
			str1[j] = str[i];
			j++;
		}
		else if((str[i]>='0') && (str[i]<='9') && (flag==1))	//连续找到的数字依次存入数组str1中
		{
			str1[j] = str[i];
			j++;												//记录str1数组的长度
		}
		else if(((str[i]<'0') || (str[i]>'9')) && (flag==1))	//代表查找结束
		{
			cout<<"the number string is: "<<endl;				//输出截取出的数字字符数组
			for(i = 0; i<j;i++)
			{
				cout<<str1[i];
			}
			cout<<endl;
			len1 = j;											//len1存储str1的长度
			for(j = 0; j<len1; j++)
			{
				tmp = 1;										
				for(int k = len1-j-1; k > 0; k--)
					tmp = tmp*10;
				tmp*=(str1[j]-'0');
				sum+=tmp;
			}
			cout<<"sum = "<<sum<<endl;
			cout<<endl;
 			exit(0);
		}		
	}
	cout<<"sum = "<<sum<<endl;									//没有找到输入的数字时返回0
	system("pause");
	return 0;
}

运行结果如下:
湖大2020年计算机学院研究生复试题目:输出字符串中第一个出现的,连续的数字作为一个整数返回,若没有数字出现,返回0