给定2到15个不同的正整数,用C语言编写计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍,

作者&投稿:言浩 (若有异议请与网页底部的电邮联系)
用C++编写:给定2到15个不同的正整数,计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍~

#include
#include
#include

using namespace std;

int ProduceSize();
void RandomFillArray(int arr[], size_t size);
void PrintArray(int arr[], size_t size);
size_t Test(int arr[], size_t size);


int main()
{
int size = ProduceSize();
int* anArray = new int[size];
RandomFillArray(anArray, size);

int count = Test(anArray, size);
cout << count << " pairs" << endl;

delete anArray;
}


int ProduceSize()
{
srand(static_cast(time(NULL) ) );
return (rand() % 14 + 2);
}


void RandomFillArray(int arr[], size_t size)
{
for(size_t i = 0; i < size; ++i) {
arr[i] = rand() % 10 + 1;
}
cout << "Array Produced: ";
PrintArray(arr, size);
}


void PrintArray(int arr[], size_t size)
{
for(size_t i = 0; i < size; ++i) {
cout << arr[i] << ' ';
}
cout << endl;
}


size_t Test(int arr[], size_t size)
{
int count = 0;
for(size_t i = 0; i < size; ++i) {
for(size_t j = 0; j < size; ++j) {
if(arr[i] == arr[j] << 1) {
++count;
cout << arr[i] << ' ' << arr[j] << endl;
}
}
}

return count;
}

都没怎么看懂你这个....
首先你的那个while永远执行部到里面去,因为你的j=1,a[j]就代表数组的第二个元素,但是你又没给第二个元素赋值,所以系统默认为0,那么你的a[j]!=0就是false,while就不会执行,还有你输入的值有什么作用?你报的错应该是数组索引超出界限吧,
我按你的题目大概写了一个简单的,也不知道是不是你要的东西,你可以看一下,希望对你有帮助
public static void main(String[] args)
{
int nums[] = new int[]{1,2,3,4,5,6,7,8,9};
for(int i=0;i<nums.length;i++){
for(int j=0;j<nums.length;j++){
//拿每一个数都和其余的做比较
if(nums[i]*2==nums[j]){
System.out.println(nums[i]+"----->"+nums[j]);
}
}
}
}

这个是完整代码, 附上一张运行截图:

#include <stdio.h>

#include <conio.h>

#define MAXSIZE 500

int main()

