第八章 指针实验

C程序实验报告

实验项目:

1、指针基础及指针运算

2、数据交换

3、字符串反转及字符串连接

4、数组元素奇偶排列

姓名:曹时仙  实验地点:教学楼514教室  实验时间:2019.6.12

一、实验目的与要求

1、掌握指针的概念和定义方法

2、掌握指针的操作符和指针的运算

3、掌握指针与数组的关系

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

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

6、了解函数指针

 二、实验内容

一、指针基础及指针运算(8.3.1)

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的地址,并与上面的结果进行比较。

2、实验代码

#include<stdio.h>
int main()
{int *p,a,c=3;float *q,b;p=&a;q=&b;printf("Please Input the Value of a,b:");scanf("%d,%f",p,q);printf("Result: \n");printf("   %d, %f\n",a,b);printf("   %d, %f\n",*p,*q);printf("The Address of a, b: %p,%p\n",&a,&b);printf("The Address of a, b:%p,%p\n",p,q);p=&c;printf("c=%d\n ", p);printf("The Address of c :%x ,%x\n",p,&c);return 0;
}

3、运行效果:

4、问题分析:

该题运行效果不与课本上的相同,是因为地址本来就不同,该题难度不大,主要是掌握了指针的最基本知识就能做出来。

二、数据交换(8.3.2)

1、问题的简单描述

(1)定义两个函数,分别为void swap1(int a,int b)和void swap2(int a,int b),用于交换a,b的值。

(2)从主函数中分别输入两个整形变量a、b。

(3)从主函数中分别调用上述两个交换函数,并打印输出交换后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("\n      b=:");scanf("%d",&b);swap1(a,b);printf("\nAfter Call swap1: a=%d b=%d\n",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、运行效果:

4、问题分析:

三、字符串反转及字符串连接

1、问题的简单描述

(1)定义两个字符指针,通过gets()函数输入两个字符串。

  (2)定义一个函数char reverse(char str),通过指针移动方式将字符串反转。

  (3)A定义一个函数char link(char str1,char *str2),通过指针移动方式将两个字符串连接起来。

  (4)从主函数中分别调用上述函数,输入字符串并打印输出结果。

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 Charcter String: ");gets(str);str2=reverse(str);printf("\nOutput Reversed Character String: ");puts(str2);printf("Input String1: ");gets(str);printf("\nInput String2:");gets(str1);str2=link(str,str1);puts(str2);return 0;}
char *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;p--,q++;}return str;
}
char *link(char *str1,char *str2)
{char *p=str1,*q=str2;while(*p !='\0')p++;while(*q !='\0'){*p=*q;p++,q++;}*p='\0';return str1;
}

3、运行效果:

4、问题分析:

这题个人感觉难度挺大,主要是一开始我还不知道怎样才是指针做相向运动,后来知道了,问题就基本解决了。

四、数组元素奇偶排列(8.3.3)

1、问题的简单描述

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

2、实验代码:

#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++;while((*q%2)==0)q--;if(p>q)break;temp=*p;*p=*q;*q=temp;p++,q--;}
}

3、运行效果:

4、问题分析:

一开始只是想好如何判断一个数是奇数还是偶数,之后的空就可以和之前的题目差不多了。

三、实验小结

本章据说是C语言的灵魂所在,玩好指针就说明C语言学的精通,不过指针确实也不是那么容易学,在上这个理论课的时候就发现了,难度较大。不过在实验课上收获不少,掌握了指针的移动,指针向前、向后、相向移动都有着不小的作用。

转载于:https://www.cnblogs.com/shixian/p/11014983.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大脑的学习方式如何,机器学习与生物学习的联系将提供「答案」

来源&#xff1a;ScienceAI编辑&#xff1a;凯霞准确指出神经活动如何随着学习而变化&#xff0c;不是黑白分明的。有人认为大脑中的学习或生物学习可以从优化的角度来考虑&#xff0c;这就是在计算机或机器人等人工网络中学习的方式。由卡内基梅隆大学和匹兹堡大学的研究人员共…

登顶Nature | DeepMind用AI首次实现数学领域重大进展,助力科学家证实两大猜想

