利用指针

  • 1,使用指针变量:通过指针变量访问整型变量
  • 2,指针:输入a和b的值,按先大后小的顺序输出a和b
  • 3,指针与函数:输入a和b的值,按先大后小的顺序输出a和b
    • 输入3个整数,按由大到小的顺序输出
  • 4,输入3个整数a,b,c,要求按由大到小的顺序将它们输出。用函数实现
  • 5,通过指针变量输出整型数组a的10个元素
  • 6,将数组a中10个整数按相反顺序存放
  • 7,利用指针将数组内十整数进行从大到小排序
  • 8,有一个3*4的二维数组,要求用指向元素的指针变量输出二维数组各元素的值
  • 9,输出二维数组任一行任一列的元素的值
  • 10,用指向数组的指针作函数参数:有三个学生,各学四门课,计算总平均分数以及第n个学生的成绩。
  • 11,输入三个字符串,按由小到大的顺序输出
  • 12,输入10个整数,将其中最小的数和第一个数对换,把最大的数和最后一个数对换。写三个函数(1)输入10个数(2)进行处理(3)输出10个数

1,使用指针变量:通过指针变量访问整型变量

#include"stdio.h"
int main()
{int a=2,b=3;int *pointer_1,*pointer_2;pointer_1=&a;pointer_2=&b;printf("a=%d\nb=%d\n",a,b);printf("*pointer_1=%d\n*pointer_2=%d\n",*pointer_1,*pointer_2);return 0;}

运行结果:

a=2
b=3
*pointer_1=2
*pointer_2=3

2,指针:输入a和b的值,按先大后小的顺序输出a和b

#include"stdio.h"
int main()
{int *p,*p1,*p2,a,b;printf("输入两个整数:"); scanf("%d%d",&a,&b);p1=&a;p2=&b;if(a<b){p=p1;p1=p2;p2=p;}printf("a=%d,b=%d\n",a,b);printf("max=%d,min=%d\n",*p1,*p2);return 0;}

运行结果:

输入两个整数:3 6
a=3,b=6
max=6,min=3

3,指针与函数:输入a和b的值,按先大后小的顺序输出a和b

#include"stdio.h"
int main()
{void swap(int *p1,int *p2);int a,b;int *pointer_1,*pointer_2;printf("输入整数a和b:");scanf("%d%d",&a,&b);pointer_1=&a;pointer_2=&b;if(a<b)swap(pointer_1,pointer_2);printf("大的为%d,小的为%d\n",a,b);return 0;
}
void swap(int *p1,int *p2)
{int temp;temp = *p1;*p1 = *p2;*p2 = temp;
}

运行结果:

输入整数a和b:10 99
大的为99,小的为10

输入3个整数,按由大到小的顺序输出

#include"stdio.h"
int main()
{void swap(int *p1, int *p2);int n1, n2,n3;int *p1, *p2,*p3;printf("分别输入三整数:");scanf("%d%d%d",&n1,&n2,&n3);p1=&n1;p2=&n2;p3=&n3;if(n1>n2)swap(p1,p2);if(n1>n3)swap(p1,p3);if(n2>n3)swap(p2,p3);printf("最终的顺序为:%d %d %d\n",n1,n2,n3);return 0;
}void swap(int *p1,int *p2)
{int p;p=*p1;*p1=*p2;*p2=p;
}

运行结果:

分别输入三整数:12 25 13
最终的顺序为:12 13 25

4,输入3个整数a,b,c,要求按由大到小的顺序将它们输出。用函数实现

#include"stdio.h"
int main()
{void exchange(int *p1,int *p2,int *p3);int a,b,c;int *pointer_1,*pointer_2,*pointer_3;printf("输入整数a,b,c:");scanf("%d%d%d",&a,&b,&c);pointer_1=&a;pointer_2=&b;pointer_3=&c;exchange(pointer_1,pointer_2,pointer_3);printf("从大到小排序为:%d  %d  %d\n",a,b,c);return 0;
}
void exchange(int *pointer_1,int *pointer_2,int *pointer_3)
{void swap(int *p1,int *p2);if(*pointer_1<*pointer_2)swap(pointer_1,pointer_2);if(*pointer_1<*pointer_3)swap(pointer_1,pointer_3);if(*pointer_2<*pointer_3)swap(pointer_2,pointer_3);
}
void swap(int *p1,int *p2)
{int temp;temp = *p1;*p1 = *p2;*p2 = temp;
}

运行结果:

输入整数a,b,c:6 4 9
从大到小排序为:9  6  4

5,通过指针变量输出整型数组a的10个元素

#include"stdio.h"
int main()
{int *p,a[10];p=a;printf("输入十个整数:");for(int i=0;i<10;i++){scanf("%d",p++);}p=a;for(int i=0;i<10;i++,p++){printf("%d ",*p);   } return 0;}

运行结果:

输入十个整数:0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9

6,将数组a中10个整数按相反顺序存放

