第八次实验报告

实验项目:指针实验

姓名:方缙   实验地点: 514物联网实验室   实验时间:2019年6月12日

实验项目

  • 指针基础及指针运算

  • 数据交换

  • 字符串反转及字符串连接

  • 数组元素奇偶排列

一、实验目的和要求

(1)掌握指针的概念和定义方法。

(2)掌握指针的操作和运算

(3)掌握指针与数组的关系

(4)掌握指针与字符串的关系

(5)熟悉指针作为函数的参数以及返回指针函数

(6)了解函数指针

二、实验内容

实验一、 8.3.1指针基础及指针运算

1、问题描述
定义一个整型指针变量p,使‘yi它指向一个整型变量a,定义一个浮点型指针q,使它指向一个浮点型变量b,同时定义另外一个整型变量c并赋值初值3 。使用指针变量,调用scanf函数分别输入a和b的值。通过指针间接访问并输出a、b的值。按16进制方式输出pq的值以及a、b的地址。将p指向c,通过p间接访问c的值并输出。输出p的值以及c的地址,并与上面的结果进行比较。
 2、实验代码

#include<stdio.h>
int main()
{
	int *p,a,c=3;
	float *q,b;
	p=&a;
	q=&b;
	printf("pleasse input the value of a,b:");
	scanf("%d%f",&a,&b);
	printf("result:\n");
	printf("      %d,%f\n",a,b);
	printf("      %d,%f\n",*p,*q);
	printf("the addrese of a,b:%p,%p\n",&a,&b);
	printf("the addrese of a,b:%p,%p\n",p,q);
	p=&c;
	pierintf("c=%d\n",*p);
	printf("the addrese of a,b:%x,%x\n",p,&c);
	return 0;

}

  

运行结果


3、问题分析:这个程序还是比较简单的,没有什么难度,问题不大。

实验二、8.3.2数据交换

1、问题描述
定义俩个函数,分别是swap1和swap2,用于交换a,b的值。

2、实验代码

#include<stdio.h>
void swap1(int x,int y);
void swap2(int *x,int *y);
int main()
{
	int a,b;
	printf("please input a=:");
	scanf("%d",&a);
	printf("\t     b=:");
	scanf("%d",&b);
	swap1(a,b);
	printf("\nAfter call swap1: a=%d b=%d\n"e,a,b);
	swap2(&a,&b);
	printf("\nAfter call swap2: a=%d b=%d\n",a,b);
	return 0;
}
   void swap1(int x,int y)
   {
   	int temp;
   	temp=x;
   	x=y;
   	y=temp;
   }
    void swap2(int *x,int *y)
    {
    int temp;
   	*&temp=*x;
   	*x=*y;
   	*y=*&temp;
	}

  

运行结果


3、问题分析:这个程序要注意形参的变化不会影响到实参的变化,但当地址交换了,值也就会变了,其他问题没有吧。

实验三、8.3.3字符串反转字符串连接

1、问题描述
定义俩个字符指针,通过get()函数输入俩个字符串。定义一个函数charreverse(charstr),通过指针移动的方式将字符串反转。再定义一个函数charlink(charstr1,char*str2),通过指针移动方式将俩个字符串连接起来。从主函数中分别调用上述函数,输入字符marrsort(int a[],int n);

2、实验代码

#include<stdio.h>
char *reverse(char *str);
char *link(char *str1,char *str2);
int main()
{
	char str[30],str1[30],*str2;
	printf("Input reversing character string:");
	gets(str);
	str2=reverse(str);
	printf("\nOutout reversed character string:");
	puts(str2);
	printf("Input string1:");
	gets(str);
	printf("Input string2:");
	gets(str1);
	str2=link(str,str1);
	printf("\nLink string1 and stringf:");
	puts(str2);
	return 0;
}
char *reverse(char *str)
{
	char *p,*q,temp;
	p=str,q=str;
	while(*p!=‘\0‘)
	p++;
q--;
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;
	p++;
	q++;
	}
char ch=‘\0‘;
return str1;
}

运行结果

3、问题分析:刚开始不明白啥是相向移动,只知道让一个变量去变化,这样就仅仅在一个方向移动了,所以结果也就出不来,后来明白了,结果也就出来了。

实验四、 8.3.4数组元素奇偶排列

1、问题描述
定义一个整型一维数组,任意输入数组的元素其中包含奇数和偶数,定义一个函数,实现将数组元素奇数在左、偶数在右的排列。在上述定义的函数中,不允许再增加新的数组,从主函数中分别调用上述函数,打印输出结果。

int main()
{
	int a[N],i;
	printf("输入:");
	for(i=0;i<N;i++)
	scanf("%d",&a[i]);
	arrsort(a,N);
	printf("输出:");
	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==1)
		p++;
		while(*q%2==0)
		q--;
		if(p>q)
		break;
		temp=*p;
		*p=*q;
		*q=temp;
		p++;
		q--;

	}
}