来源&#xff1a;AI科技评论作者&#xff1a;杏花、莓酊编辑&#xff1a;琰琰数论是人类知识最古老的一个分支&#xff0c;然而它最深奥的秘密与其最平凡的真理是密切相连的。数学原理极易从事实中归纳出来&#xff0c;但证明却隐藏的极深。可以说数学&#xff0c;是一切科学的…

细胞如何获得秩序?除了形成细胞器,还可以发生相分离

来源&#xff1a;集智俱乐部作者&#xff1a;Viviane Callier译者&#xff1a;王百臻 审校&#xff1a;梁金 编辑&#xff1a;邓一雪 导语小小的细胞实际上是一个无比复杂的宇宙。DNA在细胞核中运筹帷幄&#xff0c;指导各种细胞器密切合作&#xff0c;产生功能各异的蛋白质。…

从人类交互通信发展简史看元宇宙发展趋势及商业价值

来源&#xff1a;科协频道从通信角度来看&#xff0c;人类社会通信方式的发展历程和趋势&#xff0c;它一共经历了以下几个阶段&#xff1a;通信方式的发展历程和趋势第一阶段几千年以前的人类通过口口相传的方式&#xff0c;实现人与人之间的通信&#xff0c;这种通信方式的深…

谷歌时间晶体登上Nature,诺奖得主重大猜想成为现实

来源&#xff1a;机器之心没有能量的供给&#xff0c;没有能量的消耗&#xff0c;它的循环运动会永远持续下去。时间晶体就像是一个「永动机」在不同状态之间永久循环往复而不消耗任何能量。来自斯坦福大学、谷歌、马克思 普朗克复杂系统物理研究所和牛津大学的研究团队声称已…

【GoWeb开发实战】Beego的路由控制

Beego的路由控制 二、路由控制 web框架中&#xff0c;路由是重要的一环&#xff0c;对于beego的路由配置如何&#xff1f; 2.1 默认路由 让我们从入口文件main.go先分析起来吧&#xff1a; package mainimport (_ "beegoDemo/routers""github.com/astaxie/beego…

挑战唯物论?诺奖得主彭罗斯:意识产生可能是大脑内的「量子叠加」的结果...

来源&#xff1a;新智元量子物理学取得了巨大成功&#xff0c;但其解释仍然不确定。大脑由神经元组成&#xff0c;而神经元又由分子组成&#xff0c;很可能会受到量子效应的影响。量子力学和神经科学能否融合成「量子意识」理论&#xff1f;「我们是谁」&#xff1f;恐怕没有什…

下一个是什么?2022年值得关注的22项新兴技术

来源&#xff1a;参考消息网英国《经济学人》网站11月8日发表题为《下一个是什么&#xff1f;2022年值得关注的22项新兴技术》的文章。在文章列举的22项新技术中&#xff0c;既有今年大热的“元宇宙”、太空旅游、脑机接口&#xff0c;也有备受期待的量子计算、艾滋病病毒疫苗……

防止ARP欺骗

前言&#xff1a; 曾经因为宿舍里面的同学经常熬夜打游戏&#xff0c;好言相劝不管用&#xff0c;无奈之下使用arp欺骗他们的主机&#xff0c;使之晚上11点之后游戏延迟&#xff0c;掉线&#xff0c;最后&#xff0c;一到11点同学们就都上床睡觉了。 防止arp欺骗的三种思路&…

孙文智/胡霁/汪小京团队揭示延迟满足的神经基础

来源&#xff1a;北京脑编辑&#xff1a;绿萝导语&#xff1a;20 世纪 60-70 年代&#xff0c;斯坦福大学心理学家瓦尔特•米舍尔团队进行了一系列有关自制力的心理学实验&#xff0c;其中包括著名的棉花糖实验&#xff0c;得出结论&#xff1a;「能为偏爱的奖励坚持忍耐更长时…

为什么数学家、统计学家和机器学习专家会用不同方式解决问题?

来源&#xff1a;数学建模andMATLAB原文作者&#xff1a;Nir Kaldero翻译&#xff1a;Fibears原文链接: http://www.galvanize.com/blog/2015/08/26/why-a-mathematician-statistician-machine-learner-solve-the-same-problem-differently-2/#.VeUQMNOqoVU乍一看&#xff0c;机…

