如何 用c语言 实现输入不定数目的一行整数

 我来答
风若远去何人留
2015-11-13 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450135
专业C/C++软件开发

向TA提问 私信TA
展开全部
输入的数目不定,只是在设计阶段未知,在实际输入的时候,一定是有具体的数量的,所以对于这种情况,需要先做一个约定,常用的有两种方法:

1 在输入前,先输入一个总数,然后输入总数个整数。
2 约定输入的结束符,如遇到换行结束输入,或者以EOF为结束输入标记。

对于每种情况,处理的方式大致相同,但略有区别。
1 不需要保存每个值,而是只需要使用该值即可。这样可以读入每个数,逐个处理即可。

2 需要保存所有值的,可以将所有值保存在数组中,这个数组可以是静态的,也可以是动态的。
如果可以确定数据的最大规模,比如最多1000个数,那么可以先创建一个足够大的,比如1000个元素的数组,静态动态均可。然后依次将元素存入。
如果无法确定最大规模,那么就必须用动态数组。
对于先输入总数的情况,可以在得到总数后,根据总数申请一个动态数组。
对于总数在输入完成前始终未知的情况,可以先申请一定空间的值,在每次空间不足时,使用realloc函数,重新分配空间,实现不定量存储。
百度网友61576e2
2015-10-28 · TA获得超过162个赞
知道小有建树答主
回答量:189
采纳率:100%
帮助的人:101万
展开全部
先将输入的数据按字符串一次读入,后面自己分离数据。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
艺燊
2011-11-30 · TA获得超过257个赞
知道小有建树答主
回答量:113
采纳率:0%
帮助的人:112万
展开全部
定义一个字符型的一维数组,char s[81];——最多能接收80个数字字符,即一行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友482b105da
2011-12-01 · TA获得超过202个赞
知道小有建树答主
回答量:227
采纳率:0%
帮助的人:113万
展开全部
假定以空格隔离整数,遇到非法数字退出

#include "stdafx.h"

void main(void)
{
char buffer[1024];
char* p = buffer;
int data[32];

gets(buffer);

int n = 0;
while (*p != 0)
{
// 过滤空格
while (*p == ' ' || *p == '\t')
p ++;

// 读整数
if (sscanf(p, "%d", &data[n]) == 0)
break;

n ++;

// 偏移指针,包括符号和数字
p ++;
while (*p >= '0' && *p <= '9')
p ++;
}

for (int i = 0; i < n; i ++)
printf("%d\n", data[i]);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式