两倍问题。
Description给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍。
比如给定1 4 3 2 9 7 18 22,得到的答案是3,因为2是1的两倍,4是2个两倍,18是9的两倍。
Input
输入包括多组测试数据。每组数据包括一行,给出2到15个两两不同且小于100的正整数。每一行最后一个数是0,表示这一行的结束后,这个数不属于那2到15个给定的正整数。输入的最后一行只包括一个整数-1,这行表示输入数据的结束,不用进行处理。
Output
对每组输入数据,输出一行,给出有多少个数对满足其中一个数是另一个数的两倍。
Sample Input
1 4 3 2 9 7 18 22 0
2 4 8 10 0
7 5 11 13 1 3 0
-1
Sample Output
3
2
0
以上是原题。
以下是我的代码:
# include <stdio.h>
int main()
{
int a[16],i=0,j=0;
int count=0,k=0;
while ( a[i-1]!=0 )
{
scanf("%d",&a[i]);
i++;
k++;
}
for(i=0;i<k-1;i++)
for(j=0;j<k-1;j++)
{
if(a[i]-a[j]==a[j])
count++;
}
printf("%d\n",count);
count=0,k=0;
return 0;
}
在vc2008下,这段代码能实现对一组数据的测试,但不知为何在vc6.0下运行会直接输出0然后结束,貌似是数组定义的问题。
请大家帮忙看看为啥,另外请教一下如何实现题目中所说的当输入-1时,程序结束。