在c语言中,如何把一组数进行分组处理!比如1,2,3,4,5,6,7。我想把他们分成两组来处理!怎么分求

在c语言中,如何把一组数进行分组处理!比如1,2,3,4,5,6,7。我想把他们分成两组来处理!怎么分求,第1张

你的意思是数有7个,不能平均分成两组吗?

那么有几种方案,看你具体是要进行什么运算。

可以忽略中间一个即4,或者忽略最后一个即7

或者把4算到两组中,即分成1,2,3,4和4,5,6,7

如果你是不知道怎么让一组变成两组来 *** 作,可以用指针的方法,下面演示求两组的平均数,并忽略7

int data[]={1,2,3,4,5,6,7};

int p=&data[3];

int i;

for(i=0;i<3;i++)

data[i]=(data[i]+p[i])/2;

#include "stdafxh"

#include "stdioh"

int main(int argc, char argv[])

{

int i,j,k;

int Count = 0;

for(i=1;i<10;i++)

for(j=1;j<10;j++)

for(k=1;k<10;k++)

{

if(j!=i && k!=i && k!=j)

{

printf("%d\t",100 i + 10 j + k);

Count ++;

if(Count % 5 == 0) printf("\n");

}

}

return 0;

}

你上机运行一下吧,结果是对的!

如果你是希望通过输入来确定b的个数,又不想多申请空间,那就是动态数组的声明了,能够实现。

首先输入n,表示要输入的b[]的元素个数,在通过这个语句:

int b= (int)malloc(nsizeof(int));

就能够通过输入的n来动态地给b申请合适的空间。

如果b[]已存在,只是想求得其中元素个数的话,那恐怕做不到,除非你的数据有一定的特点,比如都是整数,而b[]初始化为全负,那么可以通过一个循环获得b数组的元素个数

那个限制的策略到底是什么

也就是限制的数据是怎么得来的

如果知道这个的话

写一个枚举算法的程序就行了

枚举这10个数据所有的组合情况

总的组数为 (C2/10)(C2/8)(C2/6)(C2/4)

一点也不大

然后把每组组合按照条件所要求的限制数据判断一下

如果全都成立 就可以输出

否则就继续下一组

/通过一次循环分别按性别和年龄统计人数

(c)hele 2013/03/04/

#include<stdioh>

#define N 8//N是统计人群的最小年龄

#define M 20//年龄跨度设为20岁

enum year{y1=N,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16,y17,y18,y19,y20};

struct hum{

year old;

int num1[M];

char male[2];

int num2[2];

}hum;//构建的结构体,统计年龄跨度20,2种性别的人群

void display()

{int i;

for(i=0;i<M;i++)

{

printf("old:%d\t:%d\n",N+i,humnum1[i]);

}

for(i=0;i<2;i++)

printf("male:%c\t:%d\n",hummale[i],humnum2[i]);

}

void initial()

{hummale[0]='0';

hummale[1]='1';

}

int main()

{initial();

char c[8];

FILE fp;

if((fp=fopen("intxt","r"))==NULL)

{

printf("Can't open intxt");

return 1;

}

while(!feof(fp))

{fscanf(fp,"%s",c);

//读年龄

int old;

fscanf(fp,"%d",&old);

humold=(year)old;//强制类型转换,使humold是old的值

humnum1[old-y1]++;//count number of every year old

//读性别

int male;

fscanf(fp,"%d",&male);

humnum2[male]++;//count number of every 性别

}

display();

return 0;

}

说明:

1仅供参考

2注意“intxt"文件格式,其文件结尾不要有空白行,正文只有姓名、年龄、性别三种,用空格隔开,如图

3尚有缺陷,没有使用_wchar,对特定中文名字会统计错误,所以尽量用英文名字。

n[59]=0;//人的学号

m[5]=0;//组号

for(j=0;j<=59;j++){//每个人进入分组

f=0;//用语判断是否分配到组

while(f!=1){//当为1时候就是这人已经被分组

for(i=1;i<=10;i++)//每组最大人数

z=int(rnd6)+1;//随即到第几组

if(m[z]==10)}//该组是否满人

{ //该组满人

}else{//人没满的时候

n[j]=z;//记录几号分配到第几组

m[z]+=1;//该组人数加1

f=1;//该人已经分配

next;//退出for i的循环

}}}

c语言好久的事了,大致思路吧,有错误,定义之类的请多多包含

以上就是关于在c语言中,如何把一组数进行分组处理!比如1,2,3,4,5,6,7。我想把他们分成两组来处理!怎么分求全部的内容,包括:在c语言中,如何把一组数进行分组处理!比如1,2,3,4,5,6,7。我想把他们分成两组来处理!怎么分求、用C语言编一个分组问题、C语言 数据分组的算法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9397274.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存