【程序设计实践实验指导书】实验2:指针进阶

合集下载

指针进阶的知识点总结

指针进阶的知识点总结

指针进阶的知识点总结1. 指针的高级用法指针的高级用法包括指针的递增和递减、指针的比较、指针的运算等。

在C语言中,指针变量本质上就是一个存储内存地址的变量,因此可以进行递增和递减操作。

递增和递减的操作符分别是++和--,它们可以用来让指针指向下一个或上一个内存地址。

比较操作符可以用来比较两个指针变量的值,如果两个指针变量指向同一个内存地址,则它们相等,否则不相等。

指针变量也可以进行算术运算,比如加法、减法等操作,这些操作可以让指针指向任意偏移量的内存地址。

2. 指针和数组的关系在C语言中,数组和指针有着非常密切的关系。

在数组中,数组名就是一个指向数组首元素的指针常量,而数组元素可以通过下标来访问,其实就是通过指针进行的操作。

因此,可以将数组名当作指针来使用,可以通过指针的方式来访问数组元素。

另外,指针也可以用来实现数组的动态分配和释放,比如使用malloc函数来动态分配数组的内存空间,使用free函数来释放数组的内存空间。

3. 指针和函数的关系指针和函数也有着非常紧密的关系,在C语言中,指针可以作为函数的参数进行传递,也可以作为函数的返回值进行返回。

通过指针参数,可以实现对函数外部变量的访问和修改,可以实现对数组和字符串的传递和操作。

通过指针返回值,可以实现返回动态分配的内存空间,也可以实现返回多个数值结果。

另外,函数指针是一个非常重要的概念,它可以用来指向函数,可以作为参数进行传递和返回值进行返回,可以用来实现回调函数等功能。

4. 指针的类型转换在C语言中,指针的类型转换也是一个非常重要的操作。

指针的类型转换可以通过强制类型转换来实现,比如使用(void*)来将指针转换为void指针,使用(char*)来将指针转换为char指针等。

指针的类型转换可以用来实现对不同类型数据的访问和操作,比如将一个int指针转换为char指针,可以实现对int数据的逐字节访问。

但是需要注意的是,在进行指针类型转换时要格外小心,需要确保转换后的指针类型和实际内存中的数据类型一致,否则会出现未定义行为。

C语言程序设计实验指导书

C语言程序设计实验指导书

计算机软件根底实验指导书计算中心辽宁工业大学2021年12月目录实验一熟悉C语言编程环境 (1)实验二根本数据处理 (8)实验三计算分段函数 (11)实验四指定次数的循环 (15)实验五分支构造程序设计 (18)实验六循环构造程序设计〔一〕 (24)实验七循环构造程序设计〔二〕 (29)实验八循环构造程序设计〔三〕 (34)实验九循环构造程序设计〔四〕 (39)实验十函数程序设计〔一〕 (43)实验十一函数程序设计〔二〕 (50)实验十二一维数组程序设计 (57)实验十三二维数组程序设计 (63)实验十四字符数组程序设计 (70)实验十五指针程序设计 (76)实验十六构造程序设计 (87)实验十七文件 (93)实验一熟悉C语言编程环境【实验目的】1、熟悉C语言编程环境,掌握C程序在环境下的编辑、编译、连接和运行。

2、能够编写简单的C程序。

3、掌握程序的调试方法,能够找出并改正程序中的语法错误。

【实验内容】一用一个例如详细介绍C语言源程序在Visual C++ 6.0编程环境下,操作的整个过程。

【例如】在屏幕上显示你的学号、姓名和专业源程序:/*在屏幕上显示你的学号、姓名及专业*/#include "stdio.h"void main(){printf("\t08001020\t张楠\t车辆工程\n");}操作步骤:〔1〕启动VC++。

执行“开场〞“程序〞“Microsoft Visual Svtudio ”“Microsoft Visual C++ ”命令,进入VC++编程环境〔如图1-1所示〕。

图1-1 VC++窗口〔2〕新建文件。

执行“文件〞“新建〞命令,单击“文件〞选项卡〔如图1-2所示〕,选列表中的“C++ Source File〞,在“文件〞文本框中输入2-1.c,在“C目录〞文本框确定存放位置,然后单击确定。

图1-2 新建文件〔3〕编辑和保存。

实验2+指针实验

实验2+指针实验

