使用指针的程序设计
C语言程序设计例子
C语言程序设计例子题目:输入3个数abc,按大小顺序输出。
1.程序分析:利用指针方法。
2.程序源代码:/♦pointer*/#include "stdio-h11#include "conio.h”main(){iiit nl,ii2,n3;mt *pomter 1、*poiiiter2, *pomter3;pnntf(M please mput 3 numbei:nhn2,n3:H);scanfC%d%d、%cT,&iih&i2&n3);pomterl =&nl;pomter2=&n2;pomter3=&n3;if(nl>n2) swap(pomterLpointer2);if(nl>n3) swap(pomterLpointer3);if(n2>n3) swap(pomter2,pointer3);pnntf(M the sorted numbers are:%d,%d,%d\ir\nl,ii2,n3);getch();}swap(pl.p2)iiit *pl,*p2;{imp;p=*pl;*pl=*p2;*p2=p;}题目:编写input()和output()函数输入,输出5个学生的数据记录。
1.程序分析:2.程序源代码:#include "stdio-h11#include "conio.h”^define N 5stmct student{char num[6];char name[8];}stu[N];mput(stu)stmct student stu[];{intij;for(i=O;i<N;i-H-){pnntf(M\n please input %d of %d\n”,i+l,N);pnntf(M num: ”);scanf(H%s H,stu[i].num);pnntf(M name:");scanf(H%s H,stu [i].name);for(j=O;j<3j++){printf(M score %d・”j+l);scanf(,,%d,\&stu[i].score[j]);}prmtf(”\n”);}}print(stu)stmct student stu[];{intij;pnntf(M\nNo. Name Scol Sco2 Sco3\iT);fbr(i=O;i<N;i-H-){printf(M%-6s%-10s,\stu[i].num,stu[i].naine);for(j=O;j<3j++)pnntf(,,%-8d,\sni[i].scoielj]);pmitfCE);}}main(){mputQ;pnnt();getch();}题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
《C语言程序设计》第8章指针
10.3.3 指针变量和数组作函数参数 数组名作形参时,接收实参数组的起始地址;
作实参时,将数组的起始地址传递给形参数组。
引入指向数组的指针变量后,数组及指向数 组的指针变量作函数参数时,可有4种等价形式 (本质上是一种,即指针数据作函数参数):
(1)形参、实参都用数组名 (2)形参、实参都用指针变量 (3)形参用指针变量、实参用数组名 (4)形参用数组名、实参用指针变量
(4)指针变量的++、--与&、*的结合
对于指针变量的++、--与&、*的结合 使用,关键要注意按照运算符的优先级和 结合性进行。
例如: int a=2, *p; p=&a;
•表达式:(*p)++,按运算符的优先级,等价于 a++。其含义为:取出指针变量p所指向的内存单 元的值(即a的值),a的值加1,送回a的内存单 元,a的值变为3,p的值未发生变化,仍然指向 变量a。
程序说明:printf("%s\n",s);语句 通过指向字符串的指针变量s,整体引
用它所指向的字符串的原理:系统首先输出s 指向的第一个字符,然后使s自动加1,使 之指向下一个字符;重复上述过程,直至遇到 字符串结束标志。
main() { char string[ ]=”I love Beijing.”; printf(“%s\n”,string); }
3.数组元素的引用 数组元素的引用,既可用下标法,也可用
指针法。
10.3.2 通过指针引用数组元素 如果有“int a [10],*p=a;” ,则: (1)p+i和a+i都是数组元素a [i]的地址。
(2)*(p+i)和*(a+i)就是数组元素a [i]。 int a [3]; a [0]——*a a [1]——*(a +1) a [2]——*(a +2)
C语言程序设计实验实验指导书及答案
常熟理工学院电气与自动化工程学院《C语言程序设计》实验指导书实验一熟悉C程序运行环境班级学号姓名成绩一、实验目的1. 熟悉C语言Visual C++6.0调试环境。
2. 掌握C程序的编辑、调试及运行。
二、实验内容项目1. 调试并运行下面程序,并写出运行结果:#include <stdio.h>int main(){printf(“Good morning!\n”);printf(“Hello,world!\n”);return 0;}运行结果(注意,按照屏幕输出格式写):项目2. 调试并运行下面程序,并写出运行结果:#include <stdio.h>int main(){int a , b , sum; /*定义变量*/a=23; b=56; /*为变量赋值*/sum=a+b; /*计算两个变量的和*/printf(“sum is %d\n”,sum); /*输出计算结果*/return 0;}运行结果:2项目3. 调试并运行下面程序,并写出运行结果:#include <stdio.h>int max(int,int);int main(){int a , b , c; /*定义变量*/a=23; b=56; /*为变量赋值*/c=max(a,b); /*调用max函数,将得到的值赋给c*/ printf(“max is %d\n”,c); /*输出c的值*/return 0;}int max(int x,int y) /*定义max函数,函数值为整型*/ {int z; /*定义变量*/if(x>y)z=x;elsez=y;return(z); /*将z的值返回*/}运行结果:三、提高部分1.试想,如果求10个数中的最大者,则程序该如何编写。
程序代码运行结果:实验二数据及其运算班级学号姓名成绩一、实验目的1. 掌握C数据类型的概念、熟悉整型、字符型和实型基本类型的常量的用法;学会三种基本类型变量的定义、赋值和使用方法。
C语言指针教学设计
C语言指针教课方案1.关于 C 语言程序设计中的指针C语言程序设计是高校理工科专业的一门重要专业或公共基础课,不但是计算机相关专业学生进一步学习汇编语言程序设计、数据结构计算机操作系统、硬件编程等课程的入门级课程,同时也是非计算机专业学生认识计算机软硬件基础知识和计算机基层原理的重要手段之一.在教课内容的组织上,重申停解析指针与基本数据种类、函数、数组的内在联系,灵巧设计教课程序实例,为学习者掌握指针及 c语言程序设计创建优异条件。
指针是 C语言的教课要点,程序使用指针可以带来很多方便,如:1)灵巧操作数组 (含字符串 );2)动向分配内存;3)表示复杂的数据结构;是让程序更加简洁高效的重要手段。
可是指针也是 C 语言学习的最大难点,学习者广泛感觉指针看法抽象,以致没法正确理解并使用指针,而指针的使用稍有不慎,常常会给 c 语言程序带来致命的错误。
2.学生解析在讲指针内容以前,学习者经历了基本数据种类、运算符和表达式、输入输出函数、选择制语句、循环控制语句、函数、数组等内容的学习。
而指针内容之后,一般还要讲解指针与字符串、指针与数组、结构体与共用体、文件操作等内容。
此中指针起到了承前启后的作用,学习并掌握指针,对学习者获取程序设计技巧和能力、连续学习其他计算机专业课程至关重要。
3.教师自我思虑在课堂教课中起主导作用的教师,应依据指针教课所必要的基础知识,在讲课过程中不停调各要点知识点的重要性,尽可能在指针内容的学习以前,使学习者具备理解指针看法的基础知识和基本能力。
在教课内容的组织上,重申停解析指针与基本数据种类、函数、数组的内在联系,灵巧设计教课程序实例,为学习者掌握指针及 c 语言程序设计创建优异条件。
4.学生学习方法建议学习本章内容时,应要点掌握指针与指针的差别、指针的引用方法和运算,并在此基础长进一步理解指针作为函数参数和在数组中间的的应用,要求多读程序,理解编程的算法、编程的思路,并模拟例题多编程序、上机练习,真切掌握指针的灵巧应用。
《C语言程序设计》实验报告实验六
《C语言程序设计》实验报告实验六使用指针的程序设计学号姓名一、实验目的1、掌握指针的概念,会定义和使用指针变量;2、能正确使用数组的指针和指向数组的指针变量;3、熟悉指针作为函数参数的定义和调用方法;4、能正确使用字符串的指针和指向字符串的指针变量。
二、实验内容1.分析下面的程序并上机运行程序,要求写出3组以上程序的运行结果。
#include <stdio.h>void main(){int *p1,*p2,*p;int a,b;printf("Input a b please");scanf("%d%d",&a,&b);p1=&a;p2=&b;if(a>b){ p=p1;p1=p2;p2=p;}printf("*p1=%d, *p2=%d\n",*p1,*p2);printf("a=%d, b=%d\n",a,b);}『运行结果:』输入1,2得:*p1=1,*p2=2a=1,b=2输入2,1得:*p1=1,*p2=2a=2,b=1输入56,123得:*p1=56,*p2=123a=56,b=1232.下列程序的功能是分别求出数组中所有奇数之和以及所有偶数之和。
形参n给了数组中数据的个数,利用指针odd返回奇数之和,利用指针even 返回偶数之和。
请在下面空白处将实现这一功能的函数完善,并且调试运行出结果。
#include <stdio.h>#define N 10void fun(int *a,int n,int *odd,int *even){int m;*odd=0; *even=0;for(m=0;m<n;m++)if(*(a+m)%2==0)*even+=*(a+m);else*odd+=*(a+m);}void main(){int a[N]={1,10,2,3,19,6},i,n=6,odd,even;printf("The original data is:\n");for(i=0;i<n;i++)printf("%5d",*(a+i));printf("\n\n");fun(a,n,&odd,&even);printf("The sum of odd numbers:%d\n",odd);printf("The sum of even number:%d\n",even);}『运行结果:』3.编程实现从键盘输入一个字符ch和一个字符串str,利用字符指针实现删除字符串str中和字符ch相等所有字符,然后输出字符串str。
指针做形参的功能主治
指针做形参的功能主治功能1.传递指针地址:使用指针作为形参可以直接传递变量的地址,而非复制变量的值。
这样可以使得函数能够修改原始变量的值,而不仅仅是对副本进行操作。
2.提高程序效率:使用指针作为形参可以减少参数的传递开销。
由于指针只需传递地址,而不是复制实际的数据,所以能够减少内存的占用和数据的传输时间,从而提高程序的运行效率。
主治指针做形参在程序设计中有以下几个主要的应用场景:1.修改实参的值:使用指针作为形参可以直接修改实参的值。
这在一些需要返回多个结果的函数中特别有用。
例如,在排序算法中,可以通过使用指针形参来直接修改数组的顺序,而不需要返回一个新的数组。
–例子:在一个交换函数中,使用指针形参可以直接将实参的值交换,而不需要借助中间变量。
–例子代码:void swap(int* a, int* b) {int temp = *a;*a = *b;*b = temp;}2.动态分配内存:使用指针作为形参可以在函数内部动态分配内存,并将内存地址返回给调用函数。
这在需要动态生成数据结构或者处理大型数据集时非常有用。
例如,在链表操作中,可以通过使用指针形参来在函数内部创建新节点,并将地址返回给调用函数。
–例子:在一个链表操作函数中,使用指针形参可以在函数内部创建新节点,并将地址返回给调用函数。
–例子代码:struct Node {int data;struct Node* next;};void insertNode(struct Node** head, int data) {struct Node* newNode = (struct Node*)malloc(sizeof(struct Nod e));newNode->data = data;newNode->next = *head;*head = newNode;}3.传递数组:使用指针作为形参可以传递数组,并对数组进行操作和修改。
C语言程序设计活页式教程 课件 项目9
任务2 指针访问数组
【任务准备】 4. 二维数组的行指针 (1)指向二维数组的一般指针变量
在项目 6 中讲解过二维数组,二维数组有行和列,例如: short arr [2][3]= {{12,3,0}, {23,0,0}} ; (2)指向二维数组的行指针变量
任务3 指针访问字符串和函数
【任务实现】 训练 1 :从终端输入密码 ,编写一个密码检测程序 ,要求输出如下信息 ************************ 请输入密码: shdwa1234 密码位数错! ************************ 请输入密码: pwd_43 密码错! ************************ 请输入密码: pwd_ 12 密码正确 ,欢迎!
任务1 指针访问变量
【任务实现】 训练 1:食品店有鲜牛奶 、酸奶 、鲜榨果汁等商品 ,可提供“每月优惠订购 , 每日 送货到家 ”服务, 小红订购了一种商品 , 快递员在小红家安装了一个收件箱 , 每日按 时送货 。用函数调用的方法来模 拟一下这个收发商品的过程吧 。编程实现 , 要求输出 如下信息。 (1)训练分析
任务1 指针访问变量
【任务准备】 (3)直接访问与间接访问 变量的访问方式有两种: 直接访问和间接访问。 直接访问:按变量地址存取变量值(内容)的方式称为直接访问 ,如图 所示。 间接访问: 如果变量的地址存储在另一个变量的存储单元中, 如图 所示 , 变量 a 的地址存储在变量 p 的存储单元中 , 此时 , 需要先访问变量 p ,取得变量 p 的值(变量 a 的地址) ,通过该地址再存取变量 a 的值 ,这种方式称为间接访问。
C++语言程序设计形考二实验七
上机实验7:指针应用程序设计一、实验内容分析下面程序运行结果#include <iostream>using namespace std;int main(){int i,m[]={0,1,2,3,4,5,6,7,8,9};// 判断输出int *p=m+3; cout<<*p<<endl; //cout<<++*p<<endl; //cout<<*p<<endl; //cout<<*++p<<endl; //cout<<*p<<endl; //cout<<*p++<<endl; //cout<<*p<<endl; //cout<<(*p)++<<endl; //cout<<*p<<endl; //cout<<++*p++<<endl; //cout<<*p<<endl; //cout<<(++*p)++<<endl; //cout<<*p<<endl; //p+=2; cout<<*p<<endl; //p=&m[6]; cout<<*p<<endl; //i=*p+4; cout<<i<<endl; //i=*(p-=3); cout<<i<<endl; //cout<<*p<<endl; //*(p+1)=9; cout<<*p<<endl; //cout<<*(p+1)<<endl; //return 0;}二、实验要求1. 先读程序,判断每一行的输出,填入行尾“判断输出”栏目下的括弧中;2. 实际运行程序,将实际输出判断输出进行比较,如有不相符之处,分析产生判断错误的原因。
C语言程序设计(第二版)-电子教案-丁亚涛-8587 第8章 指针
8.5.3 指针与二维数组
• 二维数组其实可以看成由一维数组构造而成。就相当于 几个队列构成一个方阵,方阵由队列组成,队列由具体 的元素--人组成。
• 一级指针只能管理队列,如果管理方阵,则需要二级指 针。
•int a=1000,*pa,**ppa; • pa=&a; • ppa=&pa;
• *(*(ppa)) ≡ *(pa) ≡ a ≡ 1000
• p是二级指针 • *p相当于*(p+0),级别降低为一级指针,相当于p[0] • **p相当于*(*(p+0)+0),级别降低为数组元素(普通变量),
也相当于p[0][0]
• p[1][2],相当于*(*(p+1)+2) • &p[1][2], 级别提升为一级指针,相当于:
• p[1]+2,*(p+1)+2 • &p[1],级别提升为二级指针,相当于:
f=f4; printf("a/b=%d\n",f(a,b));
8.5 指针与数组
• 8.5.1 指针与字符数组 • char str[100]= "Hello World"; • char *p=str; • 字符w可以有如下多种表示形式: • str[6] • *(str+6) • p[6] • *(p+6)
【例8-2】演示指针和数组的关系。
#include <stdio.h>
接可存取,由于p中存储的是x的信息。访问p可以获取x的信 息,再对银行存款进行操作。
8.1 借钱的故事
8.2 指针的概念
• C语言允许使用变量名、数组名[下标]、函数名等标 识符来访问内存
C语言程序设计第八章 指针的使用
第八章指针的使用【学习目标】本章将详细介绍在C语言中如何使用指针。
学习要点包括如下几点:(1)掌握指针和指针变量的概念,了解指针变量的特点以及直接访问数据和间接访问数据的原理。
(2)掌握指针变量的定义、赋值方法及指针运算符的使用,熟练运用指针访问简单变量。
(3)熟悉指针和一维数组的关系,掌握指向一维数组的指针变量的定义方法,熟练使用指针变量访问一维数组元素。
(4)了解指针与字符串的关系,能熟练使用指针处理字符串。
(5)熟练掌握用指针变量作函数的参数时函数的定义和调用方法、数组名作函数的参数用法。
(6)指向指针的指针的运用。
【学习导航】本章的在整个课程中的位置如图5-1所示。
图8-1 本章学习导航在本书的第一章介绍C语言有一个灵活性的特点,那么它的灵活性具体体现在哪里呢?其实就是指针。
指针是C语言的精华部分,通过利用指针,我们能很好地利用内存资源,使其发挥最大的效率。
有了指针技术,我们可以描述复杂的数据结构,对字符串的处理可以更灵活,对数组的处理更方便,使程序的书写简洁,高效。
8.1 地址和指针指针是C语言的一种数据类型,类似于整型、字符型等。
既然指针也是一种类型,那么也可以定义该类型的变量,称为指针变量。
指针变量和其他类型的变量的区别是:指针变量存储的是地址。
所以要学好指针,就一定要明白数据在内存中是如何存储的。
计算机所有数据都是存储在存储器里,系统的内存可看作编了号的小房间,如果要取房间的东西(读取数据)就需要得到房间编号。
地址就是内存区中对每个字节的编号。
下面通过两个整型变量来说明。
整型变量x、y(基本整型需4个字节)在内存中的存储如图8-2所示(假设内存编号是从2000开始)。
把变量所占用的存储单元首字节的地址作为变量的地址。
C语言中利用取地址运算符“&”获取变量的存储地址。
例如,&c将返回c的首地址;&x将返回x的首地址。
2000H2004H2008H2012H...图8-2 变量x和y在内存中的存储图8-2中2000H和2004H就是内存单元的地址。
指针实验报告结果讨论
指针实验报告结果讨论引言指针是C语言中一种重要的数据类型,它可以存储变量的内存地址。
指针的使用可以帮助我们在程序中更加灵活地操作内存,提高程序的执行效率。
本实验旨在通过对指针的实验,来验证指针的使用方式和效果,并讨论其在程序设计中的应用。
实验结果在实验过程中,我们通过编写C程序来进行指针的操作和应用。
在实验一中,我们编写了一个简单的程序,通过指针来交换两个变量的值。
实验二中,我们编写了一个程序,通过指针来实现数组元素的逆序排列。
在实验三中,我们通过指针来实现动态分配内存,并在程序运行过程中动态改变内存空间的大小。
实验结果显示,指针的使用确实可以提高程序的执行效率。
在实验一中,通过指针交换变量的值,只需要进行一次赋值操作,而不需要额外的变量来保存中间值,节省了内存空间,并提高了程序的执行速度。
在实验二中,通过指针进行数组元素的逆序排列,同样只需要进行一次赋值操作,而不需要额外的数组来存储逆序后的结果。
而在实验三中,通过指针来动态分配内存,可以根据实际需求来动态改变内存空间的大小,从而提高程序的灵活性和可扩展性。
结果讨论指针的使用在程序设计中有着广泛的应用。
首先,通过指针可以实现变量的间接访问,可以通过指针修改变量的值,或者通过指针获取变量的地址等。
这种间接访问方式可以帮助我们更加灵活地操作内存,同时也可以提高程序的效率。
其次,指针的使用可以减少内存的占用,在一些需要频繁操作内存的场景中尤为重要。
例如,在实验二中,通过指针进行数组元素的逆序排列,只需要进行一次赋值操作,而不需要额外的数组来保存逆序后的结果,从而减少了内存的占用。
最后,通过指针可以实现动态内存分配,可以根据实际需要来动态改变内存空间的大小,提高程序的灵活性和可扩展性。
然而,指针的使用也有一些需要注意的地方。
首先,指针的使用需要谨慎,容易出现一些常见的错误,例如空指针引用、野指针等。
这些错误在程序中很难调试,容易导致程序崩溃或产生不可预期的结果。
C语言程序设计第5章“使用指针参数交换两个变量值”案例
使用指针参数交换两个变量值”案例C主讲教师崔玲玲 5.1 “【案例说明】用函数实现两个变量值的交换使其在主调函数和被调函数中的值一致。
要求用指针变量作为函数参数。
程序运行结果如图 5.1所示。
图 5.1 使用指针参数交换两个变量值【案例目的】 1 熟悉如何定义指针变量掌握将指针变量作为函数参数的方法。
2 掌握通过指针参数由被调函数向主调函数传递多个值的方法。
【技术要点】由于变量的值始终存放在内存单元中因此要交换两个变量的值只需交换这两个变量对应的存储单元的值即可这就需要知道两个变量的地址。
也就是说需要保证主调函数与被调函数中所要交换的两个数的内存单元是同一内存单元即传递的参数是内存单元的地址而不是内存单元中的值。
【相关知识及注意事项】1. 指针和地址2. 指针变量的定义及初始化3. 指针变量的赋值4. 指针变量的引用 5. 指针作为函数参数 5.2 “有序数列的插入”案例【案例说明】用指针法编程插入一个数到有序数列中。
程序运行结果如图 5.7所示。
图 5.7 有序数列的插入【案例目的】 1 熟悉如何定义指针变量掌握将指针变量指向一维数组元素的方法。
2 掌握如何在一个有序的数列中查找合适的位置。
3 掌握如何将一个数插入到一个有序数列中。
【技术要点】 1 有序数组中插入一个数的关键是找到该数据插入的位置然后将插入位置及其后的所有元素均后移一位在空出的位置放入待插入的数据。
例如在13、27、38、49、65、76、97这列有序数据中插入53这个数成为新的有序数列13、27、38、49、53、65、76、97。
2 定义数组时必须多开辟一个存储单元用于存放待插入的数据。
【相关知识及注意事项】1. 指针变量的运算 2. 指针与一维数组 5.3 “两个字符串首尾连接”案例【案例说明】编写程序将两个字符串首尾连接起来。
要求用字符指针变量处理。
程序运行结果如图 5.9所示。
图 5.9 两个字符串首尾连接【案例目的】 1 学会定义基类型为字符型的指针变量并将指针变量指向串首的操作。
C语言程序设计——指针(完整版)PPT教学课件
说明:
(1)设有指向整型变量的指针变量p,若要把整型变量a 的地址赋予p,有以下方式: 指针变量初始化的方法: int a; int *p=&a; 赋值语句的方法: int a,*p; p=&a; (2)指针运算符*和指针变量说明中的指针说明符*不是 一回事。后者表示其后的变量是指针类型,前者则是一 个运算符用以表示指针变量所指的变量。
三、 指针变量作函数参数 C语言是通过传值将参数传递给函数的,对被调函数来说, 没有直接的方法来改变主调函数内的变量的值。 例:对两个整数按大小顺序输出。 #include<stdio.h> swap(int x,int y) {int t; t=x; x=y; y=t; } void main( ) {int a=3,b=5; if(a<b) swap(a,b); printf(“a=%d,b=%d \n”,a,b); }
说明:
(1)指针变量名的构成原则是标识符,前面必须有 “*”, 表示该变量的类型是指针型变量。 (2)在一个定义语句中,可以同时定义普通变量、数组、 指针变量。 (3)类型说明符说明的数据类型不是指针变量中存放的 数据的数据类型,而是它将要指向的变量或数组的数据 类型。因此,一个指针变量只能用来指向同种数据类型 的其他变量或数组,不能时而指向一个浮点型变量,时 而指向一个整型变量。
说明:
(3)如果已执行了语句p=&a; ,则: &*p:先进行*p的运算,即是变量a,再执行&运算, 即变量a的地址。因此&*p与&a相同。 *&a:先进行&a的运算,即得a的地址,再执行*运 算, 即&a所指向的变量,即变量a。 因此*&a与a相同。
第7章 指针程序设计
第7章 指针程序设计
7.1 指针概述
7.2 指针变量的定义和使用
7.3 指针与数组 7.4 指针作为函数的参数 7.5 指针函数和指向函数的指针变量 7.6 指针应用举例
7.1 指针概述
指针与指针变量
变量的直接访问和间接访问
7.1 指针概述
指针
7.2.2 定义指针变量
7.2.3 使用指针变量
7.2.1 指针变量程序示例
例7-1 使用指针变量输出数据程序。
/* program e7-1.c */ #include<stdio.h> int main(void) { int a=2008; int *p; p=&a; printf("%d\n", *p); return 0; }
/* 定义指针变量 */ /* p指向a */ /* 用*p表示变量a的值 */
7.2.2 定义指针变量
一般格式
数据类型 *指针变量名1,*指针变量名2,┅; 例如:int *p1,*p2; float *q; 指针变量允许和其他变量同时定义: char m,n,*p,*q; 注意 “数据类型”是指针变量要指向的变量的数据类型。
7.3.1用指针访问一维数组 例7-3 用指针实现一维数组的输入输出。
/* program e7-3-1.c */ #include<stdio.h> #define N 10 int main() { &a[i] int a[N]; int *p=a,i; for(i=0;i<N;i++) a[i] scanf("%d",p+i); for(i=0;i<N;i++) printf("%d ",*(p+i)); return 0; } /* program e7-3-2.c */ #include<stdio.h> #define N 10 int main() { int a[N]; int *p=a,i; for(i=0;i<N;i++) scanf("%d",p++); p=a; for(i=0;i<N;i++) printf("%d ",*p++); return 0; }
C语言程序设计 指针
实验6 指针学号:姓名:实验日期:一、实验目的和要求(1)掌握指针的概念、指针变量定义和引用。
(2)掌握指针的运用方法。
(3)掌握数组的指针和指向数组的指针变量。
(4)掌握指针与函数的关系。
(5)能正确使用字符串的指针和指向字符串的指针变量。
(6)了解指向函数的指针。
(7)了解指向指针变量的指针的概念及其使用方法。
二、实验内容(注意:由于本实验报告模板中已经有题目内容,故源代码中无需再附上教材上的题目编号信息,只需有你的学号和姓名信息即可。
以下所有题目都要求代码与运行结果一起截图,只有在代码实在过多无法一起截图情况下,才能分开截图)1、【编写程序】请用指针编程实现:从键盘输入10个数,求出其中的最小值。
提示:定义函数lookup(int *str,int *a,int n)查找数组str中的最小值,将数组中的每一个数跟第一个数进行比较,最后得到最小的数。
2、【编写程序】请用指针编程实现:编写函数change(char *s,int *p),将字符串s 中的数字字符转换成数字存储到整型数组p中,函数返回转换后的数字的个数。
提示:先检测字符是否为数字,数字的ASCII码值为30H~39H,逐个判断s中的字符,如果是数字字符,则将其转换成数字存储到整型数组中。
3、【编写程序】请用指针编程实现:先读入10个整数,然后把它们按从大到小的次序排列起来,最后再读入一个整数k,并将k插入到该整数数列中,插入后的数列仍然按从大到小的顺序排列。
要求:编写一个函数实现排序功能。
4、【编写程序】请用指针编程实现:从键盘输入一个字符串,判断输入的字符串是否为回文。
(回文是指正序和反序字符排例方式相同的字符串,如abcdcba是回文)。
5、【编写程序】请用指针编程实现:写一个函数,实现两个字符串的比较。
即自己写一个strcmpa函数,函数原型为:int strcmpa(char *p1,char *p2),若两个字符串相等则返回0,否则返回这两个字符串第一个不同字符的ASCII码差值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【实验目的】
1. 掌握使用指针变量的方法。 2. 掌握带有指针形参的函数的定义及调用 方法。 3.正确使用函数指针调用函数。 4.正确使用指针操作数组元素。 5.正确使用指针数组操作字符串。
int a;int swap(int *p1,int *p2) { int *p1=&a; } Int *p2=p1; void main() { int a, b; int *pointer_1=&a; int *pointer_2=&b; void main() swap(pointer_1,pointer_2); { } int *p, i, a[10]; p = a; int swap(int x, int y) for(i=0; i<10; i++) { scanf(“%d”, p++); } p = a; void main() for(i=0; i<10; i++) { printf(“%d”, *p++); } int a, b, c; int (*p)(int, int); 类型名 * 数组名[数组长度] int p= swap; (*p)[4]的区别 *p[4]与int c=(*p) (a, b); }
4.下面的程序是一个使用函数指针调用函数 的实例。阅读程序,输入、编译、连接, 运行并观察结果。体会使用函数指针调用 函数的步骤。 #include <stdio.h> int max(int x,int y) { int m=x; if (y>m) m=y; return m; }
main() { int a,b,c; int (*funp)(int,int); /*定义函数指针*/ printf("Input a,b:"); scanf("%d%d",&a,&b); funp=max; /*函数指针指向具体的函数*/ c=(*funp)(a,b); /*用函数指针调用函数*/ printf("max=%d\n",c); }
调用swap完成交换。 输出交换前后的变量值进行比较。
3.编写程序,实现两个字符串拷贝的函数 strcopy。 要求:
不允许使用C的字符串函数strcpy。 目标串的长度不应该超过源串的长度。对这个
条件进行检查。 主程序中从键盘输入两个字符串。调用strcopy 函数实现字符串拷贝操作。 输出拷贝前后,两个字符串的内容。
【实验内容】
1. 编写程序,使用指针实现打印一维数组所有元 素的操作。 要求:
每行打印4个元素。 从键盘输入下面一组数据进行测试:
5,12,2,6,1,24,15,11,7,3,19,20,13,8
2.编写程序,实现交换两个变量值的操作。 要求:
使用形参为指针的函数swap完成交换功能。 主函数中,使用整型指针从键盘输入两个整数,通过
Hale Waihona Puke