你的意思是数有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语言 数据分组的算法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)