淮海工学院计算机科学系实验报告书
课程名:《计算机软件技术强化》
题目:指针实验
班级:
学号:
姓名:
1、实验内容或题目
(1)设计一个程序,将两个变量的值进行交换,要求通过指针实现。

(2)编写一个程序,求一个整型数组中最大的元素和最小的元素,要求通过指针实现。

(3)设计一个程序,用选择法或冒泡法将若干字符串按字母顺序进行排序。

要求用指针完成。

(4)使用指针数组对输入的三个整数序列(每个序列5个整数),分别从小到大进行排序,排序方法不限。

(5)编写一个程序,判断用户输入的两个字符串是否相同,其中字符串可能含有空格等,以回车符表示输入结束。

2、实验目的与要求
⑴进一步掌握指针的概念,会定义和使用指针变量。

⑵能正确地使用数组的指针和指向数组的指针变量。

⑶能正确地使用字符串的指针和指向字符串的指针变量。

3、实验步骤与源程序
⑴实验步骤
1、画出流程图
2、编写源程序
3、程序运行测试
4、实验结果分析
⑵流程图、源代码
(1):
(2)
(3)
(4)
(5)
测试数据与实验结果(可以抓图粘贴)
题1
题2
题3
题4
题5
4、结果分析与实验体会
进一步掌握指针的概念,会定义和使用指针变量。

能正确地使用数组的指针和指向数组的指针变量。

能正确地使用字符串的指针和指向字符串的指针变量。

C语言程序设计实验指导书(2)

C语言程序设计实验指导书(2)

C语言程序设计实验指导书2011-2012学年第1学期学号:________姓名:________第1部分实验篇实验六函数实验目的1.熟练掌握函数的定义和使用方法。

2.熟练掌握调用函数与被调用函数之间的数据传递。

3.掌握函数的返回值和类型。

4.掌握的嵌套调用和递归调用。

实验内容1.读程序、写结果⑴/***** s6-1.c *****/#include<stdio.h>main(){int a=2,b=10;func(a,b);printf(“a=%d,b=%d\n”,a,b);}func(int a,int b){int temp;temp=a;a=b;b=temp;}【上机前分析结果】【实际上机结果】⑵/***** s6-2..c *****/#include<stdio.h>int a=1,j=2;main(){int i=2;func();printf(“a=%d,i=%d,j=%d\n”,a,i,j);}func(){int n,i=5;printf(“a=%d,i=%d\n”,a,--i);i++;a++;if(a<4) func();a--;j+=3;printf(“a=%d,j=%d\n”,a,j);}提示:注意函数递归调用的过程。

【上机前分析结果】【实际上机结果】(3)/***** s6-3.c *****/qian1( int x, int y ){int c, s, t ;s=x+y; t=x-y;c=qian2(s, t);return (c);printf("c=%d\n", c);}qian2( int x , int y ){return ( x + y ) ;}main( ){int a=1, b=2, c ;c=2*qian1(a, b);printf("c = %d\n", c);}【上机前分析结果】【实际上机结果】2. 完善程序(1) 给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。

c语言程序设计实验指导书

c语言程序设计实验指导书

c语⾔程序设计实验指导书《C 语⾔程序设计》实验指导书实验⼀C 程序的运⾏环境⼀、实验⽬的1、了解所⽤的计算机系统的基本操作⽅法,学会独⽴使⽤该系统;2、了解在该系统上如何编辑、编译、连接和运⾏⼀个C 程序;3、通过运⾏简单的C 程序,初步了解C 程序⼆、实验预习1、认真阅读简单的C 程序介绍,C 程序上机步骤部分内容;2、编写好所需要的程序,程序的书写应该清楚整洁,⼀般检查应该是没有明显的错误。

如果在程序中有疑问的地⽅,可以标记起来,以便于上机调试时予以注意。

初学者特别忌讳上机前⾃⼰不编写程序,到时随便地抄别⼈的程序。

三、实验指导1、输⼊并运⾏⼀个简单的程序,从⽽熟悉所⽤系统的上机⽅法与步骤。

(1)选择“File”—“New”—“Win32 console application”,输⼊⼯程名称,确定。

直接选择第⼀项“An empty project”,点击“Finish”。

“File”—“New”—File框下⾯选择⽂件类型“C++ Source File” ,输⼊⽂件名称,点击“OK”。

