1、交换两个变量的值:
#include <stdio.h>
void swap(int *a,int *b)
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
void main()
{
int x,y;
int *p_x,*p_y;
printf("请输入两个数:\n");
scanf("%d",&x);
scanf("%d",&y);
p_x=&x;
p_y=&y;
swap(p_x,p_y);
printf("x=%d\n",x);
printf("y=%d\n",y);
}
2、将输入的数值从小到大进行排列输出:
#include<stdio.h>
void swap(int *p1, int *p2) /*自定义交换函数*/
{
int temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
void exchange(int *pt1, int *pt2, int *pt3) /*三个数由大到小排序*/
{
if (*pt1 < *pt2)
swap(pt1, pt2); /*调用swap函数*/
if (*pt1 < *pt3)
swap(pt1, pt3);
if (*pt2 < *pt3)
swap(pt2, pt3);
}
void main()
{
int a, b, c, *q1, *q2, *q3;
puts("Please input three key numbers you want to rank:");
scanf("%d,%d,%d", &a, &b, &c);
q1 = &a; /*将变量a地址赋给指针变量q1*/
q2 = &b;
q3 = &c;
exchange(q1, q2, q3); /*调用exchange函数*/
printf("\n%d,%d,%d\n", a, b, c);
}
3、将某银行一周的钱收纳汇总
#include<stdio.h> /*包含头文件*/
void SUM(int *p,int n) /*自定义函数*/
{
int i,sum=0; /*定义变量*/
for(i=0;i<n;i++) /*循环每个数*/
sum=sum+*(p+i); /*相加*/
printf("面值的总数是:%d\n",sum);/*输出*/
}
int main() /*主函数main*/
{
int *pointer,a[7],i; /*定义变量*/
pointer=a;
printf("请输入实际的数值:\n"); /*提示*/
for(i=0;i<7;i++) /*输入一周的每天钱数*/
scanf("%d",&a[i]);
SUM(pointer,7); /*调用SUM函数*/
return 0; /*程序结束*/
}
4、使用指针实现冒泡排序
#include<stdio.h>
void order(int *p,int n)
{
int i,t,j;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(*(p+j)>*(p+j+1)) /*判断相邻两个元素的大小*/
{
t=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=t; /*借助中间变量t进行值互换*/
}
printf("排序后的数组:");
for(i=0;i<n;i++)
{
if(i%5==0) /*以每行5个元素的形式输出*/
printf("\n");
printf("%5d",*(p+i)); /*输出数组中排序后的元素*/
}
printf("\n");
}
void main()
{
int a[20],i,n;
printf("请输入数组元素的个数:\n");
scanf("%d",&n); /*输入数组元素的个数*/
printf("请输入各个元素:\n");
for(i=0;i<n;i++)
scanf("%d",a[i]); /*给数组元素赋初值*/
order(a,n); /*调用order函数*/
}
5、按字母顺讯排序
#include <stdio.h>
#include <string.h>
sort(char *strings[], int n) /*自定义排序函数*/
{
char *temp;
int i, j;
for (i = 0; i < n; i++)
{
for (j = i + 1; j < n; j++)
{
if (strcmp(strings[i], strings[j]) > 0) /*比较两个字符串的大小*/
{
temp = strings[i];
strings[i] = strings[j];
strings[j] = temp; /*如果前面字符串比后面的大,则互换*/
}
}
}
}
void main()
{
int n = 12;
int i;
char **p; /*定义字符型指向指针的指针*/
char *month[] =
{
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
};
p = month;
sort(p, n); /*调用排序函数*/
printf("排序后的12月份如下:\n");
for (i = 0; i < n; i++)
printf("%s\n", month[i]); /*输出排序后的字符串*/
}
找出二维数组中每行最大的数值进行求和
#include<stdio.h>
#define N 4
void max(int (*a)[N],int m) /*自定义min函数,求二维数组中每行最小元素*/
{
int value,i,j,sum=0;
for(i=0;i<m;i++)
{
value=*(*(a+i)); /*将每行中的首个元素赋给value*/
for(j=0;j<N;j++)
if(*(*(a+i)+j)>value) /*判断其他元素是否小于value的值*/
value=*(*(a+i)+j); /*把比value大的数重新赋给value*/
printf("第%d行:最大数是:%d\n",i,value);
sum=sum+value;
}
printf("\n");
printf("每行中最大数相加之和是:%d\n",sum);
}
void main()
{
int a[3][N],i,j;
int (*p)[N];
p=&a[0];
printf("please input:\n");
for(i=0;i<3;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]); /*给数组中的元素赋值*/
max(p,3); /*调用min函数,指针变量作函数参数*/
}
7、求新入学班级新生的总人数
#include<stdio.h>
void SUM(int *p,int n)
{
int i,sum=0;
for(i=0;i<n;i++)
sum=sum+*(p+i);
printf("新生总人数是:%d\n",sum);
}
int main()
{
int *pointer,a[10],i;
pointer=a;
printf(" 请输入每个班级人数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
SUM(pointer,10);
return 0;
}
8、判断两个数值的大小
#include <stdio.h>
void swap(int *x1,int *x2)
{
int t;
t=*x1;
*x1=*x2;
*x2=t;
}
void order(int *a,int *b)
{
if(*a>*b)
swap(a,b);
}
int main()
{
int x,y;
printf("输入值:\n");
scanf("%d,%d",&x,&y);
printf("x=%d,y=%d\n",x,y);
order(&x,&y);
printf("x=%d,y=%d\n",x,y);
return 0;
}
本文详细介绍了C语言中指针的各种应用场景,包括变量值交换、数值排序、数组操作及字符串处理等。通过具体代码示例,展示了如何利用指针进行高效的数据处理,适合初学者及进阶学习者。
7103

被折叠的 条评论
为什么被折叠?



