第八章 指针实验
C程序设计实验报告
实验项目:
###8.3.1 指针基础及指针运算 ###8.3.2 数据交换 ###8.3.3 字符串反转及字符串连接 ###8.3.4 数组元素奇偶排列 ##姓名:罗龙妹 实验地点: 514实验室 实验时间:2019年6月12日 ##一、实验目的与要求 ###8.3.1 指针基础及指针运算 - 加强学生对指针数据类型的理解,熟悉指针的定义、通过指针间接访问变量 ###8.3.2 数据交换 - 加强学生对指针类型作为函数参数传递的理解 ###8.3.3 字符串反转及字符串连接 - 加强学生对字符指针以及将指针作为函数的返回类型的理解,并通过指针对字符串进行操作。 ###8.3.4 数组元素奇偶排列 - 加强学生对使用指针对数组进行操作的理解。 ##二、实验内容 ##8.3.1 :指针基础及指针运算 - 问题的简单描述: (1)定义一个整型指针变量p,使它指向一个整型变量a,定义一个浮点型指针q,使它指向一个浮点型变量b,同时定义另外一个整型变量c并赋初值3。 (2)使用指针变量,调用scanf函数分别输入a和b的值。 (3)通过指针间接访问并输出a、b的值。 (4)按十六进制方式输出p、q的值以及a、b的地址。 (5)将p指向c,通过p间接访问c的值并输出。 (6)输出p的值及c的地址,并与上面的结果进行比较。 - 实验代码1: ``` #includechar *reverse(char *str)
{
char p,q,temp;
p=str,q=str;
while(*p!='\0')/*判断是否到达最后一个字符*/
p++;
p--;
while(q<p)
{
temp=*q;
*q=*p;
*p=temp;
q++,p--;/*指针做相向移动处理*/
}
return str;
}
char link(char str1,char str2)
{
char p=str1,q=str2;
while(p!='\0')
p++;
while(q!='\0')
{
p=q;/q指向的元素赋值到p所指向的元素/
p++;q++;/指针做相应的移动处理/
}
p ='\0';/令结束字符为空字符/
return str1;
}
- 问题分析:(重点分析在实验过程中出现的问题,及解决方法。)
这个程序需要达到两个效果,一是实现字符的反转,这需要通过两个指针移动的方式将字符串反转,一个指向起始字符,另一个指向结束字符,相向移动指针,并交换相应位置的字符,我在编写字符串反转的代码时,不知道指针做相向移动处理怎么写,导致程序一直运行不成功,后来是通过询问同学才将程序运行成功的;二是实现字符串的连接,这个也要通过指针移动的方式将两个字符串连接起来,需要一个指针移动到第一个字符串的结束字符‘\0’上,然后将该指针指向第二个字符串,并依次做赋值处理。
- 程序运行结果如下:</font>
![](https://img2018.cnblogs.com/blog/1617039/201906/1617039-20190613120821364-723880661.png)
<font color="black" size = "3px">
##8.3.4:数组元素奇偶排列
- 问题的简单描述:
(1)定义一个整型一维数组,任意输入数组的元素,其中包含奇数和偶数。
(2)定义一个函数,实现将数组元素奇数在左,偶数在右的排列。
(3)在上述定义的函数中,不允许再增加新的数组。
(4)从主函数中分别调用上述函数,打印输出结果。
- 实验代码:
include<stdio.h>
define N 10
void arrsort(int a[],int n);
int main()
{
int a[N],i;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
arrsort(a,N);
for(i=0;i<N;i++)
printf("%d ",a[i]);
}
void arrsort(int a[],int n)
{
int p,q,temp;
p=a;
q=a+n-1;
while(p<q){
while(p%2!=0)/判断p是否为奇数/
p++;/指针向后移动/
while(q%2==0)/判断p是否为偶数/
q--;/指针向前移动/
if (p>q)
break;
temp=p;
p=q;
q=temp;
p++,q--;/指针相向移动/
}
}
- 问题分析:(重点分析在实验过程中出现的问题,及解决方法。)
这个程序需要用到两个指针p,q,p向后移动直到遇到偶数,q向前移动,直到遇到奇数,然后将p、q所指位置进行交换,继续循环。
- 程序运行结果如下:</font>
![](https://img2018.cnblogs.com/blog/1617039/201906/1617039-20190613121025772-414102635.png)
<font color="black" size = "3px">
##三、实验小结(在本次实验中收获与不足)
这节实验课是进行关于指针的运用的一些实验,让我进一步地熟悉了指针的定义、通过指针怎么间接访问变量、怎么实现指针与数、字符串的结合,但有时还是搞不清楚表示指针的值,指针的地址,还有参数传值还是传址的区别。
/font>