(2)输⼊下⾯的程序(例题1.1)#includevoid main( ){printf("This is a C program.\n");}(3)选择“Build”菜单下“Compile”选项,快捷键为Ctrl+F7。

编译过程将源代码转化成⽬标⽂件格式,后缀名为.o。

选择“Build”菜单下“Build”选项,快捷键为F7。

如果出现“出错信息”,则应找出原因并改正之,再进⾏编译构建。

(4)如果编译⽆错误,选择“Build”菜单“Execute”选项,运⾏程序,快捷键为Ctrl+F5,观察分析运⾏结果。

2、输⼊并编辑⼀个C 程序(1)同上,新建⼯程和⽂件。

(2)输⼊以下程序(例题1.2,但故意漏打或打错⼏个字符)#includevoid main( ){int a,b,sum ;a=123 ;b=456 ;sum=a+b ;printf("sum is %d\n",sum);}(3)以下步骤同上⼀例题3、输⼊并运⾏⼀个需要在运⾏时输⼊数据的程序(1)清空编辑窗⼝,输⼊下⾯的程序(例题1.3)。

高级语言程序设计(C语言)实验指导书

高级语言程序设计(C语言)实验指导书

高级语言(C语言)程序设计实验指导书第一章前言一、C语言实验的目的学习《C程序设计》课程应当熟练地掌握程序设计的全过程,即独立编写源程序、独立上机调试、独立运行程序和分析结果,不能满足于能看懂书上的程序。

上机实验的目的,绝不仅仅是为了验证所编写的程序是否正确,而是为了:1.加深对讲授内容的理解,尤其是一些语法规定。

通过实验来掌握语法规则是行之有效的方法。

2.熟悉所用的操作系统和相应的上机环境。

3.学会上机调试程序,根据出错信息掌握修改程序的方法。

4.通过调试完善程序。

二、C语言实验前的准备工作1.了解所用的上机环境(包括C编译系统)的性能和使用方法。

2.复习和掌握与本实验有关的教学内容。

3.准备好上机所需的程序,不要完全复制或抄写别人的程序去上机。

4.对程序中出现的问题应事先估计,对程序中自己有疑问的地方应先作上记号,以便上机时注意。

5.准备好调试程序和运行程序所需的数据。

三、C语言实验的步骤上机实验原则上应一人一组,独立实验(如果程序太大,也可以2—3人一组)。

上机过程中出现的问题,除了是系统的问题以外,不要轻易举手问老师。

尤其对“出错信息”,应善于分析判断,找出出错的行,然后检查该行或其上一行。

上机实验一般应包括以下几个步骤:1.双击桌面Visual C++快捷方式进入Visual C++,或通过执行“开始=>程序=> Microsoft Visual Studio 6.0=> Microsoft Visual C++6.0”。

2.单击“文件”菜单的“新建”命令。

3.在打开的“新建”对话框中选择“文件”标签。

4.选择C++ Source File,选择文件保存位置,然后在文件输入栏中输入文件名。

如图所示:5.输入源程序。

6.编译程序:按“Ctrl+F7”或通过“编译”菜单中的“编译”命令,或使用工具栏中的相应工具进行编译运行若程序有错则找到出错行修改程序。

7.连接:若程序没有语法错误,则可按功能键F7或执行“编译”菜单中的“构件”命令或通过工具栏中的相关工具(编译工具右边工具),进行连接生成可执行文件。

c语言指针实验报告

c语言指针实验报告

c语言指针实验报告C语言指针实验报告引言指针是C语言中非常重要的概念,它允许程序直接访问内存地址,为程序员提供了更大的灵活性和控制力。

本实验旨在通过一系列实验来深入理解C语言指针的使用和原理。

实验一:指针的基本概念在第一个实验中,我们首先学习了指针的基本概念。

我们了解了指针的定义和声明,以及如何使用指针来访问变量的内存地址。

通过编写简单的程序,我们成功地掌握了指针的基本语法和用法。

实验二:指针的运算在第二个实验中,我们进一步学习了指针的运算。

我们探讨了指针的加法和减法运算,以及指针与数组的关系。

通过实际的编程练习,我们深入理解了指针运算的原理和实际应用。

实验三:指针和函数在第三个实验中,我们学习了指针和函数之间的关系。

