我需要制作一个必须扫描整数的程序,它们必须在1到30之间,当第二次输入某个数字时,我必须打印出它的数字是什么,输入的位置是什么
例如,如果scanf' d编号是1 3 5 7 3,则程序必须printf"编号3是第二个扫描编号"。
让我烦恼的是如何找出输入数字的位置,如何在第二位置之前找出3输入。
我必须只用stdio.h制作这个程序。
答案 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;
}