从屏幕输入一行数字,以空格分隔,如何分别存放到数组中
2014-03-20 23:27
274 查看
要求:
在屏幕中,输入一行数字,以空格分隔,其中每个数字的长度不一定一样,要求将这些数字分别存放到数组中。
例如:
输入:1 123 1234 22 345 25 5
对应的数组的值应该为a[0]=1,a[1]=123,a[2]=1234,a[3]=22,a[4]=345,a[5]=25,a[6]=5;
输入:2345 23 124 2
对应的数组的值应该为a[0]=2345,a[1]=23,a[2]=124,a[3]=2;
这个问题的难点是如何在输入的一串字符中找到连续的数字作为一个数值,然后保存到数组中。
方法一:
利用getchar函数和ungetc函数,通过getchar函数判断回车,以及判断时候为数字,然后通过ungetc函数,将通过getchar函数获得的字符送回缓冲区,再通过cin函数取出作为int型数组。
程序代码:
#include<iostream>
using namespace std;
int main()
{
int a[50];
int i = 0;
char c;
while((c=getchar())!='\n')
{
if(c>='0'&&c<='9')
{
ungetc(c,stdin);
cin>>a[i++];
}
}
for(int j=0;j<i;j++)
{
cout<<"a["<<j<<"]:"<<a[j]<<endl;
}
}运行结果:
![](https://img-blog.csdn.net/20140320215556546?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXN5emI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
方法二:
使用字符串保存连续的数字,以获得完整的整数,每当遇到空格的时候,string变量就清空,然后从新获取一个连续的数字。可以通过string的c_str函数将string变量转化为char型的,然后通过atoi函数再转化为数字。
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
int a[50];
int i = 0;
char c;
string str = "";
while((c=getchar())!='\n')
{
if(c>='0'&&c<='9')
{
str += c;
}
else if(c ==' ')
{
a[i++] = atoi(str.c_str());
str = "";
}
}
for(int j=0;j<i;j++)
{
cout<<"a["<<j<<"]:"<<a[j]<<endl;
}
}
在屏幕中,输入一行数字,以空格分隔,其中每个数字的长度不一定一样,要求将这些数字分别存放到数组中。
例如:
输入:1 123 1234 22 345 25 5
对应的数组的值应该为a[0]=1,a[1]=123,a[2]=1234,a[3]=22,a[4]=345,a[5]=25,a[6]=5;
输入:2345 23 124 2
对应的数组的值应该为a[0]=2345,a[1]=23,a[2]=124,a[3]=2;
这个问题的难点是如何在输入的一串字符中找到连续的数字作为一个数值,然后保存到数组中。
方法一:
利用getchar函数和ungetc函数,通过getchar函数判断回车,以及判断时候为数字,然后通过ungetc函数,将通过getchar函数获得的字符送回缓冲区,再通过cin函数取出作为int型数组。
程序代码:
#include<iostream>
using namespace std;
int main()
{
int a[50];
int i = 0;
char c;
while((c=getchar())!='\n')
{
if(c>='0'&&c<='9')
{
ungetc(c,stdin);
cin>>a[i++];
}
}
for(int j=0;j<i;j++)
{
cout<<"a["<<j<<"]:"<<a[j]<<endl;
}
}运行结果:
方法二:
使用字符串保存连续的数字,以获得完整的整数,每当遇到空格的时候,string变量就清空,然后从新获取一个连续的数字。可以通过string的c_str函数将string变量转化为char型的,然后通过atoi函数再转化为数字。
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
int a[50];
int i = 0;
char c;
string str = "";
while((c=getchar())!='\n')
{
if(c>='0'&&c<='9')
{
str += c;
}
else if(c ==' ')
{
a[i++] = atoi(str.c_str());
str = "";
}
}
for(int j=0;j<i;j++)
{
cout<<"a["<<j<<"]:"<<a[j]<<endl;
}
}
相关文章推荐
- 从屏幕输入一行数字,以空格分隔,如何分别存放到数组中
- 从屏幕输入一行数字,以空格分隔,如何分别存放到数组中
- 从屏幕输入一行数字,以空格分隔分别存放到数组中
- C++从屏幕输入一行以空格分割的数字,存入整型数组
- [华为]输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数
- 用户输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
- 输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。
- (c++)输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。
- 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
- 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
- java中输入一行字符,分别统计英文字母、空格、数字的个数
- [c++]输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。(写的代码有疑惑,求解求教)
- ——输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数
- 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数
- 华为OJ 初级:输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数
- 编写一个程序,输入一行字符,以回车结束,分别统计出其中的英文字母、空格、数字和其他字符的数
- 华为机试: 计算字符串的相似度、输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数
- c语言:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
- 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
- 11_输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数