我们了解了如何在函数中使用指针作为参数,以及如何在函数中返回指针。

通过实验,我们掌握了指针在函数中的灵活应用,以及指针和函数之间的相互作用。

实验四:指针和动态内存分配在最后一个实验中,我们学习了指针和动态内存分配的知识。

我们了解了如何使用指针来动态分配内存空间,并在程序运行时释放内存。

通过实际的编程实践,我们成功地掌握了动态内存分配的技术,并了解了指针在内存管理中的重要作用。

结论通过本次实验,我们深入理解了C语言指针的使用和原理。

我们掌握了指针的基本概念、运算、函数和动态内存分配等知识,为进一步深入学习和应用C语言打下了坚实的基础。

指针作为C语言中非常重要的概念,对于程序员来说具有重要的意义,通过本次实验,我们对指针有了更深入的理解,相信在今后的学习和工作中能够更加熟练地运用指针来解决实际问题。

C语言程序设计实验》__实验指导书

C语言程序设计实验》__实验指导书

实验指导书院系:机电工程学院专业:课程:C语言程序设计编者:丁潇目录实验一 C程序的运行环境及简单C程序设计.......... 错误!未定义书签。

实验二分支结构程序设计.......................... 错误!未定义书签。

实验三循环结构程序设计.......................... 错误!未定义书签。

实验四数组程序设计.............................. 错误!未定义书签。

实验五函数的使用方法............................ 错误!未定义书签。

实验六指针的使用方法............................ 错误!未定义书签。

实验一 C程序的运行环境及简单C程序设计一、实验目的:1、了解Visual C++、Turbo C集成环境,掌握常用的菜单命令和相应的功能。

2、掌握C程序的编辑方法,学会编译、连接和运行等操作步骤。

3、逐步掌握根据编译连接的提示信息和运行后用户屏幕输出来修改程序的技巧;4、掌握数据类型,尤其是基本的数据类型;5、理解变量与常量,懂得其存储结构;6、掌握表达式的构成及运算;7、掌握运算符的种类及运算方法,理解运算符的优先级及结合性;8、掌握不同类型的数据相互转换的规律;9、掌握赋值语句的使用方法;10、熟练掌握输入输出函数;11、了解简单的编程方法。

二、实验条件:Windows环境,VisualC++6.0、Turbo C2.0。

三、实验要求:1、通过上机实验,能了解Visual C++、Turbo C集成环境,初步掌握关于文件、编辑、编译、运行和窗口等方面的命令及相应功能,并能在C程序上机操作中使用这些命令。

2、通过C程序上机操作,能完整地认识和掌握程序的编辑、编译、连接和运行等步骤。

3、在实验中学会阅读有关信息,特别是编译连接的出错信息,学会对程序运行后用户屏幕输出数据(包括格式)对错优劣的评价,然后进一步修改源程序,直至完全正确。

《C程序设计》实验指导书

《C程序设计》实验指导书

实验一学会最简单的开发一.实验目的:了解VS2010的环境。

二.基本要求:掌握程序的输入、修改、编译、链接及DEBUG的方法。

二.实验内容:1.进入VS20102.创建一个项目,并添加一个简单的C语言程序void main(){ printf(“hello,everyone!”);}编译链接该程序。

观察用“启动调试”和“开始执行(不调试)”运行程序的区别。

3.输入代码清单2-1,单步执行该程序,并检查变量的值。

观察用F10和F11执行的区别。

4.对代码清单2-1,设置断点,观察执行过程。

实验二输入输出的使用(一)一.实验目的:熟悉C语言输入输出函数,包括getchar、putchar、scanf和printf。

二.基本要求:利用输入输出函数输入输出各类数据。

三.实验内容:1.完成第3章的“实战训练4、5”。

实验三基本语句的使用一.实验目的:熟悉C语言基本的数据类型、函数及语句的使用。

包括输入输出函数,各种数据类型间的转换,表达式的计算,赋值语句、if语句、switch语句。

二.基本要求:熟练编制简单的C语言程序。

三.实验内容:1.完成第3章的“实战训练8”。

2.完成第4章的“实战训练9”。

3.完成第5章的“实战训练1和16”。

实验四函数的使用一.实验目的:熟悉函数定义及函数调用的方法,熟悉带参数宏的定义及使用。

掌握多源文件程序的编译链接。

