从屏幕输入一行数字,以空格分隔,如何分别存放到数组中

要求:

在屏幕中,输入一行数字,以空格分隔,其中每个数字的长度不一定一样,要求将这些数字分别存放到数组中。

例如: 

输入: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;
	}
}



  • 14
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 如果你想把一行据放入一个一维数组中,可以按照以下步骤进行: 1. 定义一个一维组,组的长度应该等于一行据的长度。 2. 读取一行据。 3. 将一行据按照分隔符进行分割,分割后的字符串组即为一行据中的各个元素。 4. 将字符串数组中的元素转换为对应的据类型,如整、浮点等。 5. 将转换后的元素依次放入定义好的一维数组中。 下面是一个示例代码,假设要读取一个以逗号分隔的整据,将其放入一个整类型的一维数组中: ```python # 定义一个长度为10的整类型的一维组 arr = [0] * 10 # 读取一行据 line = input() # 按照逗号分割字符串,得到字符串组 str_arr = line.split(",") # 将字符串数组中的元素转换为整类型,并放入一维数组中 for i in range(len(str_arr)): arr[i] = int(str_arr[i]) ``` 上面的代码中,首先定义了一个长度为10的整类型的一维组,然后读取一行据,将其按照逗号分割得到字符串组,接着将字符串数组中的元素转换为整类型,并放入定义好的一维数组中。 ### 回答2: 将一行放入一个一维数组中有多种方法,以下为其中一种示例: 假设要放入的一行据为[1, 2, 3, 4, 5],可以定义一个长度为5的一维组arr来存储: ```python arr = [1, 2, 3, 4, 5] ``` 这样,arr数组中的每个元素依次对应原来一行中的每个数字。 可以通过索引来访问和修改数组中的元素,比如arr[0]表示数组中的第一个元素,即1。 若要打印数组中的元素,可以使用循环遍历组的每个元素,并依次输出: ```python for i in range(len(arr)): print(arr[i]) ``` 这样就可以依次输出组arr中的每个元素。 这种方法能够方便地将一行据存储到一个一维数组中,并且通过索引可以灵活地操作数组中的元素。当然,还有其他方法可以实现类似的操作,具体取决于具体的编程语言和环境。 ### 回答3: 将一行放入一个一维数组中,可以通过字符串的分割和转换实现。具体步骤如下: 1. 首先,获取一行文本内容,如通过用户输入或从文件读取。 2. 使用适当的方法,将一行文本内容按照指定的分隔符进行分割。常见的分隔符包括空格、逗号、分号等。 3. 将分割后得到的子串逐个转换为对应的据类型,并依次存放到一维数组中。可以使用字符串转整、浮点等方法进行转换。 4. 最后,将得到的一维组作为结果输出。 以下是一个具体的示例代码: ```python def parse_line_to_array(line, delimiter): elements = line.split(delimiter) # 将文本按照指定的分隔符进行分割,得到子串列表 arr = [] # 定义一个空的一维组 for element in elements: converted_element = int(element) # 将子串转换为整 arr.append(converted_element) # 将转换后的元素添加到数组中 return arr # 返回转换后的一维组 line = input("请输入一行文本:") delimiter = input("请输入分隔符:") array = parse_line_to_array(line, delimiter) print("转换得到的一维组为:", array) ``` 以上代码可以实现将一行文本内容按照指定的分隔符转换为一维组,并输出最终结果。当然,该代码只是一种简单的实现方式,根据具体需求,可能需要进行更复杂的处理或优化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值