c语言数组练习题及答案
第一题:在数组a中,存放有n个学生的成绩.试编一函数:将低于平均分的学生 人数m由函数值返回,将低于平均分的分数由数组b带回. int fun(int a[],int n,int b[]) {
int i,m=0,aver=0;
for(i=0;i
aver/=n;
for(i=0;i
if(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;j
a[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;i
if(a[i]>a[max])
{
may=max;
amx=i;
}
else if(a[i]>a[may]) 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;j
if(a[j]%1000
else 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;i
return 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