二. 基本要求:能正确地定义和调用函数以及递归函数的调用。

编制较复杂的程序。

三.实验内容:1.完成第6章的“实战训练5和21”。

2.用递归函数实现用弦截法求方程的根。

3.将代码清单6-20拆成两个源文件,并在VS2010中编译、链接、运行这个程序。

实验五数组的使用(二)一.实验目的:了解数组的使用。

二.基本要求:能熟练编制有关数组的程序,掌握字符串的操作。

三.实验内容:1.编制一个一维数组的程序。

要求如下:a 输入一组数据,存于一个一维数组。

b 用气泡法排序这批数据。

程序设计语言实验指导书12版

程序设计语言实验指导书12版

《程序设计语言》实验指导书徐东燕编北方民族大学计算机科学与工程学院2012年9月目录实验一 C语言编程环境熟悉及简单程序的编写(验证型实验,2学时) (3)实验二分支结构程序设计(设计型实验,2学时) (6)实验三循环结构程序设计(设计型实验,2学时) (8)实验四函数程序设计(设计型实验,2学时) (10)实验五数组程序设计((设计型实验,2学时) (12)实验六指针程序设计(设计型实验,2学时) (14)实验七结构体程序设计(设计型实验,2学时) (15)实验八程序结构与递归函数(综合性实验,2学时) (16)实验九指针进阶及综合程序设计(综合型实验,2学时) (17)实验十文件的程序设计(设计型实验,2学时) (18)参考文献 (20)课程编号:11101203 课程类别:专业基础课适用专业:计算机科学与技术、软件工程、网络工程、信管专业课程总学时:76 实验课学时:20开设实验项目数:10实验一C语言编程环境熟悉及简单程序的编写(验证型实验,2学时)一、实验目的与要求实验环境1.熟悉Cfree开发环境或Visual C++ 6.0的使用环境;2.掌握Cfree开发环境或Visual C++ 6.0环境下建立C程序的步骤;3.掌握C程序在Cfree开发环境或Visual C++ 6.0环境下的编辑、调试和运行的步骤、方法;4.理解C程序的一般结构;5.理解并掌握程序的顺序结构程序设计;6.在Cfree开发环境或Visual C++ 6.0环境下编写并运行基本的C程序;7.理解程序调试思想,能修改简单的C语法错误;8.掌握算术、赋值表达式,输入输入语句和简单数据处理方法。

二、实验环境1.微机每人一台,要求PⅢ以上处理器。

2.windows2000/xp操作系统。

3.Cfree开发环境或或Visual C++ 6.0开发环境。

三、实验预习与准备1.计算机基本操作练习。

2.Cfree开发环境或Visual C++ 6.0软件使用预习。

【程序设计实践实验指导书】实验2:指针进阶

【程序设计实践实验指导书】实验2:指针进阶

【程序设计实践实验指导书】实验2:指针进阶集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-河南工业大学实验报告课程名称:程序设计实践开课实验室:一、实验目的:1. 理解指针数组的概念,掌握指针数组的基本应用和编程方法。

2. 掌握单向链表的概念和建立方法。

3. 掌握单向链表的基本操作。

二、实验环境:1. 运行Window XP/Windows 7/Windows 8等的操作系统的PC机;2. VC++,CodeBlocks,或Dev C++等编译环境。

三、实验内容:1.编写程序,输入一个月份,输出对应的英文名称,要求用指针数组表示12个月的英文名称。

输入输出示例:5May【源程序】#include<>#include <>int main(){ int num;scanf("%d",&num);getchar();char*month[12]={"January","February","March","April","May","June","July","August","Septem ber","October","Novermber","December"};printf("%s\n",month[num-1]);return 0;}【运行结果】8AugustProcess returned 0 (0x0) execution time : sPress any key to continue.2. 定义一个指针数组将下表的星期信息组织起来,输入一个字符串,在表中查找,若存在,输入输出示例:Tuesday3【源程序】#include<>#include <>#include <>int main(){char*month[12]={"January","February","March","April","May","June","July","August","Septem ber","October","Novermber","December"};char mnum[10];scanf("%s",&mnum);getchar();int i=0;for(i=0;i<12;i++){ if(strcmp(mnum,month[i]))printf("%d\n",i+1);return 0;}return 0;}【运行结果】Junuary1Process returned 0 (0x0) execution time : sPress any key to continue.3. 编写程序,输入n(n<10)个字符,输出其中最长字符串的有效长度。

【指导】C程序设计II实验指导书

【指导】C程序设计II实验指导书

【关键字】指导C程序设计II实验指导书信息工程学院计算机系目录C程序设计实验要求课程实验是C程序设计课程的一个重要的实践环节,要求每个同学按以下要求独立完成每次实验,每次上机前必须编写完实验要求的所有题目,并按输出格式写出程序的运行结果,上机时调试程序并验证结果的正确性,若与运行结果不符,则要分析原因,上机时间由课内和课外上机两部分,以下时间为课内上机时间。

实验一指针应用目的及要求:1.理解和掌握指针及指针变量的基本概念和定义。

2.熟练掌握指针的运算(算术运算、关系运算和赋值运算)。

3.熟练掌握几种不同类型的指针(指向变量的指针、指向数组的指针、指向字符串的指针、指向函数的指针、指向指针的指针)。

2011 求平均成绩Description某班期末考试后要统计本班某门课程的平均成绩、最高成绩和最低成绩,你的任务是编程序实现这一功能。

一个班的人数不超过30人,要求实现求最高成绩,最低成绩和平均成绩的功能用一个函数完成,并用参数返回最高成绩,最低成绩和平均成绩。

Input一组测试数据,第一行为一个整数N,表示本班有N个人(N<=30),接下来的N行中每行一个整数,表示一个人的成绩。

Output输出一行。

该行包含三个数,分别是:最高成绩、最低成绩和平均成绩。

成绩之间由空格分隔,其中平均成绩为实数,并精确到小数点后两位。

Sample Input59083768562Sample Output90 62 79.202012 字符串排序Description按字典顺序输出某班所有人的名单。

Input一组测试数据,第一行为一个整数N,表示本班有N个人(N<=30),接下来的N行中每行一个人名(人名均由小写字母组成)。

Output按字典顺序排列的人员名单。

每个人名占一行。

Sample Input5zhangsanliyangwangxiaoliqingwuhuiSample Outputliqingliyangwangxiaowuhuizhangsan2013 字符串比较Description按字符串比较过程对给定的两个字符串进行比较,若相等则结果为0,若不等则结果为对应不等字符的差。

C__程序设计实验指导书

C__程序设计实验指导书

《C++程序设计实验指导书》市级精品课程《VC++与面向对象技术》课程组2011-9-1目录实验一顺序与分支结构程序设计 (3)实验二循环结构程序设计 (8)实验三一维数组及应用 (9)实验四指针及应用 (12)实验五结构体及应用 (14)实验六类的定义及使用 (15)实验七类的继承和派生 (16)实验八多态性及应用 (17)实验一顺序与分支结构程序设计一、实验目的1、了解和使用VC集成开发环境;2、熟悉VC环境的基本命令和功能键;3、熟悉常用的功能菜单命令;4、掌握顺序结构程序设计;5、掌握分支结构程序设计。

二、实验内容1.使用Visual C++ 6.0集成环境来编辑、编译并运行程序:#include <stdio.h>int main(){ /*定义部分和执行部分分开*/double r = 1.57, pi = 3.1415926;printf(" area = %f \n ",pi * r * r); /*输出圆面积*/printf(" circumference = %f \n",2 * pi * r);return 0;}2.输入一个年份,判断该年份是否闰年,如果是就输出YES,否则输出NO。

3.输入3个数a,b,c,要求按由小到大的顺序输出。

三、实验步骤Visual C++ 6.0启动后的用户界面选择菜单“开始/程序/Microsoft Visual Studio 6.0/Microsoft Visual C++ 6.0”,得到Visual C++ 6.0启动后的用户界面,如图1-1所示。

图1-1 Visual C++ 6.0用户界面1、创建新工程(1)单击菜单“文件/新建”,显示“新建:对话框,如图1-2所示。

(2)在此对话框的列表栏中,选择“Win32 Console Application”(Win32控制台应用程序”)。

C语言实验指导4--用指针编程

C语言实验指导4--用指针编程

《C语言程序设计》实验指导书软工2010级2班m a oS W U实验环境Windows,Visual C++实验目录实验四用指针编程实验目的1、掌握指针的基本用法,理解指针的本质。

2、掌握函数、指针、数组的关系。

实验内容1、指针的基本用法(1)下面的程序有一循环。

每次循环中要求用户输入一字符。

如果按Esc键,则退出;若输入字母u,则输出大写的字符串CHINA。

如果按其它键,则系统输出小写的china。

但下面的程序有4处错误,请大家调试改正。

#include <stdio.h>#include <string.h>#include <conio.h>void main(){char s[10], *upper ="CHINA";char c;printf("字符串upper中第2个字符是%c\n",*(upper+1));printf("字符串upper中第3个字符是%c\n",upper[2]);while(1){printf("\n-----------------------\n");printf("如果要退出,请按Esc键\n");printf("如果要输出大写,请按字母u\n");printf("如果要输出小写,请按其它键\n");c=getch();/* 获取一个按键,不回显。

头文件是conio.h */if(c==27) break;/* Esc键的ASCII码是27,退出 */else if(c=='u') strcpy(s,upper); /*拷贝upper指向的大写字符串到s*/ else strcpy(s,"china");/*拷贝小写字符串常量到s*/puts(s);printf("数组s中第二个字符是%c\n",*(s+1));}return;}上面的程序的补充:getch不能换成getchar。

