c语言数组练习题及答案Word格式文档下载.docx
《c语言数组练习题及答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c语言数组练习题及答案Word格式文档下载.docx(7页珍藏版)》请在冰豆网上搜索。
求出1000之间能被7或11整除,但不能同时被7或11整
除的所有整数的个数n由函数值返回,并将符合条件的数放在数组a中带回.int
fun(inta[])
{
inti,n=0;
for(i=1;
1000;
if((i%7==0&
&
i%11!
=0)||(i%7!
=0&
i%11==0))a[n++]=i;
returnn;
第三题:
将大于整数m且紧靠m的k个素数存入数组a中.void
fun(intm,intk,inta[]){
inti,n,data,flag;
data=m+1;
n=0;
while(n<
k)
flag=1;
for(i=2;
=data/2;
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
voidfun(inta[],intn,intp){
inti,j,t;
=p;
t=a[0];
for(j=1;
j<
j++)a[j-1]=a[j];
a[n-1]=t;
第五题:
在具有n个数据的数组a中,求出次最大值的下标并由函
数值返回.
intfun(inta[],intn)
inti,j,max,may;
if(a[0]>
a[1])
max=0;
may=1;
else{
max=1;
may=0;
if(a[i]>
a[max])
may=max;
amx=i;
elseif(a[i]>
a[may])may=i;
returnmay;
第六题:
在数组a中有n个四位数.试编一函数,要求按每个数的后三位的大小
进行升序排
列,当后三位等相同时,则对这些数值按原始四位数据进行降序排序.将排序后
的前10个数存入数组b中.(提示:
可采用选择排序)
intfun(inta[],intn,intb[]){
inti,j,k,t,m=10;
n-1;
k=i;
for(j=i+1;
j++)
if(a[j]%1000<
a[k]%1000)k=j;
elseif(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;
m;
i++)b[i]=a[i];
第七题:
在三位数(100至999)中寻找符合下面条件的整数.它即是完全平方数
又有两位
数字相同.(如:
144,676;
)并将符合条件数的个数n由函数值返回,符合条件的
数存入数组a中返回.
intfun(inta[])
inti,j,hun,ten,data,n=0;
for(i=10;
32;
j=i*i;
if(j>
=100&
=999)
hun=j/100;
ten=j%100/10;
data=j%10;
if(hun==ten||ten==data||data==hun)a[n++]=j;
第八题:
判断一个长整型数是否为回文数(回文数是指其数字左右对称的整数).
当该数是回文
数时,函数值返回1,否则返回0.(提示:
利用逻辑量flag进行操作).int
fun(longm)
inti=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;
elsei++;
returnflag;
第九题:
在数组a中存有n个数据,试编一函数:
依次从数组中取出一个数据,如
查该数连续大于该
数以后的5个数且该数是奇数,统计出满足此条件数的个数m由函数值返回,并
把这些数按从小到大的顺序存入数组b中.
inti,j,flag,m=0;
n-5;
=i+5;
a[j])flag=1;
if(flag==1&
a[i]%2==1)b[m++]=a[i];
m-1;
for(j=0;
m-1-i;
if(b[j]>
b[j+1])
flag=b[j];
b[j]=b[j+1];
b[j+1]=flag;
第十题:
在数组a中有n个四位数,试编一函数:
求出千位数上的数加个位数上
的数等于百位数上的数
加十位数上的数的个数m由函数值返回,再把所有满足此条件的四位数依次存
入数组b中,然后对数组b中的四位数按从小到大的顺序排序.
inti,j,m,thou,hun,ten,data;
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];
if(b[j]<
data=b[j];
b[j+1]=data;
第十一题:
在数组a中有n=100个人围坐一圈并按顺时针方向从1到n编号,从
第s=1个人开始进行从1到m=10
的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,
如此进行下去直到
所有的人都出圈为止,现要求将出圈次序重新存入数组a中.
voidfun(inta[],intn,ints,intm){
inti,j,k,l,x;
i=s-1;
k=0;
l=n;
while(l>
0)
k++;
if(k==m)
x=a[i];
a[n-1]=x;
k=0;
l--;
if(i==l)i=0;