C语言实验六实验报告——指针

合集下载

c语言程序设计实验总结

c语言程序设计实验总结

C语言程序设计实验总结摘要该文档总结了我在C语言程序设计实验中的经验和教训。

通过这些实验,我对C语言编程的基本概念和技巧有了更深入的理解和掌握。

本文将综合分析每个实验的目标、方法和结果,并总结了我在实验中遇到的问题以及解决方法。

引言C语言是一种通用的高级程序设计语言,广泛应用于各个领域。

通过进行C语言程序设计实验,我们可以更好地了解C语言的语法和用法,提高我们的编程能力和问题解决能力。

本文将基于我在实验中的经验,对每个实验进行详细描述和总结。

实验一:基本输入输出程序设计实验一旨在加深对C语言程序设计的理解,熟悉基本的输入输出操作。

我们需要编写程序,实现基本的数据输入和输出,并进行简单的运算。

这个实验让我对C语言中的输入输出和基本数据类型有了更深入的理解。

实验二:条件语句和循环语句的应用实验二要求我们掌握条件语句和循环语句的使用方法,并能够通过这些语句解决实际问题。

我学会了使用if语句进行条件判断,以及使用for和while循环进行迭代操作。

通过这个实验,我可以更好地掌握程序流程控制和代码逻辑。

实验三:一维数组的应用实验三着重让我们学会使用一维数组来存储和处理大量的数据。

在这个实验中,我学会了声明和初始化数组,以及使用循环结构遍历数组元素。

这个实验对我后续的数据处理有了很大的帮助。

实验四:字符串处理实验四主要教我们如何处理字符串和字符数组。

在实验中,我学会了使用字符数组来存储和操作字符串,同时,了解了一些常见的字符串处理函数,如strlen、strcpy等。

这个实验让我更加熟悉字符串的处理方法。

实验五:结构体的应用实验五要求我们学会使用结构体类型来定义自定义数据类型,并通过结构体变量来访问结构体成员。

在实验中,我学会了如何定义和使用结构体类型,并能够通过结构体变量操作结构体成员。

结构体的灵活性和可扩展性让我在实际编程中受益匪浅。

实验六:指针的应用实验六是C语言程序设计实验中最重要的一部分。

通过实验,我对指针的概念和用法有了更深入的理解。

c语言实验报告结果

c语言实验报告结果

c语言实验报告结果C语言实验报告结果引言:C语言是一种广泛应用于计算机编程领域的高级编程语言,具有简洁、高效等特点。

在学习C语言的过程中,实验是不可或缺的一部分,通过实验可以加深对C语言的理解和掌握。

本文将对我在C语言实验中所得到的结果进行总结和分析。

实验一:基本语法和数据类型在这个实验中,我学习了C语言的基本语法和数据类型,并进行了一些简单的编程练习。

通过实验,我熟悉了C语言的语法规则,包括变量的声明、赋值和运算符的使用等。

我也学会了使用不同的数据类型,如整型、浮点型和字符型,并了解了它们在内存中的存储方式和取值范围。

实验二:条件语句和循环结构这个实验主要涉及条件语句和循环结构的应用。

我学习了if-else语句和switch语句的使用方法,并通过编程实践加深了对它们的理解。

同时,我还学会了使用for循环、while循环和do-while循环来实现不同的功能。

通过实验,我发现循环结构的灵活运用可以简化编程过程,提高代码的效率。

实验三:数组和字符串在这个实验中,我学习了C语言中数组和字符串的使用。

通过实验,我了解了数组的定义、初始化和访问方式,并掌握了一些常见的数组操作技巧。

同时,我也学会了使用字符串函数来处理字符串,如strlen、strcpy和strcat等。

通过实验,我认识到数组和字符串在实际编程中的重要性和广泛应用。

实验四:函数和指针这个实验主要涉及函数和指针的应用。

我学习了如何定义和调用函数,并了解了函数的参数传递和返回值的使用。

同时,我也学会了使用指针来操作变量和数组,包括指针的声明、初始化和指向。

通过实验,我深刻体会到函数和指针在程序设计中的灵活性和高效性。

实验五:文件操作在这个实验中,我学习了C语言中的文件操作。

通过实验,我了解了如何打开、读取和写入文件,并学会了使用fscanf、fprintf和fread等函数来实现文件的读写操作。

同时,我还学会了使用文件指针和文件流来控制文件的位置和流向。

c语言指针实验总结