实验报告 - 实验2 指针(2)(1540707103 - 周家尧)

实验报告 - 实验2 指针(2)(1540707103 - 周家尧)

实验报告 - 实验2 指针(2)(1540707103 - 周家尧)实验报告_实验2 指针(2)(1540707103_周家尧)一、实验目的:1、掌握指针变量p的算术运算:p±n(n为整数)、p++(p--)、++p(--p),理解移动一个数据单位的真实含义;2、能够用数组名或指针变量作函数形参,在函数中实现对数据的批量处理。

3、熟悉二维数组“行指针”、“列指针”的类型,加减1所移动的字节数,以及如何利用它们来存取数组元素。

二、实验内容2、(基础题)使用指针编程实现:输入3个正整数,按由小到大顺序输出。

程序运行结果如下所示:(提示:可以调用swap(int * x, int * y)来实现)程序代码:# include int main(void) {int a,b,c;printf(\请输入三个整数\\n\ scanf(\ swap(&a, &b); swap(&a, &c); swap(&b, &c);printf(\由小到大的顺序输出为:\\n\ printf(\ return 0; }swap(int * x, int * y) {int t;if(*x > *y) {}t = *x; *x = *y; *y = t; }3、(基础题)分析、运行下列程序,理解二维数组“行指针”、“列指针”的类型,加减1所移动的字节数,熟悉二维数组元素的间接访问方法,并回答相关问题:问题:(1)二维数组a的“行指针”的类型是什么?加减1所移动的字节数是多少?列举2个该类型指针的例子;1、int(*)[5];2、20;3、int a[4][5],int b[3][4][5];此时,a、b[0]为该类型指针;(2)二维数组a的“列指针”的类型是什么?加减1所移动的字节数是多少?列举2个该类型指针的例子;1、int *;2、4;3、int a[4][5];此时,a[0]、a[1]为该类型指针(3)二维数组a的“列指针”与“行指针”有什么联系?a+i与a[i]、*(a+i)、&a[i]有什么关系?1、二维数组a的“列指针”在数值上与“行指针”的首地址相同,但代表的意义不同,“行指针”在进行加减运算时,每加一跳到下一行,而“列指针”在进行加减运算时,每加一跳到下一列。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河南工业大学实验报告课程名称:程序设计实践开课实验室:一、实验目的:1. 理解指针数组的概念,掌握指针数组的基本应用和编程方法。

