给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍.

给定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
liuyyan 1年前 已收到1个回答 举报

zzy924 幼苗

共回答了13个问题采纳率:92.3% 举报

# include
int main(void)
{
int a[20][15];
int i=0,j=0,k,t,w,sum=0;
scanf("%d",&t);
while(t!=-1)
{
if(t!=0)
a[i][j++]=t;
else
{
a[i][j]=t;
i++;j=0;
}
scanf("%d",&t);
}
for(k=0,j=0,w=0;k

1年前 追问

4

liuyyan 举报

#include int main() {int a[15],i,j,t,h; for (i=0;i<15;i++) {scanf("%d",&a[i]); if(a[i]==-1)break; if(a[i]==0)break; h=i;//h表示当输入到0时数组的长度 } for(i=0;i

举报 zzy924

首先,你这样写只能处理一行数据,你想想,一遇到0就已经break,退出了输入循环 其次,你的计数器t没有初始化为0,得到的肯定是个未知数

liuyyan 举报

谢了。。
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 4.029 s. - webmaster@yulucn.com