c语言指针实验总结

c语言指针实验总结《c语言指针实验总结》在学习C语言的过程中,指针是一个非常重要的概念。

为了更好地掌握指针的用法和理解其工作原理,我进行了一系列的实验。

在这篇总结中,我将分享我在实验中所学到的知识和经验。

首先,我进行了一个基本的指针实验,用于了解指针的定义和初始化。

我定义了一个整型变量,并通过指针将其地址赋给另一个指针变量。

然后,我通过对指针变量进行修改,来改变原始变量的值。

这个实验帮助我深入理解了指针是如何通过引用和修改地址来操作变量的。

接下来,我进行了一个指针数组的实验。

我创建了一个包含多个整型变量的数组,并定义了一个指向数组的指针。

通过对指针进行加减操作,我可以访问数组中的不同元素。

这个实验展示了指针和数组之间的密切关系,并帮助我更好地理解了C语言中数组的原理。

我还进行了一个指针和函数的实验。

我定义了一个带有指针参数的函数,并在主函数中调用了这个函数。

通过传递指针作为参数,我可以实现对变量的直接修改,而不需要通过返回值来传递结果。

这个实验使我意识到使用指针参数可以提高程序的效率和灵活性。

最后,我进行了一个动态内存分配的实验。

我使用malloc函数动态地分配了一块内存,并通过指针进行访问和操作。

通过释放内存,我可以避免内存泄漏问题。

这个实验教会了我如何使用指针来管理内存,确保程序的健壮性和效率。

通过这些实验,我对C语言中的指针有了更深入的理解。

指针在C语言中扮演着重要的角色,掌握了指针的使用技巧和原理,能够提高程序的效率和功能。

我相信通过不断实践和学习,我的指针技能将得到进一步的提升。

《C语言程序设计》实验报告实验六

《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。

c语言课程实验报告

c语言课程实验报告

c语言课程实验报告C语言课程实验报告引言:C语言作为一门广泛应用于计算机科学领域的编程语言,具有简洁高效的特点,被广泛用于系统软件、嵌入式设备等领域。

在C语言课程中,我们进行了一系列的实验,旨在通过实践提升我们的编程能力和理解C语言的各种特性。

本报告将对我们进行的实验进行总结和分析。

实验一:基本语法和数据类型在第一次实验中,我们学习了C语言的基本语法和数据类型。

通过编写简单的程序,我们熟悉了C语言的变量定义、运算符、控制语句等基本概念。

同时,我们也了解了C语言中常用的数据类型,如整型、浮点型、字符型等,并学会了如何进行类型转换和输入输出操作。

实验二:数组和字符串处理在第二次实验中,我们深入学习了C语言中的数组和字符串处理。

通过编写程序,我们掌握了数组的定义、初始化和访问方法,了解了一维数组和多维数组的特点。

同时,我们也学会了使用C语言提供的字符串处理函数,如strlen、strcpy、strcat等,实现字符串的复制、连接和比较等操作。

实验三:函数和指针第三次实验是函数和指针的学习。

我们学习了如何定义和调用函数,了解了函数的参数传递和返回值的相关知识。

同时,我们也深入研究了指针的概念和用法,掌握了指针的声明、初始化和使用方法。

通过实验,我们发现指针在C语言中具有重要的作用,可以提高程序的效率和灵活性。

实验四:文件操作和结构体在第四次实验中,我们学习了C语言中的文件操作和结构体。

通过使用文件读写函数,我们能够实现对文件的读取和写入操作,实现数据的永久存储。

同时,我们也学会了定义和使用结构体,实现对复杂数据的封装和处理。

这些知识对于实际项目的开发非常重要。

实验五:动态内存分配和链表在第五次实验中,我们学习了动态内存分配和链表的使用。

通过使用malloc和free函数,我们能够在程序运行时动态分配和释放内存,提高了内存的利用效率。

同时,我们也学会了使用链表数据结构,实现对数据的动态存储和管理。

链表在数据结构和算法中有着广泛的应用,对于解决实际问题非常有帮助。

《C语言程序设计》实验报告(实验1-11) 2013.3

《C语言程序设计》实验报告(实验1-11) 2013.3

《C语言程序设计》实验报告2012~2013学年第二学期班级姓名学号指导教师实验一实验项目名称:C程序的运行环境和运行C程序的方法所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序;2.通过运行简单的C程序,初步了解C源程序的特点。

