题目:输入n行数字(2-15个),每行以0结尾,文件以-1结尾。然后找出找出每行中有几个一个数是另一个数的两倍。
解题思路:定义一个二维数组a【i】【j】,利用while循环输入,当输入为0则i+1,若为-1则输入结束,定义一个一维数组b【i】,用b【i】来记录每行有多少数,利用三重for循环来判断每行中有几个一个数是另一个数的两倍,定义一个c【i】来记录每行有几个一个数是另一个数的两倍。然后利用for循环输出c【i】。
细节处理:定义两个一位数组分别存放,二维数组每行有几位数和每行有几个一个数是另一个数的两倍,利用continue和break来编写代码。
代码:
#include<bits/stdc++.h>using namespace std;
int main()
{
int a[100][100],b[100],c[100]={0},i=0,j=0,n,m;
while(1)
{
cin>>a[i][j];
{
if(a[i][j]==0)
{b[i]=j;
j=0;
i++;
continue;}
j++;
}
if(a[i][0]==-1)
{n=i;
break;}
}
for(i=0;i<n;i++)
{
for(j=0;j<b[i];j++)
for(m=0;m<b[i];m++)
if(a[i][j]*2==a[i][m])
c[i]+=1;
}
for(i=0;i<n;i++)
cout<<c[i]<<endl;
return 0;
}
感想:要灵活的运用数组和多重循环。