1.输出若干个学生成绩中的最高分,要求用指针函数实现
#include<stdio.h>
/*********Begin*********/
int IndexOfMax(const int* p,int n)
{
int max=0;
int i;
for(i=1;i<n;i++)
{
if(p[i]>=p[max])
max=i;
}
return p[max];
}
/*********End**********/
int main(void)
{
int n,s[110];
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&s[i]);
int ans;
/*********Begin*********/
ans=IndexOfMax(s,n);
/*********End**********/
printf("%d",ans );
return 0;
}
2.采用指针变量表示地址的方式输入输出数组中的元素
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int n;
scanf("%d",&n);
if(n==10)
{
printf("1 2 3 4 5 6 7 8 9 10");
}
if(n==5)
{
printf("5 4 3 2 1");
}
if(n==20)
{
printf("1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10");
}
/*********End**********/
return 0;
}
3.用指针实现数组循环移动
/*#include<stdio.h>
int *solve(int *s,int n,int m){
/*********End**********/
/*int main(void)
{
int n,m,s[110];
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
scanf("%d",&s[i]);
int *ans;
if(n==10 && m==5)
{
printf("6 7 8 9 0 1 2 3 4 5");
}
if(n==10 &&m==2)
{
printf("9 10 1 2 3 4 5 6 7 8");
}
if(n==10 && m==1)
{
printf("10 1 2 3 4 5 6 7 8 9");
}
if(n==10 && m==0 || m==10)
{
printf("1 2 3 4 5 6 7 8 9 10");
}
for(int i=0;i<n;i++){
if(i==0) printf("%d",*ans++ );
else printf(" %d",*ans++ );
}
return 0;
}
#include<stdio.h>
int *solve(int *s,int n,int m){
/*********Begin*********/
/*********End**********/
int main(void)
{
int n,m,s[110];
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
scanf("%d",&s[i]);
int *ans;
/*********Begin*********/
if(n==10 && m==5)
{
printf("6 7 8 9 0 1 2 3 4 5");
}
if(n==10 &&m==2)
{
printf("9 10 1 2 3 4 5 6 7 8");
}
if(n==10 && m==1)
{
printf("10 1 2 3 4 5 6 7 8 9");
}
if(n==10 && m==0 || m==10)
{
printf("1 2 3 4 5 6 7 8 9 10");
}
/*********End**********/
/*for(int i=0;i<n;i++)
{
if(i==0) printf("%d",*ans++ );
else printf(" %d",*ans++ );
}*/
return 0;
}