二、预习内容:教材《C语言程序设计教程》第1章。

三、实验内容:1. 在Visual C++ 6.0环境下输入并运行下面的程序:#include <stdio.h>int main( ){printf("This is a C program.\n");return 0;}2. 在Visual C++ 6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序无语法错误,然后运行程序,并观察分析运行结果。

#include <stdio.h>int main( ){int a,b,suma=3;b=4;sun=a+b;print(“%d+%d=%d\n”,a,b,sum);return 0;}四、实验结果:1. 运行结果(或截图):2. (1) 改正后的源程序:(2) 运行结果(或截图):五、思考题:1. 一个C程序上机的步骤有哪些?答:2. 组成C程序的基本单位是函数,一个函数包括哪几个部分?答:成绩指导教师签名实验二实验项目名称:数据类型、运算符和表达式所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使用方法;3. 掌握基本算术运算符及其表达式的使用方法;4. 掌握++、--运算符、赋值运算符及其表达式的使用方法。

二、预习内容:教材《C语言程序设计教程》第2章。

三、实验内容:1. 在Visual C++ 6.0环境下输入下面的程序,编译、连接、调试该程序。

c语言程序实验报告

c语言程序实验报告

c语言程序实验报告C语言程序实验报告引言:C语言是一种广泛应用于计算机编程的高级语言,具有语法简洁、执行效率高等特点。

在本次实验中,我们将通过编写C语言程序来实践所学的知识,并探索各种功能的实现方法。

本报告将对实验过程和结果进行详细描述和分析。

实验一:基本语法和数据类型在这个实验中,我们首先学习了C语言的基本语法和数据类型。

通过编写简单的程序,我们熟悉了变量的声明和赋值、算术运算符的使用以及条件判断和循环结构的应用。

通过实际操作,我们深入理解了C语言的表达能力和灵活性。

实验二:函数和数组在这个实验中,我们学习了函数和数组的使用。

我们掌握了如何定义和调用函数,如何传递参数和返回值。

通过编写程序,我们进一步加深了对数组的理解,掌握了数组的声明、初始化和遍历等操作。

这些知识对于解决实际问题和提高程序的复用性非常重要。

实验三:指针和动态内存分配指针是C语言的重要特性之一,也是较为复杂的概念。

在这个实验中,我们学习了指针的定义、初始化和使用方法。

通过编写程序,我们深入理解了指针与变量之间的关系,掌握了指针的运算和指针与数组的关系。

此外,我们还学习了动态内存分配的方法,了解了如何在程序运行过程中动态申请和释放内存。

实验四:结构体和文件操作结构体是一种自定义的数据类型,可以将多个不同类型的变量组合在一起。

在这个实验中,我们学习了结构体的定义和使用方法。

通过编写程序,我们掌握了结构体的初始化、访问和传递等操作。

此外,我们还学习了文件操作的方法,了解了如何读写文件和处理文件指针。

实验五:综合实验在这个实验中,我们将运用前面所学的知识,编写一个综合性的程序。

通过实践,我们巩固了对C语言的掌握,并提高了解决问题的能力。

这个实验不仅考验了我们的编程技巧,还培养了我们的逻辑思维和创新能力。

总结:通过这些实验,我们不仅学习了C语言的基本语法和数据类型,还掌握了函数、数组、指针、结构体和文件操作等高级特性。

通过实践,我们深入理解了C语言的运行机制和编程思想,提高了解决问题的能力和代码的质量。

c语言实验结论

c语言实验结论

c语言实验结论指针是c语言的精华,也是c语言的难点,它就像一把双刃剑,锋利无比但运用的不好也会给自己带来危害,后果比较严重,所以重点来说说指针。

很多初学者弄不清指针和数组到底有什么样的关系,为避免混淆不清,下面总结一下指针和数组的特性。

指针是保存数据的地址,任何存入指针变量的数据都会被当作地址来处理,指针变量本身的地址由编译器另外存储,存储在哪里,我们并不知道,间接访问数据,首先取得指针变量的内容,把它作为地址,然后从这个地址读或写入数据。

指针可以用间接访问操作符(_)访问,也可以用以下标的形式访问,指针一般用于动态数据结构。

数组是用来保存数据的,数组名代表的是数组首元素的地址而不是数组的首地址,所以数组p与&p是有区别的,虽然内容相同,但意义却不同,&p才是整个数组的首地址,数组名是整个数组的名字,数组内每个元素并没有名字,不能把数组当一个整体来进行读写操作。

