通常可以存储一系列输入并在以后打印出来而不使用数组吗?
我需要顺序取整数输入,并将-1标记作为输入的结尾,而不将其作为输入(称为x n )。输出应该是序列a n where
a n := x n -1 + x n ,其中n> 1
以下是我的代码,但输出与输入一起发生,而不是一次性,因为问题确实需要。这是代码:
table.on('click', 'tr.parent', function() {
var wavesurfer = Object.create(WaveSurfer),
container = $(this).next('tr').find('.wawe')[0];
wavesurfer.init({
container: container,
waveColor: 'violet',
progressColor: 'purple'
});
wavesurfer.load(container.getAttribute('url'));
});
输入: 1 2 3 4 -1
输出: 3 5 7
答案 0 :(得分:2)
我不完全确定,但你的任务的目的可能是熟悉列表。然后,您不需要数组来存储输入值:
struct list {
int val;
struct list * next;
};
处理清单应抽象为一般功能:
struct list * list_add(struct list * lst, int val) {
struct list * node =
(struct list *) malloc(sizeof(struct list));
node->val = val;
node->next = lst;
return node;
}
void list_free(struct list * lst) {
while (lst) {
struct list * temp = lst;
lst = lst->next;
free(temp);
}
}
struct list * list_nreverse(struct list * lst) {
struct list * nlst = lst;
if (lst) {
lst = lst->next;
nlst->next = NULL;
while (lst) {
struct list * temp = lst;
lst = lst->next;
temp->next = nlst;
nlst = temp;
}
}
return nlst;
}
要使用该列表,您可以将输入值存储在列表中,或者保持接近您已有的代码,动态计算输出(相邻总和)并将其存储在列表中,打印整个清单 最后(以相反的顺序):
int current;
int previous;
struct list * output = NULL;
scanf("%d", &previous);
while ((!scanf("%d", ¤t) == 0) && (current != -1)) {
sum = previous + current;
previous = current;
output = list_add(output, sum);
}
output = list_nreverse(output);
struct list * iterator = output;
while (iterator) {
printf("%d ", iterator->val);
iterator = iterator->next;
}
list_free(output);
注意:代码目前尚未经过测试,但应该让您知道如何实现这一目标。
答案 1 :(得分:0)
只需附加一个字符串即可。在输入结束时,打印字符串。
一个字符串可以视为一个数组。也许这会使这个答案无效
否则,不。您需要一个数组来存储输入或计算。
糟糕......正如Daniel Jour所说in his answer你可以使用列表而不是数组。
答案 2 :(得分:0)
整数输入按“扫描”顺序进行。要查找输入的结尾,请使用-1检查扫描返回值,以便扫描null元素。
以下是我的代码,输出根据您的要求进行。输出一次性发生你的问题确实需要@subrat。代码如下:
#include <stdio.h>
int main()
{
int xo,a;
int sum =0;
int diff=0;
int previous=0;
scanf("%d",&xo); //dont need xo here :: use previous only
previous = xo;
while ((scanf("%d",&a)!=-1)) //important to use sum=0
{
sum = previous+a;
previous = a;
printf("%d ",sum);
sum=0;
}
return 0;
}
INPUT:1 2 3 4 -1
输出:3 5 7 3