{

  

  int num[MAXSIZE][MAXSIZE];

  int i=0,j,k=0;

  int line,column[MAXSIZE]={0};

  int tmp;

  bool flag = false;

  printf("(每组数据的结尾请输入0,最后一组数据末尾请输入-1)
");

  

  printf("请输入数据:
");

  for(j=0;j<MAXSIZE;j++){

     scanf("%d",&num[i][j]);

     if(num[i][j]==-1)break;

     if(num[i][j]==0){i++;j=-1;}

        else column[i]++;    

  } 

  

  line = i;   

  printf("
要处理的数据如下:
");

  for(i=0;i<=line;i++){

     printf("第%d组:",i+1);

     for(j=0;j<column[i];j++)  

         printf("%d  ",num[i][j]);

     printf("
");

  }

  

  printf("
查找每组中一个数是另一个数的两倍:
");

  for(i=0;i<=line;i++){

     printf("第%d组:",i+1);

     tmp = num[i][k];

     if(column[i]<2)printf("少于2个数字,无法查找");

     for(j=k+1;j<column[i];j++){

        if((tmp*2==num[i][j])||(num[i][j]*2==tmp)){

           printf("(%d,%d);",tmp,num[i][j]);

           flag = true;

        }

        if(j==column[i]-1&&k<column[i]-2){k++;tmp = num[i][k];j=k;}

        else if(j==column[i]-1&&k==column[i]-2)

                if(flag==false){printf("没有找到合适的一对数");break;}

                else break;

        

     }

     flag = false;

     k = 0;

     printf("
");

  }

  getch();

  return 0;

}



#include<stdio.h>
main()
{
float a[15],i,j;
int k=0;
int i;
for(i=0;i<15;i++)
{
scanf("%f",&a[i]);
}
for(i=0;i<14;i++)
{
for(j=i+1;j<15;j++)
{
if(a[i]/a[j]==2||a[j]/a[i]==2)
{
printf("%f\t%f\n",a[i],a[j]);
k++;
}
}
}
printf("%d",k);
return 0;
}

把这些数都*2 再检查有没有在这数组中


有15个不同的正整数,从大到小排列。如果这15个数的平均值为13,那么第...
15*13=195 195-(1+2+3+4+5+6+7+8+9+10+11+12+13)=104 104=53+51 所以第2个最大是51

数字1---15中选4个不同的数,这4个数能组成和是4---15的数,(几个组合都...
因为1+2+3+4=10 因为2+3+4+5=14 数字1---15中选4个不同的数,这4个数能组成和不可能是4---9的数 这4个数能组成和是10---15的数,(几个组合都行)四个数是几?(1)1+2+3+4=10,四个数是1,2,3,4 (2)1+2+3+5=11,四个数是1,2,3,5 (3)1+2+3+6=12,1+2+4+...

1-15,每次取出两个不同的书,是它们的和是3的倍数,共有几种
3=1+2 计1种 6=1+5,2+4 计2种 9=1+8,2+7,3+6,4+5 计4种 12=1+11,2+10,3+9,4+8,5+7 计5种 15=1+14,2+13,3+12,4+11,5+10,6+9,7+8 计7种 18=3+15,4+14,5+13,6+12,7+11,8+10 计6种 21=6+15,7+14,8+13,9+12,10+11 ...

有15个不同的正整数,从大到小排列,如果这15个数的平均数是13,那么...
后13个数最小=1+2+3+...+13=91 和=15*13=195 第二最大=(195-91)÷2-1=51 不懂可追问,有帮助请采纳,谢谢!

有15个不同的正整数,从大到小排列。如果这15个数的平均值为13,那么第...
由于15个数的平均值为13,可知这15个数的和是15*13=195,有因为十五个正整数不同,且为了让第二个书最大,其余的十三个数应该是从1到13,和为(1+13)*13\/2=91,剩下的两个数和为195-91=104,设剩下的两个数为y,x。则有x+y=104,y>x>13,把这两个关系在xy坐标轴上画出,根据线性...

有15不同的数,从大到小排列。如果这15个数的平均值是13,那么第二个数...
15*13=195 设每个数比前一个数小1 (a1+a1-14)15\/2=195 a1=20 a2=19 第二个数的最大值是19

盒子里有15个球,编号分别是1~15各数,如果摸到的是2的倍数,小明赢,否则...
不公平!因为2的倍数的数和不是2的倍数的数个数不一样。如果16个球,1~16就公平了。

...a上有6个点,b上有9个点,这15个点能确定几个不同的平面
应该是351个平面,可以用组合的方法解出来,先考虑整个15个点每三个点可以组成一个平面,则有15*14*13\/6个平面,但直线上的如果同时取的三个点都在一条直线上则不能组成一个平面,所以减去6*5*4\/6和9*8*7\/6,得最后等于351个平面,算式为(15*14*13-6*5*4-9*8*7)\/6=351 ...

盒子里有15个球,分别写着1-15各数.若摸到的球是2的倍数,则小红赢,若...
(1)答:这样的约定不公平.因为摸到2的倍数的可能性是815,摸到不是2的倍数的可能性是715,815>715,也就是说小军赢的可能性大些,因此,这样的约定不公平.(2)答:不军不一定会输.根据这样的约定,小军赢的可能性质就大些,但赢和输的可能性都不是100%,因此,不军不一定会输.(3)...

一个n位二进制数字可代表多少个不同的值?
1位二进制数,就只有 0 1两种状态了。2位就有 00 01 10 11 四种状态了。。很容易推算的。。n位就有2的n次方个不同的值了。二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。二进制数(...

沙湾县19783875811: C语言:两倍 【循环】 -
敖欢艾司: int find2(int d[],int n) { int c=0; int i,j; for (i=0;i{ for (j=0;j{ if (i!=j && d[i] == d[j]*2)c++; } } return c; } 然后写函数读数据做输出就可以了

沙湾县19783875811: 给定2到15个不同的正整数,用C++语言编写计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍 -
敖欢艾司: 这个是完整代码, 附上一张运行截图: #include#include#define MAXSIZE 500 int main() { int num[MAXSIZE][MAXSIZE]; int i=0,j,k=0; int line,column[MAXSIZE]={0}; int tmp; bool flag = false; printf("(每组数据的结尾请输入0,最后一组数据末尾请输入-1)\n"); printf("请输入数据:\n"); for(j=0;j

沙湾县19783875811: 用C++编写:给定2到15个不同的正整数,计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍 -
敖欢艾司: #include #include using namespace std; int ProduceSize(); void RandomFillArray(int arr[], size_t size); void PrintArray(int arr[], size_t size); size_t Test(int arr[], size_t size); int main() { int size = ProduceSize(); int* anArray = new int[size]; ...

沙湾县19783875811: 给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍.怎做?
敖欢艾司: C语言?这个是完整代码, 附上一张运行截图:#include <stdio.h>#include <conio.h>#define MAXSIZE 500int main(){int num[MAXSIZE][MAXSIZE]; int i=0,j,k=0; int line,column[MAXSIZE]={0}; int tmp; bool flag = false; printf("(每组数据的...

沙湾县19783875811: C语言编程:给定N(2<=N<=100)个不同的正整数,输出其中最大的2个数. 求给出具体的程序 -
敖欢艾司: #include <stdio.h> int main() {int max,max2;int n;int tmp;while(scanf("%d",&n)!=EOF){max = max2 = 0;for(int i = 0 ;i<n;i++){scanf("%d",&tmp);if(tmp>max)max = tmp;else if(tmp>max2)max2 = tmp;}printf("...

沙湾县19783875811: C++编程给定2~15个不同的正整数,计算这些数里有多少个数对满足:数对中一个数是另一个数的两倍 -
敖欢艾司: #include<stdio.h> void main() { printf("请输入2~15个不同的正整数,以0结束:\n"); int a[15],count=0; while(count<16) { scanf("%d",&a[count]); if(a[count]==0) { if(count<2) { printf("输入正整数个数小于2个,请接着输入:"); continue...

沙湾县19783875811: c语言
敖欢艾司: 报什么错?

沙湾县19783875811: c语言给定n个正整数,根据各位数字之和从小到大进行排序. -
敖欢艾司: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33#include<stdio.h> intmain() {intn,m,k,t,i,j;inta[1000],b[1000]={0};while(scanf("%d",&n),n){for(i=0;i<n;i++){scanf("%d",&a[i]);m=a[i];do{b[i]...

沙湾县19783875811: C++程序语言设计,谢谢
敖欢艾司: //当输入的数据不满15个请输入0作为结束输入,然后回车. #include <iostream.h> void output(int *nums) { int index=15; for(int i=0;i<15;i++) { if(nums[i]==0) { index=i; break; } } for(int ii=1;ii<index;ii++) { for(int jj=0;jj<ii;jj++) { if(nums[ii]==2*nums[jj]) ...

沙湾县19783875811: c语言 给定一个10 - 1000的正整数(不含10和1000) 1求出它是几位数 2输出每一位数字 -
敖欢艾司: #include <stdio.h> void main(){ int a,n,k,m=0,num=0; scanf("%d",&n); if(n<=10||n>=1000) printf("Input error!"); else { k=n; while(k) {m=m*10+k%10;k/=10;num++;} } a=m; printf("%d是%d位数\n",n,num); while(a) {printf("%d ",a%10);a/=10;} m==n?printf("\nYes"):printf("\nNo"); }运行示例:

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网