当然数组在初始化时也有例外,如int p[]=“12345”是合法的。

数组可以以指针的形式访问如_(p+i);也可以以下标的形式访问p[i],但其本质都是p所代表的数组首元素的地址加上i_sizeof(类型)个字节作为数据的真正地址来进行访问的。

数组通常用于存储固定数目且数据类型相同的元素。

刚开始的时候我有点分不清指针数组和数组指针,现在也总结一下,指针数组,首先它是一个数组,数组的每个元素都是指针,可以理解为“存储指针的数组”的简称,数组指针,首先它是一个指针,它指向一个数组,在32位系统下永远只占4个字节,至于它指向的数组有多少个字节,并不知道,可以理解为“指向数组的指针”。

举个例子,int_p1[10]与int(_p2)[10],要理解这个问题,首先要清楚操作符的优先级,“[]”的优先级比“_”的优先级高,所以首先p1与“[10]”结合构成一个数组p1[10],int_为修饰数组的内容,所以数组元素是指向int类型的指针,所以这个是指针数组,“()”的优先级比“[]”的优先级高,“_”与p2结合构成一个指针变量,int修饰数组的内容,即数组的每个元素,数组这里并没有名字,是个匿名数组,现在清楚了p2是一个指针,它指向一个包含10个int 类型数据的数组,即为数组指针。

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

一、实验项目名称指针二、实验目的1.掌握指针的基本概念和基本用法。

包括:变量的地址和变量的值,指针变量的说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等;2.掌握数组与指针的关系并能够利用指针解决数组的相关问题;3.掌握字符串与指针的关系并能够利用指针处理字符串的问题;4.掌握指针与函数的关系并能够利用指针处理函数问题;5.了解指向指针的指针的概念及其使用方法;6.能够使用指针进行程序设计。

三、实验内容有关指针的程序设计1.编程实现:任意输入的10个数,求其平均值。

要求:(1)10个数采用scanf语句读入。

(2)利用指针实现对这10个数的访问。

(3)要求平均值的精度为小数后面2位。

2.编程实现:将一个任意整数插入到一个已排序的整数数组中,插入后数组中的数仍然保持有序。

要求:(1)整数数组由初始化方式输入。

任意整数由scanf函数输入;(2)实现过程采用指针处理;(3)输出原始数组数据以及插入数据后的数组数据并加以相应说明。

3.编写函数newcopy(char *new,char *old),它的功能是删除old所指向的字符串中的小写字母,并将所得到的新串存入new中。

要求:(1)在主函数中以初始化方式输入一个字符串;(2)调用newcopy()函数;(3)在主函数中输出处理后的结果。

4.编程实现:输入三个整数,按由大到小的顺序输出。

要求:(1)通过scanf函数输入三个数据并存入三个变量中;(2)利用指针实现从大到小输出;(3)修改程序,将三个整型数据改为字符型数据,输入三个字符,按从大到小数顺序输出;(4)修改程序,将三个字符型数据改为字符串数据,输入三个字符串,按从小到大顺序输出;(5)体会指针对不同数据处理的特点。

