实验报告一(指针)
利用指针排序实验报告(3篇)
![利用指针排序实验报告(3篇)](https://img.taocdn.com/s3/m/e49a2e61df80d4d8d15abe23482fb4daa48d1d7c.png)
第1篇一、实验目的1. 理解指针在排序算法中的应用。
2. 掌握几种常见的排序算法(如冒泡排序、选择排序、插入排序等)的指针实现方式。
3. 比较不同排序算法的效率,分析其优缺点。
二、实验环境1. 操作系统:Windows 102. 编程语言:C++3. 开发环境:Visual Studio 2019三、实验内容本次实验主要实现了以下排序算法:1. 冒泡排序2. 选择排序3. 插入排序以下是对每种排序算法的具体实现和性能分析。
1. 冒泡排序(1)算法原理冒泡排序是一种简单的排序算法。
它重复地遍历待排序的序列,比较每对相邻的元素,如果它们的顺序错误就把它们交换过来。
遍历序列的工作是重复地进行,直到没有再需要交换的元素为止。
(2)指针实现```cppvoid bubbleSort(int arr, int len) {for (int i = 0; i < len - 1; i++) {for (int j = 0; j < len - 1 - i; j++) {if ((arr + j) > (arr + j + 1)) {int temp = (arr + j);(arr + j) = (arr + j + 1);(arr + j + 1) = temp;}}}}```(3)性能分析冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1)。
当待排序序列基本有序时,冒泡排序的性能较好。
2. 选择排序(1)算法原理选择排序是一种简单直观的排序算法。
它的工作原理是:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
以此类推,直到所有元素均排序完毕。
(2)指针实现```cppvoid selectionSort(int arr, int len) {for (int i = 0; i < len - 1; i++) {int minIndex = i;for (int j = i + 1; j < len; j++) {if ((arr + j) < (arr + minIndex)) {minIndex = j;}}int temp = (arr + i);(arr + i) = (arr + minIndex);(arr + minIndex) = temp;}}```(3)性能分析选择排序的时间复杂度为O(n^2),空间复杂度为O(1)。
C++上机实验报告(指针)
![C++上机实验报告(指针)](https://img.taocdn.com/s3/m/8bed8b7331b765ce04081403.png)
C++上机实验报告实验名称:指针专业班级:姓名:学号:实验日期:目录1.实验目的2.实验内容3.程序代码4.调试结果5.实验心得1.实验目的(1)通过实验进一步掌握指针的概念,会定义和使用指针变量;(2)能正确使用数组的指针和指向数组的指针变量;(3)能正确使用字符串的指针和指向字符串的指针变量;(4)能正确使用引用型变量。
2.实验内容编程序并上机调试运行程序(要求用指针或引用处理)。
(1)输入3个整数,按由小到大的顺序输出。
编译一个程序,用指针变量作为参数。
(2)在上题的基础上将程序改为:输入3个字符串,按由小到大的顺序输出。
(3)用引用指针变量作为形参,实现3个整数由小到大输出。
(4)有n个人围成一圈,顺序排号。
从第1个人开始报数(从1~3报数),凡是到3的人退出圈子,问最后留下的人原来排在第几号。
(5)在主函数中输入10个字符串。
用另一个函数最它们排序。
然后在主函数输出这10个已排好的字符串。
要求用以下方法编程:Ⅰ.指向一维数组的指针座函数参数;Ⅱ.用string数组方法。
3.程序代码(1)#include<iostream>using namespace std;int main(){void swap(int *p1,int *p2);int n1,n2,n3;int *p1,*p2,*p3;cout<<"input three integers n1,n2,n3:";cin>>n1>>n2>>n3;p1=&n1;p2=&n2;p3=&n3;if(n1>n2) swap(p1,p2);if(n1>n3) swap(p1,p3);if(n2>n3) swap(p2,p3);cout<<"Now,the order is:"<<n1<<" "<<n2<<" "<<n3<<endl; return 0;}void swap(int *p1,int *p2){int p;p=*p1;*p1=*p2;*p2=p;}(2)Ⅰ.用字符数组方法的源程序#include<iostream>using namespace std;int main(){void swap(char *,char *);char str1[20],str2[20],str3[30];cout<<"input three line:"<<endl;gets(str1);gets(str2);gets(str3);if(strcmp(str1,str2)>0) swap(str1,str2); if(strcmp(str1,str3)>0) swap(str1,str3); if(strcmp(str2,str3)>0) swap(str2,str3); cout<<endl<<"Now,the order is:"<<endl; cout<<str1<<endl<<str2<<endl<<str3<<endl; return 0;}void swap(char *p1,char *p2){char p[20];strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);}Ⅱ.用string方法的源程序(程序中使用了指针和引用)#include<iostream>#include<string>using namespace std;int main(){void change(string &,string &);string str1=" ",str2=" ",str3=" ";char *p1=&str1[0],*p2=&str2[0],*p3=&str3[0];cout<<"input three line:"<<endl;gets(p1);gets(p2);gets(p3);if(str1>str2) change(str1,str2);if(str1>str3) change(str1,str3);if(str2>str3) change(str2,str3);cout<<endl<<"Now,the order is:"<<endl;cout<<str1<<endl<<str2<<endl<<str3<<endl; return 0;}void change(string &st1,string &st2) {string st;st=st1;st1=st2;st2=st;}(3)#include<iostream>using namespace std;int main(){void exchange(int *,int *,int *);int a,b,c,*p1,*p2,*p3;cin>>a>>b>>c;p1=&a;p2=&b;p3=&c;exchange(p1,p2,p3);cout<<a<<" "<<b<<" "<<c<<endl;return 0;}void exchange(int *q1,int *q2,int *q3){void swap(int *,int *);if( *q1> *q2) swap(q1,q2);if( *q1> *q3) swap(q1,q3);if( *q2> *q3) swap(q2,q3);}void swap(int *pt1,int *pt2){int temp;temp=*pt1;*pt1=*pt2;*pt2=temp;}(4)#include<iostream>using namespace std;int main(){int i,k,m,n,num[50],*p;cout<<"input number of person:n="; cin>>n;p=num;for(i=0;i<n;i++)*(p+i)=i+1;i=0;k=0;m=0;while(m<n-1){if(*(p+i)!=0) k++;if(k==3){*(p+i)=0;k=0;m++;}i++;if(i==n) i=0;}while(*p==0)p++;cout<<"The last one is NO."<<*p<<endl; return 0;}(5)Ⅰ.指向一维数组的指针最函数参数的源程序#include<iostream>using namespace std;int main(){void sort(char (*p)[6]);int i;char str[10][6];char (*p)[6];cout<<"input 10 strings:"<<endl;for(i=0;i<10;i++)cin>>str[i];p=str;sort(p);cout<<"Now,the sequence is:"<<endl; for(i=0;i<10;i++)cout<<str[i]<<endl;return 0;}void sort(char (*s)[6]){int i,j;char temp[6],*t=temp;for(i=0;i<9;i++)for(j=0;j<9-i;j++)if(strcmp(s[j],s[j+1])>0){strcpy(t,s[j]);strcpy(s[j],s[+j+1]);strcpy(s[j+1],t);}}Ⅱ.用string数组方法的源程序#include<iostream>#include<string>using namespace std;int main(){void sort(string*);int i;string str[10],*p=str;cout<<"input 10 strings:"<<endl;for(i=0;i<10;i++)cin>>str[i];sort(p);cout<<"Now,the sequence is:"<<endl; for(i=0;i<10;i++)cout<<str[i]<<endl;return 0;}void sort(string *s){int i,j;string temp;for(i=0;i<9;i++)for(j=0;j<9-i;j++)if(s[j]>s[j+1]){temp=s[j];s[j]=s[+j+1];s[j+1]=temp;}}4.调试结果(1)input three integers n1,n2,n3:54 -12 2 Now,the order is:-12 2 54(2)input three lines:I study very hard.C language is very interesting.He is a professor.Now,the order is:C language is very interesting.He is a professor.I study very hard.(3)12 6 876 12 87(4)input number of person:n=8The last one is No.7(5)input 10 strings: Now,the sequence is:China BurmaJapan ChinaKorea EgyptEgypt GhanaNepal ItalyBurma JapanGhana KoreaSudan LibyaItaly NepalLibya Sudan5.实验心得指针同数组一样,是C++中一个重要的概念,一个重要的知识点。
指针的应用实验报告实验总结
![指针的应用实验报告实验总结](https://img.taocdn.com/s3/m/b2ba4200ef06eff9aef8941ea76e58fafab045e2.png)
指针的应用实验报告实验总结
在指针的应用实验中,我学习了指针的概念、指针变量的定义和使用方法,以及指针在函数参数传递中的应用等。
通过本次实验,我深刻认识到指针在C语言程序设计中的重要性和广泛应用。
指针可以提高程序的效率,减少对内存的浪费。
同时,指针作为一种高级数据类型,也可以实现动态内存分配,有效地解决一些程序设计难题。
在实验过程中,我还学习了如何使用指针来访问数组元素,以及如何在函数中使用指针来修改实参的值。
这些知识对于进一步提高我的C语言编程能力具有重要的意义。
总之,在本次指针的应用实验中,我不仅掌握了指针的基本概念和使用方法,也增强了自己的编程思维和实践能力。
我相信这些知识和技能对我今后的编程学习和工作都将大有裨益。
指针万用表实验报告
![指针万用表实验报告](https://img.taocdn.com/s3/m/1fa5f05c640e52ea551810a6f524ccbff021ca76.png)
指针万用表实验报告指针万用表实验报告引言:指针万用表是一种常见的电子测量仪器,用于测量电压、电流、电阻等电学量。
本实验旨在通过使用指针万用表,对不同电路中的电压、电流和电阻进行测量,掌握其使用方法和注意事项。
实验一:电压测量在实验一中,我们将使用指针万用表测量直流电源的电压。
首先,将电源的正极与指针万用表的红色测试笔连接,将电源的负极与指针万用表的黑色测试笔连接。
然后,将指针万用表的旋钮调整至适当的量程,观察指针的偏转情况,并读取相应的电压数值。
实验结果表明,指针万用表能够准确测量直流电源的电压。
然而,需要注意的是,在测量过程中应避免过大的电压,以免损坏仪器或导致人身伤害。
实验二:电流测量在实验二中,我们将使用指针万用表测量电路中的电流。
首先,将电路中的一段导线与指针万用表的黑色测试笔连接,将另一段导线与指针万用表的红色测试笔连接。
然后,将指针万用表的旋钮调整至适当的量程,观察指针的偏转情况,并读取相应的电流数值。
实验结果表明,指针万用表能够准确测量电路中的电流。
然而,需要注意的是,在测量过程中应避免过大的电流,以免损坏仪器或导致人身伤害。
实验三:电阻测量在实验三中,我们将使用指针万用表测量电路中的电阻。
首先,将指针万用表的旋钮调整至适当的量程。
然后,将指针万用表的两个测试笔分别与电阻器的两个引脚相连接。
观察指针的偏转情况,并读取相应的电阻数值。
实验结果表明,指针万用表能够准确测量电路中的电阻。
然而,需要注意的是,在测量过程中应避免过大的电阻,以免损坏仪器或导致测量误差。
实验四:其他功能除了上述实验外,指针万用表还具有其他功能,如测量交流电压、测试二极管和晶体管等。
这些功能的使用方法与前述实验类似,只需要根据具体情况调整指针万用表的量程和测试笔的连接方式。
总结:通过本次实验,我们掌握了指针万用表的基本使用方法和注意事项。
指针万用表作为一种常见的电子测量仪器,具有准确、实用的特点。
然而,在使用过程中仍需谨慎操作,避免超出仪器的测量范围,以确保测量结果的准确性和仪器的安全性。
Pascal实验报告5
![Pascal实验报告5](https://img.taocdn.com/s3/m/751115df6137ee06eff91832.png)
Pascal实验报告实验名称:指针与动态数据类型
实验内容:指针中元素求和
学校:贵州民族大学
学号:201307010042
指导老师:杨承中,汲海巍
学生姓名:蓝建
日期:2014年8月
一、实验目的:
●掌握指针变量的定义和使用
●掌握指针数组的定义和使用
●能够利用指针构造复杂的数据类型
●掌握静态数据类型和动态数据类型概念
二、实验设备与环境:
Delphi7.0集成开发环境
三、主要数据结构和标识符及其说明:
运用头插法建立链表,结点中储存数字元素,指针p指向第一个结点,取出数据域元素,累加,知道结点为空。
四、算法分析
●建立链表储存链表data域的信息(小于10的数字)
●用p指针指向链表的头,逐个访问
●当结点不为空的时候输出元素并累加
●输出和
五、程序运行与测试
六、实习体会
用指针创立链表储存信息,使得更简洁明了,学会用链表储存的方式节约时间,是程序运行更加的有效率。
七、参考文献
书名编著人出版社
pascal高级语言程序设计赵致琢,刘坤起,
张继红
国防工业出版社
Pascal高级语言实
验教程
赵占芳,刘坤起电子工业出版社
八、源程序
H:\实验练习\pasical\指针\头插法建表累加\Project2.dpr。
指针矩阵相乘实验报告
![指针矩阵相乘实验报告](https://img.taocdn.com/s3/m/c11e5d45fe00bed5b9f3f90f76c66137ef064f75.png)
一、实验目的1. 理解指针在C语言中的作用,掌握指针的使用方法。
2. 学习矩阵相乘的基本原理,并利用指针实现矩阵相乘。
3. 提高编程能力和问题解决能力。
二、实验内容本次实验主要实现了两个矩阵的相乘,要求使用指针操作完成。
假设两个矩阵分别为A和B,其中A为m×k矩阵,B为k×n矩阵,乘积矩阵C为m×n矩阵。
三、实验原理矩阵相乘的原理如下:C[i][j] = Σ(A[i][k] B[k][j]) (k从0到k-1)其中,C[i][j]表示乘积矩阵C的第i行第j列的元素,A[i][k]表示矩阵A的第i 行第k列的元素,B[k][j]表示矩阵B的第k行第j列的元素。
四、实验步骤1. 定义两个二维数组A和B,分别代表两个矩阵。
2. 定义一个二维数组C,用于存储乘积矩阵。
3. 使用指针遍历两个矩阵,并计算乘积矩阵C的元素。
4. 输出乘积矩阵C。
五、实验代码```c#include <stdio.h>#define M 3 // 矩阵A的行数#define N 3 // 矩阵B的列数#define K 3 // 矩阵A的列数和矩阵B的行数int main() {int A[M][K] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};int B[K][N] = {{9, 8, 7},{6, 5, 4},{3, 2, 1}};int C[M][N];// 计算乘积矩阵Cfor (int i = 0; i < M; i++) {for (int j = 0; j < N; j++) {for (int k = 0; k < K; k++) {(C + i N + j) += (A + i K + k) (B + k N + j); }}}// 输出乘积矩阵Cfor (int i = 0; i < M; i++) {for (int j = 0; j < N; j++) {printf("%d ", (C + i N + j));}printf("\n");}return 0;}```六、实验结果执行上述代码,输出乘积矩阵C为:```30 24 1884 69 54138 114 90```七、实验总结通过本次实验,我们掌握了指针在C语言中的使用方法,并成功实现了矩阵相乘。
《C语言程序设计》实验报告实验六
![《C语言程序设计》实验报告实验六](https://img.taocdn.com/s3/m/fe5ca9c3370cba1aa8114431b90d6c85ec3a8815.png)
《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++ 实验数组、指针与字符串实验报告](https://img.taocdn.com/s3/m/aea89c9529ea81c758f5f61fb7360b4c2e3f2a3d.png)
贵州大学实验报告学院:计算机科学与信息专业:通信工程班级:实验内容1. 编写一个函数,统计一个英文句子中字母的个数,在主程序中实现输入、输出。
2.编写函数reverse(char *s)的倒序递归程序,使字符串s倒序。
实验数据1、代码如下:#include<iostream>#include <string>using namespace std ;int main(){string Str;char ch ;int i=0,j=0;cout << "input str:" <<endl;getline(cin , Str );for ( i=0;i<Str.length();i++ ){if ( Str[i] >='a' && Str[i]<='z' || Str[i] >='A' && Str[i]<='Z' ) j++;}cout << "str="<<Str<<endl ;cout << "The number is:" << j <<endl ;system("pause");return 0;}运行结果:2、代码和运行结果:实验总结1、这次试验让我了解了在C++程序中的输入输出和字符串的统计。
2、掌握了一点点递归的方法。
3、通过这次试验觉得自己还是有很多不足,对基础知识掌握不牢。
指导教师意见签名:年月日注:各学院可根据教学需要对以上栏木进行增减。
表格内容可根据内容扩充。
C语言实验报告8模板
![C语言实验报告8模板](https://img.taocdn.com/s3/m/dfdf0d6558fafab069dc02c9.png)
宁夏师范学院数学与计算机科学学院《高级语言程序设计》实验报告实验序号:8实验项目名称:指针的学习学号姓名专业、班级12级数应(2)班实验地点指导教师郑利珍时间一、实验目的及要求1、熟悉指针的正确用法。
二、实验设备(环境)及要求硬件:PC(PII以上,128M以上内存);软件:Windows XP操作系统、Visual C++ 6.0。
三、实验内容、步骤及结果1、从键盘输入3个整数,要求设3个指针变量p1、p2、p3,使p1指向3个数中的最大者,p2指向次大者,p3指向最小者,然后按由大到小的顺序输出这3个数。
2、输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
编写3个函数实现以下功能。
(1)输入10个数;(2)进行处理;(3)输出10个数。
要求:使用指针(形参)→数组名(实参)或数组名(形参)→数组名(实参)传输形式。
3、有一个整型二维数组,大小为m×n,要求找出其中最大值所在的行和列以及该最大值。
请编写一个函数max,要求如下。
(1)以数组名和数组大小为该函数的形参。
(2)数组元素的值在main函数中输入,结果在函数max 中输出。
4、输入3行字符(每行60个字符以内),要求统计出其中共有多少大写字母、小写字母、空格及标点符号。
四、分析与讨论五、教师评语成绩1.按时完成实验;2.实验内容和实验过程记录完整;3.回答问题完整、正确;4.有关于实验的心得;5.实验报告的撰写认真、报告格式符合要求。
100签名:郑利珍日期:2013年月日。
C语言指针实验报告
![C语言指针实验报告](https://img.taocdn.com/s3/m/a23cf76ce55c3b3567ec102de2bd960590c6d928.png)
实验6 指针一、实验目的1.掌握指针的基本概念和基本用法。
包括:变量的地址和变量的值,指针变量的说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等;2.掌握数组与指针的关系并能够利用指针解决数组的相关问题;3.掌握字符串与指针的关系并能够利用指针处理字符串的问题;4.掌握指针与函数的关系并能够利用指针处理函数问题;5.了解指向指针的指针的概念及其使用方法;6.能够使用指针进行程序设计。
二、实验环境PC微机Windows 操作系统Visual studio 2019三、实验内容与步骤1.实现:将一个任意整数插入到一个已排序的整数数组中,插入后数组中的数仍然保持有序。
要求:(1)整数数组由初始化方式输入。
任意整数由scanf函数输入;(2)实现过程采用指针处理;(3)输出原始数组数据以及插入数据后的数组数据并加以相应说明。
代码实现:#include<stdio.h>int main(){int num[11], * p = &num[10];//预先指向末尾for (int i = 0; i < 10; i++) {scanf("%d", &num[i]);}//输入已排序的数据printf("原始数组:");for (int i = 0; i < 10; i++) printf("%d ", num[i]);printf("\n");int newnum;scanf("%d", &newnum);//输入待插入的数bool flag = true;//判断是否是插入末尾for (int i = 0; i < 10; i++) {if (newnum <= num[i]) {//找到插入位置flag = false;for (int j = 9; j >= i; j--) {//插入数据并将其他数据后移*p = num[j];p--;if (j == i) {num[j] = newnum;}}break;}}if (flag) *p = newnum;printf("插入后的数组:");for (int i = 0; i < 11; i++) printf("%d ", num[i]);return 0;}实验结果:①插入最左边②插入最右边:③插入中间:④插入相同的数:实验分析:结果和预期一致。
实验报告_实验1 复习、 指针(1)(学号_姓名)
![实验报告_实验1 复习、 指针(1)(学号_姓名)](https://img.taocdn.com/s3/m/d14cd2ff19e8b8f67c1cb9da.png)
实验报告_实验1 复习、指针(1)(学号_姓名)一、实验目的:1、复习C语言的基本概念和基础知识;2、通过查看变量地址,了解不同类型数据在内存存储情况;理解用指针获取内存数据的两个关键点:首地址、数据类型(决定占用的存储单元的个数、数据存储方式);3、掌握指针变量的定义方法、=(赋值)、&(取地址)、*(取内容,间接访问);4、能够用指针变量作函数参数,实现通过函数调用得到n个要改变的值;5、注意避免使用悬空指针及swap函数的不正确写法。
二、实验内容1、(基础题)程序代码:# include <stdio.h># include <string.h>int main(void){char str[50];int k;int a,e,i,o,u;a=e=i=o=u=0;printf("请输入一个长度不超过50的字符串\n");gets(str);for(k=0;str[k];k++){if(str[k] == 'A' || str[k] == 'a')a++;if(str[k] == 'E' || str[k] == 'e')e++;if(str[k] == 'I' || str[k] == 'i')i++;if(str[k] == 'O' || str[k] == 'o')o++;if(str[k] == 'U' || str[k] == 'u')u++;}printf("\n");printf("该字符串中出现:\n");printf("A或a出现的次数:%d\n", a);printf("E或e出现的次数:%d\n", e);printf("I或i出现的次数:%d\n", i);printf("O或o出现的次数:%d\n", o);printf("U或u出现的次数:%d\n", u);return 0;}2、(基础题)#include<stdio.h>//定义结构体Student,学生姓名不超过10个字符//三门课程成绩均为百分制,只取整数struct Student{//代码段1char name[10];int chinese;int english;int math;int total;};int main(){//定义结构体数组stud[3]//对input()、sum()、print()三个函数进行声明//调用input()、sum()、print()三个函数//代码段2struct Student stud[3];void input(struct Student s[], int n);void print(struct Student s[], int n);void sum(struct Student s[], int n);input(stud, 3);sum(stud, 3);print(stud, 3);return 0;}//定义输入n名学生的姓名、三门课程成绩的函数。
C语言实验报告答案
![C语言实验报告答案](https://img.taocdn.com/s3/m/d73c4dc577eeaeaad1f34693daef5ef7ba0d1286.png)
C语⾔实验报告答案南京信息⼯程⼤学实验(实习)报告实验(实习)名称:指针及其应⽤⽇期:得分:指导⽼师:院系:应⽤⽓象学院专业:班次:姓名:学号:实验⽬的(1)掌握变量的指针及其基本⽤法。
(2)掌握⼀维数组的指针及其基本⽤法。
(3)掌握指针变量作为函数的参数时,参数的传递过程及其⽤法。
⼀.实验内容(1)运⾏以下程序,并从中了解变量的指针和指针变量的概念。
(2)运⾏以下程序,观察&a[0]、&a[i]和p的变化,然后回答以下问题:1.程序的功能是什么?2.在开始进⼊循环体之前,p指向谁?3.循环每增加⼀次,p的值(地址)增加多少?它指向谁?4.退出循环后,p指向谁?5.你是否初步掌握了通过指针变量引⽤数组元素的⽅法?(3)先分析以下程序的运⾏结果,然后上机验证,并通过此例掌握通过指针变量引⽤数组元素的各种⽅法。
(4)编写函数,将n个数按原来的顺序的逆序排列(要求⽤指针实现),然后编写主函数完成:①输⼊10个数;②调⽤此函数进⾏重排;③输出重排后的结果。
⼆.分析与讨论(1)指针的定义⽅法,指针和变量的关系。
定义⽅法:数据类型 *指针变量名;如定义⼀个指向int型变量的指针——int *p;则我们可以继续写如下代码——int a = 4;p = &aprintf("%d", *p);在这⾥,我们定义了⼀个变量a,我们把它理解为内存空间连续的4个字节(int型占⽤4字节),则这4个字节的空间保存着⼀个数4。
&是取地址符号,即把变量a的地址(即这4个字节的⾸地址)赋给指针p (记住指针p的类型和变量a的类型要保持⼀致,否则的话,要进⾏类型转换)。
这样⼦,指针p就保存着变量a的地址。
我们如果把指针p当做内存空间⾥⾯另外⼀个连续的4个字节,那么这4个字节保存的数就是变量a的地址。
printf("%d",*p)和printf("%d",a)的结果是⼀样的。
实验报告一
![实验报告一](https://img.taocdn.com/s3/m/b3b10514650e52ea551898f9.png)
实验报告一
一、实验目的
1.了解DSP结构;
2.熟悉CCS开发环境;
3.熟悉TDB-C54X plus DSP实验箱的硬件环境;
4.掌握C54X plus 汇编寻址方式;
二、实验内容
1.C54X plus 会变初始化程序;
2.C54X plus 各种汇编寻址方式的源程序;
三、实验结果
1.立即数寻址
执行前:
执行后:
0X2015:
2.累加器寻址
执行前:
执行后:
3.直接寻址(DP指针)执行前:
执行后:
4.直接寻址(SP指针)执行前:
执行后:
5.间接寻址执行前:
执行后:
6.绝对寻址执行前:
执行后:
四、实验总结
本次实验主要是了解和认识各种寻址方式,通过观察执行前后片内各数据地址的值,与实际期望,验证实验猜想。
这次是第一次接触dsp实验,在组装使用实验箱的时候遇到较大的问题,例如驱动问题,安装好后无法识别等问题。
最后在老师的耐心指导下都顺利解决!。
指南针实验报告单
![指南针实验报告单](https://img.taocdn.com/s3/m/a7333c612e60ddccda38376baf1ffc4ffe47e2f5.png)
指南针实验报告单指南针实验报告单实验目的:探究指南针在磁场中的行为,了解指南针的工作原理。
实验器材:指南针、磁铁、实验室桌面实验步骤:1. 将指南针平放在实验室桌面上,观察指南针的指针方向。
2. 将磁铁靠近指南针,观察指南针的指针方向是否发生变化。
3. 将磁铁移动到指南针的不同位置,观察指南针的指针方向是否随之变化。
4. 确定磁铁与指南针之间的相对位置对指南针的指针方向有何影响。
实验结果:通过实验观察,我们得出以下结论:1. 指南针的指针总是指向地球的北极方向,即指南针的指针指向地理北方。
2. 当磁铁靠近指南针时,指南针的指针会受到磁铁的吸引,指向磁铁的方向。
3. 当磁铁移动到指南针的不同位置时,指南针的指针方向也会随之变化。
4. 磁铁与指南针之间的相对位置对指南针的指针方向有明显的影响。
讨论与分析:指南针是一种利用地球磁场来确定方向的工具。
地球拥有一个巨大的磁场,其中心位于地球的地理南北极附近。
指南针内部有一个磁针,它可以在磁场的作用下自由旋转。
磁针的一端指向地球的磁南极,另一端指向地球的磁北极。
当磁铁靠近指南针时,磁铁的磁场会与指南针的磁场相互作用。
根据磁场的性质,磁铁的南极会吸引指南针的北极,使指南针的指针指向磁铁的方向。
当磁铁移动到指南针的不同位置时,磁场的作用也会随之改变,导致指南针的指针方向发生变化。
实验结果表明,磁铁与指南针之间的相对位置对指南针的指针方向有明显的影响。
当磁铁靠近指南针较近的位置时,指南针的指针受到较强的磁场作用,指向磁铁的方向。
而当磁铁远离指南针或位于指南针的侧面时,指南针的指针方向变得不稳定,甚至可能指向其他方向。
从实验结果可以看出,指南针的指针方向受到磁场的影响,而磁场的强弱与磁铁与指南针的相对位置有关。
这一实验结果也验证了指南针的工作原理,即利用地球磁场的作用来确定方向。
结论:通过本次实验,我们深入了解了指南针在磁场中的行为,并对指南针的工作原理有了更深刻的认识。
c语言实验报告怎么写
![c语言实验报告怎么写](https://img.taocdn.com/s3/m/0e0f5a493a3567ec102de2bd960590c69ec3d80a.png)
c语言实验报告怎么写【导语】实验报告是把实验的目的、方法、过程、结果等记录下来,经过整理,写成的书面汇报。
下面是智睿学习网小编为大家整理的c语言实验报告怎么写,欢迎大家阅读。
更多相关内容请关注智睿学习网实验报告栏目。
学号:__________ 姓名:__________ 班级:__________ 日期:__________ 指导教师:__________ 成绩:__________ 实验一上机操作初步和简单的C程序设计一、实验目的1、熟悉C语言运行环境T urbo C++3.02、会简单的程序调试3、熟悉C语言各种类型数据的输入输出函数的使用方法4、掌握顺序结构程序设计二、实验内容1、上机运行本章3个例题,熟悉所用系统的上机方法与步骤。
(习题1.7)2、编写一个C程序,输入a、b、c 3个值,输出其中最大者。
(习题1.6)3、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。
注意:在Trubo C++ 3.0中不能输入汉字,只能输入英文或拼音。
(习题4.8)4、运行如下程序,写出运行结果。
第一┆范文网整理该文章,版权归原作者、原出处所有...#includevoid main(){int a=1,b=2;a=a+b; b=a-b; a=a-b;printf(“%d,%d\n”,a,b);}三、实验步骤与过程四、程序调试记录C语言实验报告怎么写《函数》【导语】实验报告是把实验的目的、方法、过程、结果等记录下来,经过整理,写成的书面汇报。
接下来就跟随智睿一起,了解C语言实验报告怎么写《函数》的有关内容吧!学号:__________ 姓名:__________ 班级:__________ 日期:__________指导教师:__________ 成绩:__________实验四函数一、实验目的1、掌握函数定义、调用和声明的方法2、掌握实参和形参之间的传递方式3、函数的嵌套调用二、实验内容1、写一个函数,将两个字符串连接。
指针应用实验报告
![指针应用实验报告](https://img.taocdn.com/s3/m/f9d7b223a32d7375a517800e.png)
一、实验目的
1. 掌握指针概念、定义和引用方法。 2. 掌握函数的指针参数使用方法。 3. 掌握用指针方式表示数组(字符数组)元素的方法。 4. 掌握用指针形式参数在函数间传递数组实际参数的方法。
二、实验项目内容(实验题目)
程序填空 (1)下面程序的功能是:寻找一维数组 a 中的最大值和最小值,请填空完成程序。 #include <stdio.h> int main() { int a[]={6,23,4,56,78,14,77,80,23,55},*p=a; int max,min; max=min= ; for(;p<a+ /sizeof(int);p++) if(*p>max) max=*p; else if( ) min=*p; printf("max=%d,min=%d\n",max,min); return 0; } (2)下面程序的功能是:从字符串 str 中删除所有字符 ch,请填空完成程序。 #include <stdio.h> #include <string.h>
mv=*(v+i); else if(*mi>*(v+i)) *mi=*(v+i); return mi; //***** } (2) 下面程序的功能是: 调用函数 insertsubstr 将字符串 s2 插入到 c 在 s1 中第一 次出现的位置 0。程序代码中存在若干错误,请改正这些错误。 #include <stdio.h> int insertsubstr(char *mains,char *subs,char pos);//在 mains 的 pos 位置插入 subs int main() { char s1[200],s2[100],c; int flag; gets(s1); gets(s2); c=getchar(); flag=insertsubstr(s1,s2,c); if(flag=1) puts(s1); else printf("指定的子串插入位置不存在!\n"); return 0; } int insertsubstr(char *mains,char *subs,char pos) { char *i; i=strchr(mains,pos); if(i!=NULL); { strcat(subs,i); strcpy(i,subs); return 1; } return 0; } 3.程序设计 (1)函数原型为:void reverse(int *a, int n);,其功能是将长度为 n 的整型数 组 a 中所有元素颠倒位置存放。编制实现该功能的函数并用相应的主函数测试。 (2)函数的原型为:void intersection(char *s1,char *s2,char *s3);,其功能 是实现字符串 s1 和 s2 的元素交集, 即将 s1 和 s2 中都存在字符挑选出来构成字符串 s3。要求首先整理 s1 和 s2,使得串中字符保证惟一,可使用下面提供的函数 beonly 进行字符串的惟一性整理。请编制函数 intersection,并用相应主函数进行测试。 //整理字符串惟一性函数 beonly 代码 void beonly(char *s)
实验报告
![实验报告](https://img.taocdn.com/s3/m/d74dbb65783e0912a2162a60.png)
实验课程:c++程序设计教程 _____ 专业:信息与计算科学______ 班级:09070242 ____________ 学号:03 __________________ 姓名:王丽梅______________中北大学理学院实验一指针,引用和动态内存分配╳╳╳╳(黑体三号)【实验目的】一.正确使用指针寻找数组中的最大元素二.编程实现加密和解密,构造以字符指针为参数,返回值为指针的函数。
三.理解堆内存分配,测试堆内存容量【实验内容】1.编程实现findmax()函数用该函数寻找数组中的最大元素,将该元素的下标通过参数返回,并返回其地址值2.编写程序,将输入的一行字加密和解密3. 编写程序,测试堆内存的容量【实验所使用的仪器设备与软件平台】【实验方法与步骤】(阐述实验的原理、方案、方法及完成实验的具体步骤等,对于必须编写计算机程序的实验,要附上学生自己编写的程序)习题8-1#include <iostream.h>int* findmax(int* array, int size, int* index);void main(){int a[10]={33,91,54,67,82,37,85,63,19,68};int* maxaddr;int idx;maxaddr=findmax(a, sizeof(a)/sizeof(*a), &idx);cout <<"the index of maximum element is " <<idx <<endl <<"the address of it is " <<maxaddr <<endl<<"the value of it is " <<a[idx] <<endl;}int* findmax(int* array, int size, int* index){*index=0;for(int i=0; i<size; i++)if(array[i]>array[*index])*index=i;return &array[*index];}习题8-4#include <iostream.h>#include <string.h>char* jiami(const char* str);char* jiemi(const char* str);const char key[]={4,9,6,2,8,7,3};const keylen=sizeof(key);void main(){char* s="the result of 3 and 2 is not 8";cout <<"\n原文为: \n" <<s <<endl;char* result1=jiami(s);cout <<"\n密文为: \n" <<result1 <<endl;char* result2=jiemi(result1);cout <<"\n解密之后为: \n" <<result2 <<endl;delete[] result1;delete[] result2;char* jiami(const char* str){int len=strlen(str);char* result = new char[len+1];for(int i=0,j=0; i<len; i++,j=(j+1)%keylen){ result[i] = str[i]+key[j];if(result[i]>122)result[i]-=90;}return result;}char* jiemi(const char* str){int len=strlen(str);char* result = new char[len+1];for(int i=0,j=0; i<len; i++,j=(j+1)%keylen){ result[i] = str[i]-key[j];if(result[i]<32)result[i]+=90;return result;}习题8-9【实验结果】【结果分析与讨论】注:此格式仅供参考,指导教师可以根据实验的具体情况对其中不适合的地方作相应的修改,学生不能随意增删项目。
东莞理工c语言实验七报告(指针)
![东莞理工c语言实验七报告(指针)](https://img.taocdn.com/s3/m/8cd6c9ee760bf78a6529647d27284b73f3423656.png)
实验七:指针专业:班级:学号:姓名:完成时间:成绩:一、实验目的二、实验内容第二题:1)题目要求程序功能:输入一个正整数n(1≤n≤10),然后输入n个整数存入数组a中,再输入一个整数x,查找并统计数组a中包含x的元素个数。
要求定义函数count(int *p,int n,int x),查找并统计指针p指向的数组中包含x的元素个数。
其中:n为指针p所指向数组的元素个数。
在main函数中调用count函数实现程序功能。
2)算法(流程图)3)源程序(截图)4)编译结果(截图东莞理工学院《程序设计基础》实验报告5)运行结果(截图))运行结果(截图)第三题:第三题:1)题目要求)题目要求 程序功能:输入一个整数n (1≤n≤10),然后输入n 个整数存入数组a 中,要求定义一个函数void sort (int *p ,int n ),用选择法对指针p 所指向的数组进行升序排列,所指向的数组进行升序排列,其中:其中:n 为p 所指向数组的元素个数。
所指向数组的元素个数。
在在main 函数中调用sort 函数实现排序,最后输出排序后的结果。
函数实现排序,最后输出排序后的结果。
2)算法(流程图))算法(流程图) 3)源程序(截图))源程序(截图)4)编译结果(截图))编译结果(截图))运行结果(截图)5)运行结果(截图)第六题:第六题:)题目要求 程序功能:连续输入5个以空格分隔的字符串(字符串的长度1)题目要求,不超过80),输出其中最大的字符串。
例如:输入:li wang zhang jin xiao输出:zhang。
2)算法(流程图))算法(流程图))源程序(截图)3)源程序(截图))编译结果(截图)4)编译结果(截图))运行结果(截图)5)运行结果(截图)第八题:第八题:)题目要求 程序功能:编写一个函数delchar(s,c),该函数将字符串s中出现1)题目要求的所有c字符删除。
在主函数中输入一个字符c和一个字符串s,调用delchar(s,c)函数删除字符串s中所有c字符,然后输出删除后的字符串。
C语言程序设计 指针
![C语言程序设计 指针](https://img.taocdn.com/s3/m/6b66e44f83d049649a665844.png)
实验6 指针学号:姓名:实验日期:一、实验目的和要求(1)掌握指针的概念、指针变量定义和引用。
(2)掌握指针的运用方法。
(3)掌握数组的指针和指向数组的指针变量。
(4)掌握指针与函数的关系。
(5)能正确使用字符串的指针和指向字符串的指针变量。
(6)了解指向函数的指针。
(7)了解指向指针变量的指针的概念及其使用方法。
二、实验内容(注意:由于本实验报告模板中已经有题目内容,故源代码中无需再附上教材上的题目编号信息,只需有你的学号和姓名信息即可。
以下所有题目都要求代码与运行结果一起截图,只有在代码实在过多无法一起截图情况下,才能分开截图)1、【编写程序】请用指针编程实现:从键盘输入10个数,求出其中的最小值。
提示:定义函数lookup(int *str,int *a,int n)查找数组str中的最小值,将数组中的每一个数跟第一个数进行比较,最后得到最小的数。
2、【编写程序】请用指针编程实现:编写函数change(char *s,int *p),将字符串s 中的数字字符转换成数字存储到整型数组p中,函数返回转换后的数字的个数。
提示:先检测字符是否为数字,数字的ASCII码值为30H~39H,逐个判断s中的字符,如果是数字字符,则将其转换成数字存储到整型数组中。
3、【编写程序】请用指针编程实现:先读入10个整数,然后把它们按从大到小的次序排列起来,最后再读入一个整数k,并将k插入到该整数数列中,插入后的数列仍然按从大到小的顺序排列。
要求:编写一个函数实现排序功能。
4、【编写程序】请用指针编程实现:从键盘输入一个字符串,判断输入的字符串是否为回文。
(回文是指正序和反序字符排例方式相同的字符串,如abcdcba是回文)。
5、【编写程序】请用指针编程实现:写一个函数,实现两个字符串的比较。
即自己写一个strcmpa函数,函数原型为:int strcmpa(char *p1,char *p2),若两个字符串相等则返回0,否则返回这两个字符串第一个不同字符的ASCII码差值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告一(指针)
指针实验一
指向变量得指针变量编程一.实验目得与要求 1、理解指针得概念。
2、掌握指针变量得定义与使用。
3、掌握指针变量作为函数参数得使用方法。
二二. 实验题目1、用指针变量编程,求数组中得最大元素与最小元素. #include "stdio、h”#define N 10 void
main() {
;)n tni,2tp* tni,1tp* tni,][rra tni(nimxamdiovﻩint array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;
;b&=2p ;a&=1pﻩ
;)N,2p,1p,yarra(nimxamﻩ printf("max=%d,min=%d\n",a,b); }
void maxmin(int arr[],int *pt1,int *pt2,int n)
{
int i; *
;]0[rra=2tp*=1tpﻩ for(i=1;i<N;i++)
{
;]i[rra=1tp* )1tp*>]i[rra(fiﻩ
if(arr[i]〈*pt2) *pt2=arr[i];
}ﻩ}实验二
字符指针编程一一. 实验目得与要求 1、理解字符指针得概念。
2、掌握字符指针得定义与使用。
二二. 实验题目2、用字符指针编程求出字符串中指定字符得个数。
例如:假设字符串为:“abcdaghckpamn”,指定字符为…a‟,则结果为 3. 要求:从 main 函数输入字符串与指定字符,输出结果。
#include <stdio、h> #define MAXLEN 20 int CountLetter(char *str, char ch)
{
;0 = emit tniﻩ while(*str)
)hc == ++rts*(fiﻩ
ﻩ time ++ ;
return time;} int main() {
; ]NELXAM[rts rahcﻩchar ch;
; )"n\:gnirts a tupni esaelP"(ftnirpﻩ scanf
(”%s”,str)
;
getchar()
; //get enter
printf("Input the a letter to count:")
;
scanf("%c", &ch)
;
; ))hc ,rts(retteLtnuoC ,"n\d%"(ftnirpﻩ} 实验三
指向一维数组得指针变量编程一.实验目得与要求1、理解指针与数组之间得关系。
2、掌握用指针变量引用数组元素得方法。
3、掌握用指向一维数组得指针变量编程。
二二. 实验题目 3、已知一个整型数组,编程将其数组元素得值改为当前元素与相邻得下一个元素得乘积,数组得最后一个元素改为它与第 0 个元素得乘积,要求用指针变量实现。
例如:已知a[5]={1, 2, 3, 4, 5};
计算后 a[5]={2, 6, 12, 20, 10}。
#define N
5
#include”stdio、h”
void f(int *p,int n)
{
int i;
)++i;n〈i;0=i(rofﻩ
*(p+i)=(*(p+i))*(*(p+(i+1)%n)); } int ma
in()
{
;i,]N[a tniﻩ)++i;N〈i;0=i( rofﻩ
;)]i[a&,”d%"(fnacsﻩ
;)N,a(fﻩ for (int j=0;j<N;j++)
;)]j[a,"
d%"(ftnirpﻩﻩ;1 nruterﻩ} 实验四
指向二维数组得指针变量编程一一. 实验目得与要求 1、理解二维数组得地址表示方法。
2、掌握用指针变量表示二维数组得元素与元素得地址。
3、掌握用指向二维数组得指针变量得使用。
二。
实验题目 4、用一个二维数组 score[4][3]来存放 4 个学生 3 门课得成绩,编程实现:
(1) 输入学生成绩;
(2)
求出每个学生得平均分,将其保存在数组 a[4]中;
(3) 求出每门课程得平均成绩,将其保存在数组 b[3]中; (4)输出数组 a、b 中成绩。
要求:用指向二维数组元素得指针变量实现。
#include "stdio、h" void
inputScore(float (*p)[3])//输入学生成绩{
int i,j;
;)"n\生学名4共,绩成程课门 3 生学个每,绩成生学入输请"(f tnirpﻩ
for (i = 0;i<4; i++)
{
printf(”请输入学生%d 得3门课得成绩\n”,i+1);
)++j;3<j;0 = j(rofﻩﻩ
ﻩ scanf(”%f”,p[i]+j);
} } voidavstu(float *psco,float *pa)//求每个学生得平均成绩{
;j,i tniﻩ;eva taolfﻩ
for (i=0; i〈4;i++)
{
ﻩ ave=0;
for(j= 0;j〈3; j++)
{
ave+=(*(psco+3*i+j));//累计每门课得成绩(*
ﻩ;3/eva=)i+apﻩ
}
}ﻩ} voidavsco(float(*psco)[3],float *pb)//求每门课得平均成绩 {
;j,i tniﻩ ;eva taolfﻩ
for (j= 0; j<3;j++)
// j 表示列
{
ave=0;
for(i= 0;i<4;i++)
// i 表示行
{
ave+=(*(*(psco+i)+j));//累计每个学生得各科成绩
ﻩ(*
;4/eva=)i+bpﻩ
}
} } void
outputScore(float *pa,float *pb)//输出a,b 中成绩{int i;
;)”n\:为绩成均平得生学个每”(ftnirpﻩ
for (i = 0;i<4; i++,pa++)
;)ap*,"f2、6%"(ftnirpﻩﻩ
printf(”\n");
printf("每门课得平均成绩为:\n");
)++bp,++i ;3<i;0 = i( rofﻩ
ﻩ printf("%6、2f",*pb);
printf("\n”); } void main()
{
float score[4][3],a[4],b[3];
;)erocs(erocStupniﻩavstu(*score,a);//或avstu(&score[0][0],a);或;avstu(score[0],a);
avsco(score,b);//行指针
;)b,a(erocStuptuoﻩ}。