C语言的一个输入问题

例如SampleInput35715第一个3表示输入的数的个数,5715总共是三个数。但是如何让3与5715在同一行输入啊?不知道我这么说能说明白么就是说如果我用scan... 例如
Sample Input
3 5 7 15
第一个 3 表示输入的数的个数 ,5 7 15总共是三个数。
但是如何让 3与 5 7 15在同一行输入啊?
不知道我这么说能说明白么
就是说 如果我用
scanf("%d",&n);
for(i;i<n;i++)
scanf("%d",&a[i]);的话 先输入一个数再敲下回车就不满足要求了。。。
展开
 我来答
L_o_o_n_i_e
2011-01-22 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5246万
展开全部
可以的。scanf 到输入缓冲区 去依次取数。无论你的数 放在一行,还是分成多行,都没关系。
例如:
3 5 7 15

3 5
7
15
都没关系。
===============
也可以用动态数组,第一个数为 n, 后面读 n 个数:
#include <stdio.h>
int main()
{
int i,n;
int *a;
scanf("%d",&n);
a = (int*) malloc(n*sizeof(int));
for (i=0;i<n;i++)scanf("%d",&a[i]);
for (i=0;i<n;i++)printf("%d ",a[i]);
}
============
for(i;i<n;i++) -- for(i=0;i<n;i++) // =0 不要省。
lin3348
2011-01-22 · TA获得超过273个赞
知道小有建树答主
回答量:235
采纳率:0%
帮助的人:148万
展开全部
就这样输入,用空格隔开,最后按回车不就行了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
brisrb
2011-01-22 · TA获得超过1417个赞
知道小有建树答主
回答量:1041
采纳率:0%
帮助的人:258万
展开全部
赞观察力。 比那些张口要代码的人好多了:)

当然其他人回答的都正确,语法这样规定的,但是为什么要这么规定呢?相信scanf()漏掉&的人非常多吧。

我认为主要原因是实现的方便。

需要注意的地方是 scanf和printf的根本区别在于scanf需要改变参数的直,而print不需要改变参数。
因为scanf需要改变变量的值,而c语言的参数都是通过pass by value,函数内部得到的是变量的copy
比如如下函数
void set_zero(int x)
{
x=0;
}
执行后不会把x设为0, 因为函数内部只对copy进行了操作。

为了能够操作实际变量,c语言需要使用指针
void set_zero(int *px)
{
*px=0;
}
就可以改变x所指对象的值。
调用时的语法为
int x=3;
set_zero(&x);
//这里x就是0了
scanf也是类似的。同样的也可以解释为什么
char* string;
scanf("%s",string) 的string不需要&号,也因为string本身就是指针。

反过来看printf, printf不需要改变他的参数,而只需要参数的value。 于是printf不见接受指针,传来的指针在printf看来和一般的unsigned int没有区别, 于是直接打出对应的int value, 也就是地址了

ps:
在c语言中由于没有引用(reference)的机制,scanf只好使用这样不友好的语法(个人认为)。c++中引入了引用的概念。于是
cin就不需要取地址了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友17cdc63
2011-01-22 · 超过18用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:0
展开全部
这样就可以吧?整形输入的时候空格和回车是同等效力的吧,你输入第一个空格后第一个数就读进去了,然后再循环读后面的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式