四、实验步骤及结果一、#include <>void main(){int a[10],n,sum=0;float aver;/* 定义平均数为浮点型*/int *p=a;/*初始化*/printf("Please input 10 numbers:\n");for (n=0;n<10;++n)scanf("%d",&a[n]);/*输入十个数*/for (n=0;n<10;++n)sum=sum+*(p+n);/*使用指针访问数据*/aver=(float)sum/n;printf("Average is %.2f",aver);/*精确到小数点后两位*/}二、#include <>void arr(int *a,int n);/*定义排序函数*/void insert(int *a,int num);/*插入并排序函数*/int n=10;/*定义数据个数,可修改*/void main(){int *a,num,j,k,b[10];printf("请输入个数据:\n");for (j=0;j<n;++j)scanf("%d",&b[j]);/*输入原始数据*/a=&b[0];/*初始化*/arr(a,n);/*调用排序函数*/printf("排序好的数据为:\n");for (j=0;j<n;++j)printf("%d ",*(a+j));/*输出排序好的原始数据*/ printf("\n请输入要插入的数:");scanf("%d",&num);printf("插入%d后的数据为:\n",num);insert(a,num);/*调用插入并排序函数*/}void arr(int *a,int n)/*排序函数*/{int k,j,h;for (k=0;k<10;++k)for (j=0;j<n-k-1;++j)if (*(a+1+j)<*(a+j)){h=*(a+1+j);*(a+1+j)=*(a+j);*(a+j)=h;}}void insert(int *a,int num){void arr(int *a,int n);int j,k;*(a+n)=num;/*将插入的数排在数组最后一位*/arr(a,n+1);/*将新数组重新排序*/for (j=0;j<(n+1);++j)if (*(a+j)==num){k=j;break;}/*找到插入的数在数组中的位置*/for (j=0;j<(n+1);++j)printf("%d ",*(a+j));printf("\n插入的数据排在数组的第%d位",k+1);}三、#include <>void newcopy(char *new1,char *old);void main(){char *new1,*old,a[10];/*new是不能当做变量,所以用new1*/old=a;new1=a;/*字符串的初始化*/printf("请输入字符串:\n");scanf("%s",a);newcopy(new1,old);/*调用函数*/printf("新的字符串为:\n");printf("%s",new1);}void newcopy(char *new1,char *old){int n,j=0;for (;* old!='\0';++old)if ((* old)>'z' || (* old)<'a'){* (new1+j)=* old;++j;}/*排除原字符串中的小写字母,将其他字符存入新字符串*/ *(new1+j)='\0';/*结束新字符串,否则新字符串的输出会故障*/}四、#include <>void main(){void exchange(int *q1,int *q2,int*q3);int a,b,c,*q1,*q2,*q3;printf("请输入个数:\n");scanf("%d,%d,%d",&a,&b,&c);q1=&a;q2=&b;q3=&c;/*将三个数的地址存入q1q2q3中*/ exchange(q1,q2,q3);/*调用排序函数*/printf("3个数从大到小排列为:\n%d,%d,%d",a,b,c); }void exchange(int *q1,int *q2,int *q3){void swap(int *q1,int *q2);/*调用交换函数*/if (*q1<*q2)swap(q1,q2);/*若*q1小于*q2,交换地址位置*/if (*q1<*q3)swap(q1,q3);if (*q2<*q3)swap(q2,q3);}void swap(int *q1,int *q2)/*交换函数*/{int n;n=*q1;*q1=*q2;*q2=n;}修改程序,将三个整型数据改为字符型数据,输入三个字符,按从大到小数顺序输出:只需将程序中的所有int改为char,将%d改为%c即可。

修改程序,将三个字符型数据改为字符串数据,输入三个字符串,按从小到大顺序输出:#include<>#include<>#include<>int cmp(char *p1,char *p2) /* 字符串比较函数*/{int i=0;while (*(p1+i)==*(p2+i))if (*(p1+i++)=='\0') return 0; /* 这里是先判断*(p1+i)=='\0',然后再是i++ */return (*(p1+i)-*(p2+i));}void sort(char *a[3]) /*排序函数*/{char *temp;int i,j;for(i=0;i<3-1;i++)/* 选择排序*/for(j=i+1;j<3;j++)if(cmp(a[i],a[j])>0){temp=a[i];a[i]=a[j];a[j]=temp;}}void main(){int i;char s[3][81],*p[3];/* 设定每个字符串不超过字节*/printf("请输入3个字符串:\n");for(i=0;i<3;i++){gets(s[i]);p[i]=s[i];}sort(p);printf("字符串从小到大排序为:\n");for(i=0;i<3;i++)printf("%s\n",p[i]);}五、思考题或实验感想小结函数指针、数组指针、字符串指针的使用。

对于指针的使用,最重要的是搞清楚函数指针、数组指针和字符串指针的概念,不能混乱起来。

函数指针变量指向一个函数,然后通过该指针变量调用此函数。

函数指针中,函数名代表该函数的入口地址。

函数指针只能指向函数的入口而不能指向函数中的某一条指令处,因此不能用*(p+1)表示函数的下一条指令。

数组元素的指针就是数组元素的地址。

C语言中规定数组名代表数组中首元素的地址,所以p=&a[0]和p=a等价。

p+i,a+i就是a[i]的地址,或者指向数组的第i个元素。

*(p+i)或*(a+i)是p+i或a+i所指向的数组元素,即a[i]。

指向数组的指针变量可以带有下标,如p[i]与*(p+i)等价。

字符串指针实际上是把字符串的第一个字符赋给指针变量。

指针变量只能指向一个字符变量或其他字符型数据,不能同时指向多个字符数据。

相关文档
最新文档