[问题] 阵列宣告问题

楼主: arashi2011 (QQ)   2017-04-17 17:15:38
关于阵列的一个小问题 如果我想要这样的结果
Enter numbers of points: 5
Enter points: -1 2 3 6 -3 -5 -1 0 10 -24
The points are: (-1.00, 2.00), (3.00, 6.00), (-3.00, -5.00), (-1.00, 0.00),
(10.00, -24.00)
我目前是想用二维阵列把数字存起来 像这样
printf("Enter numbers of points: ");
scanf("%d", &n);
for(i=0; i<n; i++){
for(j=0; j<2; j++) scanf(" %d", &num[i][j])
for(i=0; i<n; i++){
for(j=0; j<2; j++) printf("%lf", num[i][j]); }
但是这样数字只能一个一个输入 如果要像题目一次输入的话 要怎么改比较好呢
另外想问像这样类似的问题 如果输入n之后才能知道需要的阵列大小
宣告的时候要怎么宣告呢 我目前是把大小设成一个相对大的数字 但我想应该有更好的方法 谢谢
作者: MOONRAKER (㊣牛鹤鳗毛人)   2017-04-17 17:20:00
当一个大字串输入 然后照空白自己劈开转换够大就好了 1024也可以 不要纠结什么“最好”的方法新手会在这种地方想很久还发明很奇葩的作法以前在本版看过一个不断malloc 一次增加一个byte初学阶段后可以用其他更方便的资料结构
作者: Hazukashiine (私は幸せです)   2017-04-17 17:22:00
如果接受 C99 的话, Variable-length Array 试试看如果不行的话 还是可以 malloc 出刚刚好大小的阵列
作者: longlongint (华哥尔)   2017-04-18 07:47:00
读档 把档案重导到标准输入楼上讲的方法 or 用 c++ vector or 动态配置
作者: steve1012 (steve)   2017-04-18 14:03:00
可以用stl 的话可以用vector of pair
作者: ilms49898723 (LittleBird)   2017-04-18 15:04:00
你的写法不是就能一次输入了...?
作者: hunandy14 (Charlott.HonG)   2017-04-19 02:13:00
空白会自己变成下一个,这样写就可以一次导入了,试试
作者: bbalabababa (巴拉巴巴巴)   2017-04-19 03:48:00
开够大的阵列while scanf!=EOF

Links booklink

Contact Us: admin [ a t ] ucptt.com