精品指针数组合集更新版改.docx
《精品指针数组合集更新版改.docx》由会员分享,可在线阅读,更多相关《精品指针数组合集更新版改.docx(31页珍藏版)》请在冰豆网上搜索。
精品指针数组合集更新版改
注:
此处*(s+i)等类似表达均可替换成s[i]等类似表达,根据个人习惯而定。
一、最大最小值
#include
#include
#include
intfun(int*s,int*sum,int*minVal,int*minIdx,int*n)
{
//分别为原始数据最小值最小值序号数据个数
//--ksstart(注释不能删除)—
//考生代码从此开始编写
inti;
*sum=0;
*minVal=*s;
*minIdx=0;
for(i=0;i<*n;i++)
{
*sum=*sum+*(s+i);
if(*minVal>*(s+i))
{
*minVal=*(s+i);
*minIdx=i;
}
}
//--ksend---
}
main()
{
ints[]={1,2,3,4,5,6};
intsummax[3]={0,0,0};
intn=sizeof(s)/sizeof(int);
n=fun(s,&summax[0],&summax[1],&summax[2],&n);
printf("和=%ld,最小值=%d,最小值序号=%d\n",summax[0],summax[1],summax[2]);
}
#include
#include
#include
intfun(int*s,int*sum,int*maxVal,int*maxIdx,int*n)
{
//分别为原始数据,和,最大值,最大值序号,数据个数
//--ksstart(注释不能删除)—
//考生代码从此开始编写
inti;
*sum=0;
*maxVal=*s;
*maxIdx=0;
for(i=0;i<*n;i++)
{
*sum=*sum+*(s+i);
if(*maxVal<*(s+i))
{
*maxVal=*(s+i);
*maxIdx=i;
}
}
//--ksend---
}
main()
{
ints[]={1,2,3,4,5,6};
intsummax[3]={0,0,0};
intn=sizeof(s)/sizeof(int);
n=fun(s,&summax[0],&summax[1],&summax[2],&n);
printf("和=%ld,最大值=%d,最大值序号=%d\n",summax[0],summax[1],summax[2]);
}
#include
#include
#include
#include
voidfun(int*s,int*minVal,int*minIdx,intn,double*retVal)
{
doublepj=0.0;
//--ksstart(注释不能删除)—
//考生代码从此开始编写
inti,t;
*minVal=*s;
*minIdx=0;
for(i=0;i{
pj=pj+*(s+i);
if(*minVal>*(s+i))
{
*minVal=*(s+i);
*minIdx=i;
}
}
pj=pj/n;
//--ksend---
*retVal=ceil(pj*100+0.5)/100;
}
main()
{
doublepj=0.0;
ints[]={1,2,3,4,5,6};
intsummax[2]={0,0};
intn=sizeof(s)/sizeof(int);
fun(s,&summax[0],&summax[1],n,&pj);
printf("平均=%lf,最小值=%d,最小值序号=%d\n",pj,summax[0],summax[1]);
}
二、排队
#include
#include
#include
#include
voidfun(int*s,intn,int*mv)
{
//--ksstart(注释不能删除)—
//考生代码从此开始编写
inti,j,min;
*mv=0;
for(i=1;i<=n;i++)
{
for(j=i;j<=n;j++)
{
if(*(s+i-1)>*(s+j-1))
{
min=*(s+i-1);
*(s+i-1)=*(s+j-1);
*(s+j-1)=min;
}
}
}
n=n/2;
*mv=*(s+n);
//--ksend---
}
main()
{
ints[]={1,2,3,4,5,6};
intsummax[2]={0,0};
intn=sizeof(s)/sizeof(int);
intpj=0;
fun(s,n,&pj);
printf("中间的数为=%d,\n",pj);
}
voidpao(intb[100],inty)
{
inti,j,min;
for(i=1;i<=y;i++)
{
for(j=i;j<=y;j++)
{
if(b[i-1]>b[j-1])
{
min=b[i-1];
b[i-1]=b[j-1];
b[j-1]=min;
}
}
}
}
#include
#include
#include
#include
voidfun(int*s,intn,int*s3)
{
//--ksstart(注释不能删除)—
//考生代码从此开始编写
inti,j,temp;
for(i=0;i{
for(j=i+1;jif(s[i]
{temp=s[i];
s[i]=s[j];
s[j]=temp;
}
}
if(n>=3)
{for(i=0;i<=2;i++)
s3[i]=s[i];}
elseif(n==2)
{s3[0]=s[0];
s3[1]=s[1];
s3[2]=0;}
else
{
s3[0]=s[0];
s3[1]=0;
s3[2]=0;
}
//--ksend---
}
main()
{
ints[]={4},s3[3];
intsummax[2]={0,0};
intn=sizeof(s)/sizeof(int);
fun(s,n,s3);
printf("前三个数是:
%d,%d,%d\n",s3[0],s3[1],s3[2]);
}
#include
#include
#include
#include
voidfun(int*s,intn,int*s3)
{
//--ksstart(注释不能删除)—
//考生代码从此开始编写
inti,j,min;
for(i=1;i<=n;i++)
{
for(j=i;j<=n;j++)
{
if(*(s+i-1)<*(s+j-1))
{
min=*(s+i-1);
*(s+i-1)=*(s+j-1);
*(s+j-1)=min;
}
}
}
for(i=0;i<3;i++)
{
*(s3+i)=0;
}
if(n<3)
{
for(i=0;i{
*(s3+i)=*(s+i);
}
}
else
{
for(i=0;i{
*(s3+i)=*(s+n-3+i);
}
}
//--ksend---
}
main()
{
ints[]={1,2,3,4,5,6},s3[3]={0,0,0};
intn=sizeof(s)/sizeof(int);
fun(s,n,s3);
printf("后三个数是:
%d,%d,%d\n",s3[0],s3[1],s3[2]);
}
三、统计
#include
#include
#include
voidfun(char*a,int*b)
{
//--ksstart(注释不能删除)—
//考生代码从此开始编写
inti;
for(i=0;i<6;i++)
b[i]=0;
for(i=0;;i++)
{
if(*(a+i)==0)
{
break;
}
switch(*(a+i))
{
case'Z':
*(b+0)=*(b+0)+1;break;
case'Y':
*(b+1)=*(b+1)+1;break;
case'X':
*(b+2)=*(b+2)+1;break;
case'W':
*(b+3)=*(b+3)+1;break;
case'V':
*(b+4)=*(b+4)+1;break;
default:
*(b+5)=*(b+5)+1;
}
}
//--ksend---
}
main()
{inti,b[6];chara[100]="AYYZXW1Y+ZWVP";
fun(a,b);
printf("Theresultis:
");
for(i=0;i<6;i++)printf("%d",b[i]);
printf("\n");
}
#include
#include
#include
voidfun(char*a,int*b)
{
//--ksstart(注释不能删除)—
//考生代码从此开始编写
inti;
for(i=0;i<=5;i++)
*(b+i)=0;
for(i=0;*(a+i)!
='\0';i++)
{
if(*(a+i)=='z')
*b=*b+1;
elseif(*(a+i)=='y')
*(b+1)=*(b+1)+1;
elseif(*(a+i)=='x')
*(b+2)=*(b+2)+1;
elseif(*(a+i)=='w')
*(b+3)=*(b+3)+1;
elseif(*(a+i)=='v')
*(b+4)=*(b+4)+1;
else
*(b+5)=*(b+5)+1;
}
//-