求高手,怎么用c语言或java在n个整数中找k个数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求高手,怎么用c语言或java在n个整数中找k个数?相关的知识,希望对你有一定的参考价值。
一组数据有n个整数,其中有a个p,b个q,c个s,...... 这组数据的平均值为x,要在这组数据中找k个数平均值x可以不是整数,30=<n<=40, 4=<k<=10, 1=<a<=10, 1=<b<=10, 1=<c<=10,......找出的这k个数的和值与这组数据的平均值x的k倍的差值的绝对值要小于1(即|k个数的和值-kx|<1),这k个数允许有相同的数,怎么用c语言或java找出这k个数并把所有的组合排列出来?谢谢!
参考技术A 我勒个去啊。没有这么BT的程序吧。写一个函数,使N个整数按由小到大的顺序排列,要求在主函数中输入10个数,并输出排好序的数
用C语言编写:写一个函数,使N个整数按由小到大的顺序排列,要求在主函数中输入10个数,并输出排好序的数
要求用指针来实现
int i,j,k,t;
for (i = 0; i<N-1; i++)
k=i;
for (j=i+1; j<N; j++)
if (*(a+k)>*(a+j)) k=j;
if (k!=i)
t=*(a+k);
*(a+k)=*(a+i);
*(a+i)=t;
*****************************************
示例程序:
//---------------------------------------------------------------------------
#include <stdio.h>
void sort(int *a,int N)
int i,j,k,t;
for (i = 0; i<N-1; i++)
k=i;
for (j=i+1; j<N; j++)
if (*(a+k)>*(a+j)) k=j;
if (k!=i)
t=*(a+k);
*(a+k)=*(a+i);
*(a+i)=t;
int main(int argc, char* argv[])
int a[10],i;
for (i = 0; i < 10; i++) //对数组进行填充
a[i]=10-i;
for (i = 0; i < 10; i++) //输出排序之前的情况
printf("%d ",a[i]);
putchar('\n');//换行
sort(a,10);//调用sort()函数进行排序
for (i = 0; i < 10; i++) //输出排序之后的情况
printf("%d ",a[i]);
putchar('\n');
return 0;
//--------------------------------------------------------------------------- 参考技术A 解:源程序如下:
#define n 10
int sort(int a[])
int i,j,t;
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (a[i]>a[j])
t=a[j];
a[j]=a[i];
a[i]=t;
main()
int a[n],i;
for (i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a);
printf("the sort numberes is:\n");
for (i=0;i<n;i++)
printf("%3d",a[i]);
参考技术B #include<stdio.h>
void exchange(int a[])
int i,j,temp;
for(j=9;j>=0;j--)
for(i=0;i<j;i++)
if(a[i]>a[i+1])
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
main()
int a[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
exchange(a);
for(i=0;i<10;i++)
printf("%d ",a[i]);
以上是关于求高手,怎么用c语言或java在n个整数中找k个数?的主要内容,如果未能解决你的问题,请参考以下文章
求C语言程序,从1~2012中取k个数,取出的数中任意两个数之差不能为5或8,求k的最大值
用JAVA语言编译:数组中包含n个整数,从其中找出k个最小的数,写出你能想到的最快的方法!!!