c语言数组答案

第一题:在数组a中,存放有n个学生的成绩.试编一函数:将低于平均分的学生
人数m由函数值返回,将低于平均分的分数由数组b带回.
int fun(int a[],int n,int b[])
{
int i,m=0,aver=0;
for(i=0;iaver/=n;
for(i=0;iif(a[i]return m;
}

第二题:试编一函数:求出1000之间能被7或11整除,但不能同时被7或11整除的
所有整数的个数n由函数值返回,并将符合条件的数放在数组a中带回.
int fun(int a[])
{
int i,n=0;
for(i=1;i<1000;i++)
if((i%7==0&&i%11!=0)||(i%7!=0&&i%11==0)) a[n++]=i;
return n;
}

第三题:试编一函数:将大于整数m且紧靠m的k个素数存入数组a中.
void fun(int m,int k,int a[])
{
int i,n,data,flag;
data=m+1; n=0;
while(n{
flag=1;
for(i=2;i<=data/2;i++)
if(data%i==0)
{
flag=0; break;
}
if(flag) a[n++]=data;
data++;
}
}

第四题:试编一函数:在数组a中有n个整数,要求把下标从0到p(p小于等于n-1)的数
平移到数组的最后.
如:原始内容: 1,2,3,4,5,6,7,8,9,10; 当p=4时:
移后内容: 6,7,8,9,10,1,2,3,4,5
void fun(int a[],int n,int p)
{
int i,j,t;
for(i=0;i<=p;i++)
{
t=a[0];
for(j=1;ja[n-1]=t;
}
}

第五题:试编一函数:在具有n个数据的数组a中,求出次最大值的下标并由函数值返回.
int fun(int a[],int n)
{
int i,j,max,may;
if(a[0]>a[1])
{
max=0; may=1;
}
else {

max=1; may=0;
}
for(i=2;iif(a[i]>a[max])
{
may=max;
amx=i;
}
else if(a[i]>a[may] && a[i]!=a[max]) may=i;
return may;
}

第六题:在数组a中有n个四位数.试编一函数,要求按每个数的后三位的大小进行升序排
列,当后三位等相同时,则对这些数值按原始四位数据进行降序排序.将排序后
的前10个数存入数组b中.(提示:可采用选择排序)
int fun(int a[],int n,int b[])
{
int i,j,k,t,m=10;
for(i=0;i{
k=i;
for(j=i+1;jif(a[j]%1000else if(a[j]%1000==a[k]%1000 && a[j]>a[k]) k=j;
if(k!=i)
{
t=a[i]; a[i]=a[k]; a[k]=t;
}
}
for(i=0;ireturn m;
}

第七题:在三位数(100至999)中寻找符合下面条件的整数.它即是完全平方数,又有两位
数字相同.(如:144,676;)并将符合条件数的个数n由函数值返回,符合条件的数
存入数组a中返回.
int fun(int a[])
{
int i,j,hun,ten,data,n=0;
for(i=10;i<32;i++)
{
j=i*i;
if(j>=100&&j<=999)
{
hun=j/100;
ten=j%100/10;
data=j%10;
if(hun==ten||ten==data||data==hun) a[n++]=j;
}
}
return n;
}

第八题:判断一个长整型数是否为回文数(回文数是指其数字左右对称的整数).当该数是回文
数时,函数值返回1,

否则返回0.(提示:利用逻辑量flag进行操作).
int fun(long m)
{
int i=0,n=0,flag=1,a[20];
while(m)
{
a[n]=m%10; m=m/10; n++;
}
while(i<=n/2 && flag)
if(a[i]!=a[--n] flag=0;
else i++;
return flag;
}

第九题:在数组a中存有n个数据,试编一函数:依次从数组中取出一个数据,如查该数连续大于该
数以后的5个数且该数是奇数,统计出满足此条件数的个数m由函数值返回,并把这些数按
从小到大的顺序存入数组b中.
int fun(int a[],int n,int b[])
{
int i,j,flag,m=0;
for(i=0;i{
for(j=i+1;j<=i+5;j++)
if(a[i]>a[j]) flag=1;
else {
flag=0; break;
}
if(flag==1 && a[i]%2==1) b[m++]=a[i];
}
for(i=0;ifor(j=0;jif(b[j]>b[j+1])
{
flag=b[j]; b[j]=b[j+1]; b[j+1]=flag;
}
return m;
}

第十题:在数组a中有n个四位数,试编一函数:求出千位数上的数加个位数上的数等于百位数上的数
加十位数上的数的个数m由函数值返回,再把所有满足此条件的四位数依次存入数组b中,然
后对数组b中的四位数按从小到大的顺序排序.
int fun(int a[],int n,int b[])
{
int i,j,m,thou,hun,ten,data;
for(i=0;i{
thou=a[i]/1000;
hun=a[i]%1000/100;
ten=a[i]%100/10;
data=a[i]%10;
if(thou+data==hun+ten) b[m++]=a[i];
}
for(i=0;ifor(j=0;jif(b[j]{
data=b[j]; b[j]=b[j+1]; b[j+1]=data;
}
}

第十一题:在数组a中有n=100个人围坐一圈并按顺时针方向从1到n编号,从第s=1个人开始进行从1到m=10
的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到
所有的人都出圈为止,现要求将出圈次序重新存入数组a中.
void fun(int a[],int n,int s,int m)
{
int i,j,k,l,x;
i=s-1; k=0; l=n;
while(l>0)
{
k++;
if(k==m)
{
x=a[i];
for(j=i+1;ja[n-1]=x;
k=0; l--;
}
else i++;
if(i==l) i=0;
}
}



























相关文档
最新文档