运行结果


3、问题分析:这个程序没啥问题,但是要理解这个程序的算法。

三、实验小结

虽然这次的实验是关于指针部分的,但这次实验的难度并不大,或许这只是指针的一点皮毛罢了,这一部分要好好学,只有学好了指针才能将c语言运用的随心顺手。

原文地址:https://www.cnblogs.com/fj001024/p/11011575.html

时间: 2024-11-09 08:10:14

第八次实验报告的相关文章

第八周课程总结 &amp; 实验报告(六)

第八周课程总结 一.包装类 介绍 装箱与拆箱 应用 二.异常 基本概念 基本格式 异常类的继承结构 throws关键字 throw关键字 Exception类和RuntimeException类 自定义异常类 三.多线程 基本概念 进程 多线程 Java中线程的实现 继承Thread类 实现Runnable接口 Thread和Runnable的区别 一.包装类        1.介绍                                8种基本类型变包装类 (1)除了Character

第八周课程总结及实验报告

实验报告 一.编写一个类,在其main()方法中创建一个一维数组,在try字句中访问数组元素,使其产生ArrayIndexOutOfBoundsException异常.在catch子句里捕获此异常对象,并且打印"数组越界"信息,加一个finally子句,打印一条信息以证明这里确实得到了执行. 1)实验代码 package text7; public class Text7 { public static void main(String[] args) { try { int s[]=

一篇糟糕的实验报告

本人在读本科大三学生,这个学期在修网络编程,在其中一次实验报告--利用wireshark观察和分析一些常见协议中,用了一周多的时间来研读相关资料和写报告. 在上学期修过计算机网络理论基础,绩点虽然过得去(90多),实际上我对TCP/IP的理解非常肤浅,根本道不出所学的体系结构等等. 在这次实验中,我用了很久没用的LaTeX去写(也因此花了不少时间在这),基本上按照自己的想法写到满意,后来我觉得在数据包上面没有做到分析且非常重要,于是乎我又做多了一篇,也就是两篇. 当我交上我的实验报告后,我就收到

第三次实验报告 之 五子棋

https://github.com/1246251747/3/blob/master/12.txt 实 验 报 告 实验名称:  五子棋实验报告 姓名:     王文政           学 号:  201303011159 班级:计科13-1 学院:   信息学院 五子棋JAVA实验报告 一.实验目的和要求 1.能够用编程语言实现一个简单的五子棋程序 2.在实际系统中使用.实现人工智能的相关算法 3.进一步加深对人工智能算法的理解 二.五子棋的基本常识与原理 1.五子棋的起源 五子棋,是一

20135231 JAVA实验报告三:敏捷开发与XP实践

---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如“查网络”.“问同学”.“看书”等一律得0分)以及分析(从中

实验三 敏捷开发与XP实践 实验报告

课程:Java程序设计实验   班级:1353  姓名:余佳源  学号:20135321 成绩:                           指导教师:娄嘉鹏      实验日期:2015.6.4 实验密级:无            预习程度:                   实验时间:15:30~18:00 仪器组次:  21                    必修/选修: 选修                  实验序号:3 实验名称:敏捷开发与XP实践 实验内容 1. XP

实验报告一——网络侦查与网络扫描

学   号201421440007   中国人民公安大学 Chinese people' public security university 网络对抗技术 实验报告   实验一 网络侦查与网络扫描     学生姓名 陈子阳 年级 2014 区队 四区 指导教师 高见   信息技术与网络安全学院 2017年7月7日   实验任务总纲 2017-2018 学年 第 一 学期 一.实验目的 1.加深并消化本课程授课内容,复习所学过的互联网搜索技巧.方法和技术: 2.了解并熟悉常用搜索引擎.扫描工具.

实验报告 一

中国人民公安大学 Chinese people' public security university 网络对抗技术 实验报告   实验一 网络侦查与网络扫描     学生姓名 王嘉豪 年级 2014级 区队 5 指导教师 高见 信息技术与网络安全学院 2017年7月7日   实验任务总纲 2017-2018 学年 第 一 学期 一.实验目的 1.加深并消化本课程授课内容,复习所学过的互联网搜索技巧.方法和技术: 2.了解并熟悉常用搜索引擎.扫描工具.社交网站等互联网资源,对给定的任务进行搜索.

网络对抗技术—实验一实验报告

学   号:201421450005   中国人民公安大学 Chinese people' public security university 网络对抗技术 实验报告   实验一 网络侦查与网络扫描     学生姓名 王潜翔 年级 2014级 区队 网安五区 指导教师 高见     信息技术与网络安全学院 2017年7月7日   实验任务总纲 2017-2018 学年 第 一 学期 一.实验目的 1.加深并消化本课程授课内容,复习所学过的互联网搜索技巧.方法和技术: 2.了解并熟悉常用搜索引擎