指针
2021.5.27
1.函数改写通过指针变量访问整型变量
/*函数改写通过指针变量访问整型变量
赵佳琪2020510754
2021.5.26*/
#include<stdio.h>
void exp(int a,int b);
int main()
{
int a,b;
a=100;
b=10;
exp(a,b);
return 0;
}
void exp(int a,int b)
{
int *p1=&a,*p2=&b;//指针p1指向变量a,指针p2指向变量b
printf("%d,%d\n",a,b);
printf("%d,%d\n",*p1,*p2);
}
2.输入a和b并先大后小输出
/*输入a和b并先大后小输出
赵佳琪2020510754
2021.5.26*/
#include<stdio.h>
int main()
{
int *p1,*p2,*p,a,b;
printf("请输入两个整数:");
scanf("%d,%d",&a,&b);
p1=&a;
p2=&b;
if(a<b)
{
p1=&b;
p2=&a;
}
printf("a=%d,b=%d\n",a,b);
printf("max=%d,min=%d\n",*p1,*p2);
return 0;
}
3.函数处理,用指针类型数据作函数参数 对输入的两个整数按大小顺序输出
/*函数处理,用指针类型数据作函数参数
对输入的两个整数按大小顺序输出
赵佳琪2020510754
2021.5.26*/
#include<stdio.h>
void swap(int *p1,int *p2);
int main()
{
int a,b;
int *pointer_1,*pointer_2;
printf("请输出a和b:");
scanf("%d,%d",&a,&b);
pointer_1=&a;//使pointer_1指向a
pointer_2=&b;
if(a<b)
swap(pointer_1,pointer_2);
printf("max=%d,min=%d\n",a,b);
return 0;
}
void swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
4.函数实现按从大到小顺序对三个数排序
/*函数实现按从大到小顺序对三个数排序
赵佳琪2020510754
2021.5.26*/
#include<stdio.h>
void exchange(int *q1,int *q2,int *q3);
int main()
{
int a,b,c,*p1,*p2,*p3;
printf("请输出三个整数:");
scanf("%d,%d,%d",&a,&b,&c);
p1=&a;
p2=&b;
p3=&c;
exchange(p1,p2,p3);
printf("顺序是:%d,%d,%d\n",a,b,c);
return 0;
}
void swap(int *pt1,int *pt2);
void exchange(int *q1,int *q2,int *q3)
{
if(*q1<*q2)
swap(q1,q2);
if(*q1<*q3)
swap(q1,q3);
if(*q2<*q3)
swap(q2,q3);
}
void swap(int *pt1,int *pt2)
{
int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}
5.下标法输出一个整型数组中的全部元素
/*下标法输出一个整型数组中的全部元素
赵佳琪2020510754
2021.5.26*/
#include<stdio.h>
int main()
{
int a[10];
int i;
printf("请输出十个整型数据:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("%\n");
return 0;
}
6.用指针变量指向数组元素 输出一个整型数组中的全部元素
/*用指针变量指向数组元素
输出一个整型数组中的全部元素
赵佳琪2020510754
2021.5.26*/
#include<stdio.h>
int main()
{
int a[10];
int *p,i;
printf("请输出十个整型数据:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(p=a;p<(a+10);p++)
printf("%d",*p);
printf("\n");
return 0;
}
7.将数组中n个元素按相反顺序存放
/*将数组中n个元素按相反顺序存放
形参用数组名
赵佳琪2020510754
2021.5.26*/
#include<stdio.h>
void inv(int x[],int n);
int main()
{
int i,a[10]={3,7,9,11,0,6,7,5,4,2};
printf("原始数组为:\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
inv(a,10);
printf("相反顺序的数组为:\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
return 0;
}
void inv(int x[],int n)
{
int temp,i,j,m=(n-1)/2;
for(i=0;i<=m;i++)
{
j=n-1-i;
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
return;
}
8.将数组中n个元素按相反顺序存放 形参用指针变量名
/*将数组中n个元素按相反顺序存放
形参用指针变量名
赵佳琪2020510754
2021.5.26*/
#include<stdio.h>
void inv(int *x,int n);
int main()
{
int i,a[10]={3,7,9,11,0,6,7,5,4,2};
printf("原始数组为:\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
inv(a,10);
printf("相反顺序的数组为:\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
return 0;
}
void inv(int *x,int n)
{
int *p,temp,*i,*j,m=(n-1)/2;
p=x+m;
for(i=x,j=x+n-1;i<=p;i++,j--)
{
temp=*i;
*i=*j;
*j=temp;
}
return;
}