2. 掌握单向链表的概念和建立方法。

3. 掌握单向链表的基本操作。

二、实验环境:1. 运行Window XP/Windows 7/Windows 8等的操作系统的PC机;2. VC++6.0,CodeBlocks,或Dev C++等编译环境。

三、实验内容:1.编写程序,输入一个月份,输出对应的英文名称,要求用指针数组表示12个月的英文名称。

输入输出示例:5May【源程序】#include<stdio.h>#include <stdlib.h>int main(){ int num;scanf("%d",&num);getchar();char*month[12]={"January","February","March","April","May","June","July","August","September","October","Novermber","December"};printf("%s\n",month[num-1]);return 0;}【运行结果】8AugustProcess returned 0 (0x0) execution time : 2.466 sPress any key to continue.2. 定义一个指针数组将下表的星期信息组织起来,输入一个字符串,在表中查找,若输入输出示例:Tuesday3【源程序】#include<stdio.h>#include <stdlib.h>#include <string.h>int main(){char*month[12]={"January","February","March","April","May","June","July","August","September"," October","Novermber","December"};char mnum[10];scanf("%s",&mnum);getchar();int i=0;for(i=0;i<12;i++){ if(strcmp(mnum,month[i]))printf("%d\n",i+1);return 0;}return 0;}【运行结果】Junuary1Process returned 0 (0x0) execution time : 5.130 sPress any key to continue.3. 编写程序,输入n(n<10)个字符,输出其中最长字符串的有效长度。

