湖大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;
}
运行结果如下:
上一篇: 浅析浅拷贝与深拷贝
下一篇: jquery.eraser画笔擦除