眼耳鼻舌身意,严肃地聊一聊元宇宙的“技术拼图”

来源&#xff1a;脑极体元宇宙太太太火了&#xff0c;以至于还没来得及认真聊一聊技术本身&#xff0c;各种炒房团、割韭菜、融资潮、付费课……就纷至沓来&#xff0c;我看不懂但大受震撼。吃多了瓜&#xff0c;颇有一种“累了毁灭吧”的虚无感。不过&#xff0c;元宇宙的技术…

数据库高级知识——mysql架构介绍(一)

文章目录1.MySQL简介1.1 概述1.2 Mysql高级2.Mysql Linux版的安装2.1 MySQL下载官网2.2 安装与卸载2.3 查看MySQL安装版本2.4 mysql服务的启停2.5 登录mysql2.6 设置开机自启动2.7 MySQL相关文件2.8 修改字符集3.Mysql配置文件3.1二进制日志log-bin3.2 错误日志log-error3.3 慢…

美国大胆预测:未来300年的人类竟然是这样的!

来源&#xff1a;云犀科技编辑&#xff1a;小艾 关于未来&#xff0c;人们越来越向往300年后人类社会的发展又会是什么样子呢&#xff1f;对于未来&#xff0c;大家又是怎么预测的呢&#xff1f;▼5年后▼三维全息虚拟技术正式大规模商用&#xff0c;可以通过VR、AR技术进行远程…

数据库高级知识——mysql架构介绍(二)

文章目录1.Mysql逻辑架构介绍1.1 总体概览1.2 查询说明2.Mysql存储引擎2.1 查看命令2.2 各个引擎简介2.3 MyISAM和InnoDB2.4 阿里巴巴、淘宝用哪个1.Mysql逻辑架构介绍 1.1 总体概览 和其它数据库相比&#xff0c;MySQL有点与众不同&#xff0c;它的架构可以在多种不同场景中…

联邦学习应用思考:需求还是方法?

来源&#xff1a;AI数据派前言&#xff1a;目前&#xff0c;“联邦学习”这个术语在市场上存在很多认识上的误解和混淆&#xff0c;主要原因是其既在广义上表达了保护数据前提下联合多方数据训练模型的需求&#xff0c;又在狭义上表示了一类通过暴露部分数据信息来提升训练性能…

数据库高级知识——索引优化分析(一)

文章目录1.SQL性能下降原因2.常见通用的Join查询2.1 SQL执行顺序2.2 Join图3.索引简介3.1 索引是什么3.2 索引优势3.3 索引劣势3.4 索引分类3.5 mysql索引结构3.6 哪些情况需要创建索引3.7 哪些情况不要创建索引1.SQL性能下降原因 查询数据过多 能不能拆&#xff0c;条件过滤…

使用C++代码打印数字正方形

使用C代码打印数字正方形 作为一名初学者&#xff0c;最近在跟着网课学习C程序设计基础。在学习过程中遇到了一些习题&#xff0c;我根据自己的理解和思路写了一些代码实现&#xff0c;算是对自己学习过程的一个记录&#xff0c;也希望可以对别人有些许帮助。 题目描述 输入描述…

PNAS:大脑一思考,就不再对称也不再平衡

来源&#xff1a; 集智俱乐部作者&#xff1a;郭瑞东 审校&#xff1a;张澳 编辑&#xff1a;邓一雪 导语生命系统的各种功能&#xff0c;从精神层面的思考&#xff0c;到物理层面的运动&#xff0c;都会消耗能量并产生熵&#xff0c;打破原有的平衡。但不同的认知或物理活动&…

数据库高级知识——索引优化分析(二)

文章目录4.性能分析4.1 MySQL常见瓶颈4.2 Explain5.查询优化5.1 索引失效5.2 索引优化4.性能分析 4.1 MySQL常见瓶颈 CPU :SQL中对大量数据进行比较、关联、排序、分组 IO&#xff1a;实例内存满足不了缓存数据或排序等需要&#xff0c;导致产生大量 物理 IO。查询执行效率低…