#include"stdio.h"
int main()
{void inv(int *x,int n);int i,arr[10],*p=arr;printf("旧值:\n");for(i=0;i<10;i++,p++)scanf("%d",p);printf("\n");p=arr;inv(p,10);printf("新值: \n");for(p=arr;p<arr+10;p++)printf("%d ",*p);printf("\n");return 0;} void inv(int *x,int n){int *p,m,t,*i,*j;m=(n-1)/2;i=x;j=x+n-1;p=x+m;for(;i<=p;i++ ,j--){t=*i;*i=*j;*j=t;}return ;}

运行结果:

旧值:
1 2 3 4 5 6 7 8 9 10新值:
10 9 8 7 6 5 4 3 2 1

7,利用指针将数组内十整数进行从大到小排序

#include"stdio.h"
int main()
{void sort(int x[],int n);int i,*p,a[10];p=a;printf("输入十整数:");for(i=0;i<10;i++) scanf("%d",p++);p=a;sort(p,10);printf("排序后:"); for(p=a,i=0;i<10;i++){printf("%d ",*p);p++;}printf("\n");return 0;} void sort(int *x,int n){int i,j,k,t;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(*(x+j)>*(x+k))k=j;if(k!=i){t=*(x+i);*(x+i)=*(x+k);*(x+k)=t;}}}

运行结果:

输入十整数:8 0 4 99 12 3 7 10 1 2
排序后:99 12 10 8 7 4 3 2 1 0

8,有一个3*4的二维数组,要求用指向元素的指针变量输出二维数组各元素的值

#include"stdio.h"
int main()
{int a[3][4]={1,3,4,5,6,9,78,54,21,52,85,100};int *p;for(p=a[0];p<a[0]+12;p++){if((p-a[0])%4==0)printf("\n");printf("%4d",*p);}return 0;}

运行结果:

   1   3   4   56   9  78  5421  52  85 100

9,输出二维数组任一行任一列的元素的值

#include"stdio.h"
int main()
{int a[3][4]={1,3,4,5,6,9,78,54,21,52,85,100};int (*p)[4],i,j;p=a;printf("输入行号与列号:");scanf("%d%d",&i,&j);printf("a[%d,%d]=%d\n",i,j,*(*(p+i)+j));return 0;
}

运行结果:

输入行号与列号:2 1
a[2,1]=52

10,用指向数组的指针作函数参数:有三个学生,各学四门课,计算总平均分数以及第n个学生的成绩。

#include"stdio.h"
int main()
{void average(float *p,int n);void search(float (*p)[4],int n);float score[3][4]={{65,96,64,30},{80,0,99,93},{75,79,81,80}};average(*score,12);search(score,2);return 0;
}
void average(float *p,int n)
{float *p_end;float sum=0,aver;p_end=p+n-1;for(;p<=p_end;p++)sum=sum+(*p);aver=sum/n;printf("average=%5.2f\n",aver);
}
void search(float (*p)[4],int n)
{int i;printf("the score of No.%d are:\n",n);for(i=0;i<4;i++){printf("%5.2f ",*(*(p+n)+i));}
}

运行结果:

average=70.17
the score of No.2 are:
64.00 30.00 80.00  0.00

11,输入三个字符串,按由小到大的顺序输出

(这里的由小到大是指开头字母的大小)

#include "stdio.h"
#include "string.h"
int main()
{void swap(char  *,char *);char str1[20],str2[20],str3[20];printf("输入三个字符串:\n");gets(str1);gets(str2);gets(str3);if(strcmp(str1,str2)>0) swap(str1,str2);if(strcmp(str1,str3)>0) swap(str1,str3);if(strcmp(str2,str3)>0) swap(str2,str3);printf("现在的顺序为:\n");printf("%s\n%s\n%s\n",str1,str2,str3);return 0;
}
void swap(char *p1,char *p2)
{char p[20];strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);
}

运行结果:

输入三个字符串:
ican hear you
ohhhh
hello
现在的顺序为:
hello
ican hear you
ohhhh

12,输入10个整数,将其中最小的数和第一个数对换,把最大的数和最后一个数对换。写三个函数(1)输入10个数(2)进行处理(3)输出10个数

#include "stdio.h"
void input(int *number)
{int i;printf("输入十整数:");for(i=0; i<10;i++)scanf("%d", &number[i]);
}void max_min_value(int *number)
{int *max,*min,*p,temp;max=min=number;for(p=number+1;p<number;p++){if(*p>*max) max=p;else if(*p<*min) min=p;}temp=number[0];number[0]=*min;*min=temp;if(max == number)max =min;temp=number[9];number[9]=*max;*max=temp;
}void output(int * number)
{int *p;printf("输出结果:");for(p=number;p<number+10;p++)printf("%d ",*p);printf("\n");
}int main()
{void input(int *number);void max_min_value(int *number);void output(int *number);int number[10];input(number);max_min_value(number);output(number);return 0;
}

运行结果:

输入十整数:32 24 56 78 1 98 36 44 29 6
输出结果:6 24 56 78 1 98 36 44 29 32

