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

标签: C++编程  数据结构  字符串  算法

湖大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;
}

运行结果如下:
在这里插入图片描述

版权声明:本文为zandy_1985原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zandy_1985/article/details/106193413