我怎样才能知道输入的数字是什么时候? 13 C

时间:2015-12-19 19:39:31

标签: c

我需要制作一个必须扫描整数的程序,它们必须在1到30之间,当第二次输入某个数字时,我必须打印出它的数字是什么,输入的位置是什么

例如,如果scanf' d编号是1 3 5 7 3,则程序必须printf"编号3是第二个扫描编号"。

让我烦恼的是如何找出输入数字的位置,如何在第二位置之前找出3输入。

我必须只用stdio.h制作这个程序。

2 个答案:

答案 0 :(得分:2)

您可以将读取的数字存储在数组中,如下面的代码:

# inside get() as above, after self.flush():
def streaming_callback(chunk):
    self.write(chunk)
    self.flush()
yield AsyncHTTPClient().fetch(url, streaming_callback=streaming_callback)
self.finish()

另一种方法(更好,但只有可能因为输入有限),是在数组中存储首次找到数字的位置,如果还没有找到,则为-1,如下所示:

#include <stdio.h>

int main () {
    int vet[10000]; // assuming you wont enter more than 10000 numbers
    int i = 0;
    while (1) {
        scanf ("%d", &vet[i]);
        for (int j = 0; j < i; j++) {
            if (vet[i] == vet[j]) {
                printf ("Number %d was %dth scanned number", vet[i], j+1);
                break;
            }
        }
        i++;
    }
}

答案 1 :(得分:1)

您希望保留一个30位数组,以跟踪输入每个数字的第一个索引。 请记住,数组以索引0开头。 此程序将无限期运行,直到您按ctrl + C

#include <stdio.h>
#include <stdlib.h>
int main()
{
    printf("Hello world!\n");
    int indexOfFirstOccurrence[30];
    int i;
    for(i=0;i<30;++i)indexOfFirstOccurrence[i]=0;
    int counter=1;
    int input;
    while(1)
    {
        printf("please enter input #%d:  ",counter);
        scanf("%d", &input);
        //error checking would be advised

        if(indexOfFirstOccurrence[input-1]==0)indexOfFirstOccurrence[input-1]=counter;
        printf("the first time %d was entered was at iteration %d \n",input, indexOfFirstOccurrence[input-1]);
        counter++;
    }

    return 0;
}