C程序举例:利用指针相关推荐

  1. 用C语言用指针怎么算通用定积分,C语言:利用指针编写程序,用梯形法计算给定的定积分实例...

    题目要求 利用指针编写程序,用梯形法计算下列公式中的定积分: 参考代码 首先说明一下指针的用处:因为所传递的参数均为数字,并不需要使用指针提高效率,故这里使用指针指向函数. 请注意calc()函数中的 ...

  2. 指针法算中点坐标c语言,C语言:利用指针编写程序,用梯形法计算给定的定积分实例...

    题目要求 利用指针编写程序,用梯形法计算下列公式中的定积分: 参考代码 首先说明一下指针的用处:因为所传递的参数均为数字,并不需要使用指针提高效率,故这里使用指针指向函数. 请注意calc()函数中的 ...

  3. C语言:利用指针编写程序,用梯形法计算给定的定积分

    题目来源:大工慕课 链接 作者:Caleb Sung 题目要求 利用指针编写程序,用梯形法计算下列公式中的定积分: ∫100(x3+12x+1)dx ∫ 0 10 ( x 3 + 1 2 x + 1 ...

  4. C语言--不使用库函数,利用指针编写一个计算字符串长度的程序

    题目:编写一个函数计算一个字符串的长度,输入输出在主函数中完成 以下两个例程仅供参考: #include <stdio.h> int Strlen(char *str)//不使用库函数,利 ...

  5. 64位程序怎么判断指针是否有效_C 语言指针怎么理解?

    注: 看完这篇一定会让你理解透彻指针的本质 是的,这一篇的文章主题是「指针与内存模型」 说到指针,就不可能脱离开内存,学会指针的人分为两种,一种是不了解内存模型,另外一种则是了解. 不了解的对指针的理 ...

  6. 第八章:善于利用指针

    第八章:善于利用指针 8.1 指针是什么 数据在内存中的地址也称为指针,如果一个变量存储了一份数据的指针,我们就称它为指针变量. 由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元.打个比方 ...

  7. 利用指针写一份学生信息管理系统

    利用指针写一份学生信息管理系统 前言 一.分析题目 二.解决步骤 1.菜单栏 2.功能1 3.功能2 4.功能3 5.功能4 6.功能5 7.主函数 总结 前言 因为自己学校实验室考核C语言要求写一份 ...

  8. c语言 gets 指针,关于gets ( )的用法! 利用指针求字符数额

    关于gets ( )的用法! 利用指针求字符数目 下面这个程序我断点调试时,停在p=str 哪儿了?为什么啊? //输入一行文字,找出其中的字符各有多少? # include int main () ...

  9. 大写的服!90 后程序员利用业余时间帮网友鉴定毒蘑菇,拥有百万粉丝成网络大 V...

    整理 | 王晓曼 出品 | 程序人生 (ID:coder _life) 近日,有媒体爆料南京一程序员利用业余时间,研究菌物做科普,去年帮网友鉴定毒蘑菇达 2000 余次,成为拥有百万粉丝的网络大 V. ...

最新文章

  1. Python基础05-数据类型:列表list
  2. 移动端rem屏幕设置
  3. Sentinel-Go 集成 Nacos 实现外部动态数据源
  4. 【中级软考】多态与继承的概念
  5. mysql 多字节编码漏洞_phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)
  6. XCODE---个人常用快捷键整理
  7. 查找重复文件_快速查找、删除重复图片及文件!
  8. ms sql 带自增列 带外键约束 数据导入导出
  9. 定时任务管理系统 java_几种任务调度的 Java 实现方法与比较(定时任务)(转)...
  10. 如何正确获取安卓外置SD卡的路径
  11. 2016-06-17 nui构件隐藏时相关属性的设置 bug命名【彩虹】
  12. Java类和对象 详解(二)
  13. 开源中国众包平台派活:微信小程序任务
  14. Java微信运动步数排序设计_微信小程序仿微信运动步数排行(交互)
  15. 大数据和云计算技术周报(第102期)
  16. 墨者学院—Webmin未经身份验证的远程代码执行(简单复习)
  17. 微型计算机的英文简写是,电脑英文简写?
  18. 敏捷个人-认识自我,管理自我 v0.8.pdf 下载
  19. Pointnet(part_seg)train.py,test.py代码随记
  20. 关于微信小程序(应用号),看看这篇文章就够了

热门文章

  1. shell 十三問? 11) 與 差在哪?
  2. 极简工具(AutoCAD、Tekla)
  3. iis7 php mime,常见手机文件mime类型、IIS7 MIME设置
  4. mysql动态update语句,mysql – SQL:具有动态列值赋值的update语句
  5. 自建纯净谷歌「GitHub 热点速览 v.21.35」
  6. 德邦面试java_【德邦物流Java面试】德邦面试被耍经验分享。-看准网
  7. 【Spring心得】xmlns=“http://www.spring 和 xmlns:beans=“http://www.spring 差之毫厘谬以千里
  8. 开源python爬虫软件下载_83款 网络爬虫开源软件
  9. 如何提升亚马逊产品的溢价能力?
  10. MPSOC VCU多路视频编解码(基于gstreamer)