要求自定义函数int max_len(char *s[] , int n),用于计算有n个元素的指针数组n中最长的字符串的长度。

6【源程序】#include <stdio.h>#include <stdlib.h>#include <string.h>int max_len(char *s[] ,int n);int main(){int i,n,t;printf("n=");scanf("%d",&n);getchar();char *num[n],str[80];for(i=0;i<n;i++){gets(str);num[i]=(char*)malloc(sizeof(char)*(strlen(str)+1));strcpy(num[i],str);}t=max_len(num,n);printf("%d",t);return 0;}int max_len(char *s[],int n){int i,t,max=0;for(i=0;i<n;i++){t=strlen(s[i]);if(max<t)max=t;}return max;}【运行结果】n=5sdsdsdsdsdddddddddddddd8Process returned 0 (0x0) execution time : 8.274 sPress any key to continue.g4. 输入若干个学生信息(包括学号、姓名和成绩),输入学号为0时输入结束,建立一个单向链表,再输入一个成绩值,将成绩大于等于该值的学生信息输出。

4 Zhao 85【源程序】#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct node{int num;char name[20];—int score;struct node *next;}LNode, *LinkList;void CreateList(LinkList head){LinkList p,rear=head;int num;char temp[20];int tmp;while(scanf("%d %s %d",&num ,&temp,&tmp),num!=0){p=(LinkList)malloc(sizeof(LNode));p->num=num;strcpy(p->name,temp);p->score=tmp;rear->next=p;rear=p;}rear->next=NULL;}void printList(LinkList head,int n){LinkList p=head->next;while(p){ if(p->score>=n){printf("%d %s %d\n",p->num,p->name,p->score);}p=p->next;}}int main(){ int n;LNode mark;LinkList head;head=(LinkList)malloc(sizeof(LNode));head->next=NULL;CreateList(head);scanf("%d",&n);printList(head,n);return 0;}【运行结果】1 zhang 783 ji 874 killer 785 kim 830 0 0802 wang 983 ji 875 kim 83Process returned 0 (0x0) execution time : 71.387 sPress any key to continue.5. 输入若干个正整数(输入-1为结束标志),要求按输入数据的逆序建立一个链表,并输出。

输入输出示例:1 2 3 4 5 6 7 -17 6 5 4 3 2 1【源程序】#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct node{int num;struct node *next;}LNode, *LinkList;void CreateList(LinkList head){LinkList p,rear=head;int num;while(scanf("%d",&num),num!=-1){p=(LinkList)malloc(sizeof(LNode));p->num=num;rear->next=p;rear=p;}rear->next=NULL;}void printList(LinkList head){ int temp;LinkList p=head->next,j;{ j=p->next;while(j){if(p->num<j->num){temp=p->num;p->num=j->num;j->num=temp;}j=j->next;}p=p->next;}p=head->next;while(p){printf("%d ",p->num);p=p->next;}}int main(){ int n;LNode mark;LinkList head;head=(LinkList)malloc(sizeof(LNode));head->next=NULL;CreateList(head);printList(head);free(head);return 0;}【运行结果】1 2 3 4 44 55 33 23 42 45 -155 45 44 42 33 23 4 3 2 1Process returned 0 (0x0) execution time : 14.031 sPress any key to continue.*6、在第4题的基础上,再添加两个函数模块,一个实现将链表中数据存储到磁盘文件“student.dat”中。

另一个实现将磁盘文件“student.dat”中的数据按照学号逆序建立新的链表。

【源程序】【运行结果】—四、实验结果&总结:(列出实验过程中的收获和遇到的困难)。

相关文档
最新文档