实验 指针应用
c语言第二次实验报告

c语言第二次实验报告摘要:本次实验主要是关于C语言的指针和数组的实验。
通过这次实验,我对C语言的指针和数组有了更深入的理解和应用能力。
一、实验要求:1.编写一个程序,实现对10个整数的输入、输出、求和、求平均数等操作。
2.编写一个程序,实现对10个学生的成绩进行排序并输出。
二、实验过程及结果:1.程序一:对10个整数进行输入、输出、求和、求平均数等操作。
步骤:(1)定义整型数组a[10],用for循环对其进行输入。
(2)定义sum变量并用for循环对数组元素进行求和运算。
(3)定义double类型的avg变量,计算数组元素的平均数。
(4)输出数组元素和平均数。
结果:输入10个整数:1 2 3 4 5 6 7 8 9 1010个数字的和为:5510个数字的平均数为:5.502.程序二:对10名学生的成绩进行排序并输出。
步骤:(1)定义数组grade[10],用for循环进行输入。
(2)用冒泡排序法进行排序。
(3)用for循环进行打印输出操作。
结果:输入10名学生的成绩:99 60 88 72 65 92 78 84 70 95排序后的成绩为:60 65 70 72 78 84 88 92 95 99三、实验总结:通过本次实验,我深刻认识到指针和数组对于C语言程序设计的重要性。
指针和数组是C语言中非常重要的概念,其掌握程度直接影响着程序的设计和效率。
在实验过程中,我充分体会到了C语言指针和数组的使用方法,并加深了其中的应用技巧。
在以后的编程过程中,我会更加熟练的使用指针和数组,努力提高自己的编程能力,为今后的学习和工作打下坚实的基础。
C语言实验-第七章-第九章2

实验七:指针的应用【实验目的】1.掌握指针和指针变量,内存单元和地址、变量与地址、数组与地址的关系;2.掌握指针变量的定义和初始化,指针变量的引用方式;3.能正确使用数组的指针和指向数组的指针变量;【实验内容】1.填空题输入一个字符串,将其中的大写字母转换成小写字母,然后输出本程序主要是比较scanf()输入和gets()输入的区别#include <stdio.h>void main(){ char s[20];char *p=s;scanf(“%s”,p); /*注意用scanf()输入和gets()输入的区别*/while( 1 ){if( 2 ) *p=*p+ (‘a’-‘A’);p++ ;}puts ( 3 );}答案:1、*p!=’\0’2、(*p>='A')&&(*p<='Z')3、s运行结果:输入:Program输出:program输入:This is Program输出:this提示:scanf ()输入时遇到空格认为字符串结束,用gets()输入时只有遇到回车才认为字符串结束。
如键入any boy并回车,则2。
补充程序题输入15个整数存入一维数组,再按逆序重新调整该数组中元素的顺序然后再输出。
下面给出部分程序的内容,请将程序补充完整,然后上机调试。
部分程序清单如下:#include <stdio.h>void main(){ int a[15],*p1,*p2,x;for(p1=a;p1<a+15;p1++)scanf("%d",p1);for(p1=a,p2=a+14;p1<a+7;p1++,p2--){ x=*p1;*p1=*p2;*p2=x;}……}答案:for(p1=a;p1!=a+15;p1++)printf("%d ",*p1); // %d后面有一个空格运行结果:输入:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15输出:15 14 13 12 11 10 9 8 7 6 5 4 3 2 1提示:(1)在整型数组中,没有结束标志,必须依靠数组中数据元素的个数控制循环次数。
利用指针排序实验报告(3篇)

第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语言程序设计电子科技大学教务处制表电子科技大学实验报告四学生姓名:学号:指导教师:王瑞锦实验地点:实验日期:年月日一、实验室名称:软件实验室二、实验项目名称:函数的应用及预处理三、实验学时:2四、实验原理:使用Turbo C软件(简称TC),在微型计算机上,对其程序进行编辑、编译、连接与运行。
Turbo C是一个集成环境,它具有方便、直观、易用的界面和丰富的库函数。
通过上机练习掌握在TC环境下编辑、编译、连接、和运行C程序的方法和过程。
五、实验目的1.掌握C语言中定义函数的方法;2.掌握函数传值调用的方法;3.掌握函数传址调用的方法;4.掌握递归函数的设计方法;5.掌握命令行参数的使用方法;6.掌握函数在不同文件中的编译、链接方法。
六、实验内容编程实验,完成以下上机内容,调试运行程序并完成报告1)、教材第七章习题7.4;2)、编写一个实现冒泡法排序的函数,并在主函数中从键盘上输入6个数后进行排序输出;3)、教材第七章习题7.11;4)、教材第七章习题7.15;5)、教材第七章习题7.24;6)、求解汉渃塔(tower of Hanoi)问题。
在一块平板上立有3根立柱,从左到右分别标记为A,B,C。
最初在A柱上放有6个大小不等的圆盘,并且大盘在下面,小盘在上面。
要求将这些盘从A移到C(可以借助B柱)。
条件是:每次只能移动一个盘,并且不允许把大盘放在小盘的上面。
(提示:利用函数的递归调用);七、实验器材(设备、元器件):pc硬件要求:CPU PII 以上,64M 内存,1OOM 硬盘空间即可。
软件要求:DOS3.0以上/Windows98/Me/XP/NT/2000。
八、实验步骤:实验编程与运行结果⑴编写一个求两个整数的最小公倍数的函数,两个整数由键盘输入,用主函数调用这个函数,并输出结果。
程序文件名为7_4.c,源程序清单如下:#include<stdio.h>lcd(int a,int b){int temp,num1,num2;num1=a;num2=b;while(num2!=0){temp=num1%num2;num1=num2;num2=temp;}return(a*b/num1);}main(){int t,x,y;printf("Please input two integers:");scanf("%d,%d",&x,&y);if(x>y){t=x;x=y;y=t;}printf("lcd(%d,%d)=%d\n",x,y,lcd(x,y));}运行结果:⑵编写一个实现冒泡法排序的函数,并在主函数中从键盘上输入6个数后进行排序输出。
c语言实验报告实验

c语言实验报告实验C 语言实验报告实验一、实验目的本次 C 语言实验的主要目的是通过实际操作和编程实践,加深对 C 语言基本语法、数据类型、控制结构、数组、指针等重要概念的理解和掌握,提高编程能力和解决实际问题的能力。
二、实验环境本次实验使用的编程环境为 Visual Studio 2019,操作系统为Windows 10。
三、实验内容1、基本数据类型和运算符的使用定义不同类型的变量,如整数型(int)、浮点型(float、double)、字符型(char)等,并进行赋值和运算操作。
熟悉各种运算符的优先级和结合性,包括算术运算符(+、、、/、%)、关系运算符(>、<、>=、<=、==、!=)、逻辑运算符(&&、||、!)、位运算符(&、|、^、~、<<、>>)等。
2、控制结构的应用使用ifelse 语句实现条件判断,根据不同的条件执行相应的代码块。
运用 switch 语句进行多分支选择,处理不同的情况。
利用 for 循环、while 循环和 dowhile 循环实现重复执行的操作,例如计算数列的和、打印特定的图案等。
3、数组和字符串的操作定义和使用一维数组、二维数组,进行数组元素的访问、赋值和遍历。
掌握字符串的存储和处理方式,使用字符数组和字符串函数(如strlen、strcpy、strcmp 等)进行字符串的操作。
4、指针的应用理解指针的概念和指针变量的定义,通过指针访问变量和数组元素。
实现指针与数组、指针与函数的结合使用,体会指针在程序中的灵活运用。
5、函数的定义和调用编写自定义函数,实现特定的功能,如计算阶乘、判断素数等。
掌握函数的参数传递方式(值传递和地址传递),理解函数的返回值。
6、结构体和共用体的使用定义结构体类型,创建结构体变量,访问结构体成员。
了解共用体的概念和使用场景,比较结构体和共用体的区别。
四、实验步骤1、实验准备打开 Visual Studio 2019 开发环境,创建一个新的 C 语言项目。
罗盘仪实验报告

罗盘仪实验报告罗盘仪实验报告一、引言罗盘仪是一种测量地磁场方向的仪器,它通过感应磁场的指针来指示地磁场的方向。
本次实验旨在通过使用罗盘仪来测量地磁场的方向,并探究其在不同位置和环境下的变化。
二、实验材料与方法1. 实验材料:罗盘仪、磁铁、尺子、纸张、铁器件等。
2. 实验方法:a. 在平坦的桌面上放置罗盘仪,并保持水平。
b. 将磁铁靠近罗盘仪,观察指针的偏转情况。
c. 移动磁铁的位置,观察指针的变化。
d. 将罗盘仪放置在不同位置,记录指针的方向。
e. 在不同环境下进行实验,如近电源、铁器附近等。
三、实验结果1. 磁铁靠近罗盘仪时,指针会偏转,指示出磁场的方向。
2. 移动磁铁的位置,指针的偏转角度会发生变化,但仍然指向磁场方向。
3. 罗盘仪放置在不同位置时,指针的方向也会有所变化,但仍然指向地磁场的方向。
4. 在近电源和铁器附近放置罗盘仪时,指针的方向可能会受到外部磁场的干扰,导致指示不准确。
四、实验讨论1. 罗盘仪的指针指向地磁场的方向,这是因为地球本身就是一个巨大的磁体,产生了地磁场。
2. 磁铁靠近罗盘仪时,由于磁场的作用,罗盘仪的指针会偏转,指向磁铁的方向。
3. 移动磁铁的位置,指针的偏转角度会发生变化,这是因为磁场的强度随着距离的增加而减弱。
4. 罗盘仪放置在不同位置时,指针的方向会有所变化。
这可能是因为地磁场在不同地点的方向有微小的差异。
5. 在近电源和铁器附近放置罗盘仪时,外部磁场会干扰罗盘仪的指示,导致指针不准确。
因此,在实际使用罗盘仪时,应尽量避免这些干扰源。
五、实验结论通过本次实验,我们得出以下结论:1. 罗盘仪可以准确地指示地磁场的方向。
2. 磁铁的位置和磁场的强度会影响罗盘仪的指示结果。
3. 罗盘仪放置的位置和周围环境也会对指示结果产生影响。
4. 外部磁场的干扰会使罗盘仪的指示不准确。
六、实验应用罗盘仪在实际生活中有着广泛的应用。
例如,航海中的导航、地理勘测中的定位、地震观测中的测量等都需要使用罗盘仪来确定方向。
指针的应用实验报告实验总结

指针的应用实验报告实验总结
在指针的应用实验中,我学习了指针的概念、指针变量的定义和使用方法,以及指针在函数参数传递中的应用等。
通过本次实验,我深刻认识到指针在C语言程序设计中的重要性和广泛应用。
指针可以提高程序的效率,减少对内存的浪费。
同时,指针作为一种高级数据类型,也可以实现动态内存分配,有效地解决一些程序设计难题。
在实验过程中,我还学习了如何使用指针来访问数组元素,以及如何在函数中使用指针来修改实参的值。
这些知识对于进一步提高我的C语言编程能力具有重要的意义。
总之,在本次指针的应用实验中,我不仅掌握了指针的基本概念和使用方法,也增强了自己的编程思维和实践能力。
我相信这些知识和技能对我今后的编程学习和工作都将大有裨益。
2010级用高级语言程序设计实验报告quan

2010级用高级语言程序设计实验报告quan《高级语言程序设计》实验报告实验室名称:班级:学生姓名:学号:指导教师:学期:2009-2010学年上学期实验1 C 程序设计入门一、实验目的1、熟悉C 编程环境2、掌握简单C 程序的编辑、编译和运行方法二、知识要点1、用printf 函数输出指定字符串(转义字符的使用)2、计算并输出表达式的值3、程序书写风格三、实验预习(要求做实验前完成)1、若要在屏幕输出信息,需要用到库函数:2、输出的信息若需换行,需要用到换行符:3、按C 语言语法规则写出下列算法的表达式(1)26乘以49,再除以17:(2)求29除以6的余数:四、实验内容 (要求提供:① 算法描述或流程图② 源程序 )1、编程输出“我的信息”,包括姓名、性别、专业名称和课程名称,格式为:姓名:性别:专业名称:课程名称:2、编程求以下表达式的值:1491516232+-+ 3、编程计算并输出16.8与27.5两个数的和、差、积、商,要求输出界面为:和是:差是:积是:商是:五、实验结果要求写出运行界面并输出运行结果实验2─3 数据类型、常量变量及顺序结构程序设计一、实验目的1、掌握常量和变量的概念以及使用1、掌握变量的定义、赋值与引用2、掌握顺序结构相关语句的使用3、掌握scanf和printf输入、输出数据的方法二、知识要点1、变量与常量概念2、数据输入、输出的格式控制3、标准库函数与头文件的使用4、算术运算与赋值运算5、数据类型转换三、实验预习(要求做实验前完成)1、假如要定义两个整型变量x和y,语句int x y;错在哪里?2、把a的值赋给b,其语句是:3、如果使用语句scanf(“%d%d”,&x,&y);输入8和9两个整数,其输入格式应该是:4、如果使用语句scanf(“%d,%d”,&x,&y);输入8和9两个整数,其输入格式应该是:5、程序中如果要用到库函数sin,则应包含头文件:6、假设x是一个实型变量,语句printf(“%d”,x);错在哪里?7、语句x=10; y=20; printf(“y=%d, x= %d”,x,y); 能否交换x和y的值?四、实验内容(要求提供:①算法描述或流程图②源程序)1、输入两个人的身高,计算并输出他们的平均身高。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验7 指针应用
一、目的
1、理解和掌握指针及指针变量的基本概念和定义。
2、熟练掌握指针的运算、算术运算、关系运算和赋值运算。
3、熟练掌握几种不同类型的指针、指向变量的指针、指向数组的指针、指向字符串的指针、指向函数的指针、指向指针的指针。
二、要求
完成规定的内容,编写出符合题目要求的程序,当堂检查完成情况。
尤其需要注意的是问题中输入输出的描述。
同时,注意程序中需要处理的数据特点。
三、示例程序
701 求平均成绩
Description
某班期末考试后要统计本班某门课程的平均成绩、最高成绩和最低成绩,你的任务是编程序实现这一功能。
一个班的人数不超过30人,要求实现求最高成绩,最低成绩和平均成绩的功能用一个函数完成,并用参数返回最高成绩、最低成绩和平均成绩。
Input
一组测试数据,第一行为一个整数N,表示本班有N个人,N<=30,接下来的N行中每行一个整数表示一个人的成绩。
Output
输出一行。
该行包含三个数,分别是最高成绩、最低成绩和平均成绩。
成绩之间由空格分隔,其中平均成绩为实数,并精确到小数点后两位。
Sample Input
5
90
83
76
85
62
Sample Output
90 62 79.20
参考代码:
#include <stdio.h>
int main()
{
void search(float score[100],int n,float *p1,float *p2,float *p3); float s[100];
int n,i;
float max,min,avg;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%f",&s[i]);
search(s,n,&max,&min,&avg);
printf("%.0f %.0f %.2f\n",max,min,avg);
return 0;
}
void search(float score[100],int n,float *p1,float *p2,float *p3) {
int i;float sum=0;
*p1=score[0];
for(i=1;i<n;i++)
{
if(score[i]>*p1)
*p1=score[i];
}
*p2=score[0];
for(i=1;i<n;i++)
{
if(score[i]<*p2)
*p2=score[i];
}
*p3=score[0];
for(i=0;i<n;i++)
{
sum+=score[i];
}
*p3=sum/n;
}
702 字符串排序
Description
按字典顺序输出某班所有人的名单。
Input
一组测试数据,第一行为一个整数N,表示本班有N个人(N<=30),接下来的N行中每行一个人名(人名均由小写字母组成,并且名字长度小于20)。
Output
按字典顺序排列的人员名单。
每个人名占一行。
Sample Input
5
zhangsan
liyang
wangxiao
liqing
wuhui
Sample Output
liqing
liyang
wangxiao
wuhui
zhangsan
703 字符串比较
Description
按字符串比较过程对给定的两个字符串进行比较,若相等则结果为0,若不等则结果为对应不等字符的差。
按要求实现对给定字符串的比较。
要求程序中用函数实现两个字符串的比较。
int stringcmp(char *str1 , char *str2 )
Input
第一行为一个整数N,表示测试数据的组数,接下来的N行中每行包含两个字符串,字符串之间由空格分隔。
Output
输出共N行,每行为对应输入一行的两个字符串的比较结果。
Sample Input
3
Happy Help
Help Help
Help Happy
Sample Output
-4
4
704 学生成绩统计
Description
某班有N(N<=30)个学生,共开设5门课程,分别用三个函数实现如下功能:
⑴求第一门课程的平均分;
⑵找出有2门及2门以上不及格的学生,并输出其学号;
⑶找出平均成绩在90分以上的学生,输出他们的学号。
Input
有多组测试数据,每组测试数据的第一行为一个整数N,表示本班共N个人(当N为0时结束输入),接下来的N行中每行包含一个学生的信息,包括学号、长度小于10的字符串、课程1成绩、课程2成绩、课程3成绩、课程4成绩、课程5成绩。
成绩均为整数。
Output
每组测试数据输出共四行,第二行为固定格式,参照样例输出,第二行为本班第一门课程的平均成绩。
(保留小数点后两位),第三行为有2门及2门以上不及格的学生的学号,各学号之间用一个空格分隔。
若不存在,则打印“no”。
第四行为平均成绩在90分以上的学生的学号, 各学号之间用一个空格分隔。
若不存在,则打印“no”。
Sample Input
3
070001 90 80 85 50 42
070002 93 95 90 88 92
070003 98 92 84 90 91
2
080001 85 81 75 69 61
080002 89 91 62 75 77
Sample Output
Test 1#:
93.67
070001
070002 070003
Test 2#:
87.00
no
no
出师表
两汉:诸葛亮
先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。
然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。
诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。
宫中府中,俱为一体;陟罚臧否,不宜异同。
若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理;不宜偏私,使内外异法也。
侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下:愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。
将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰“能”,是以众议举宠为督:愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。
亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。
先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。
侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之、信之,则汉室之隆,可计日而待也。
臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。
先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。
后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。
先帝知臣谨慎,故临崩寄臣以大事也。
受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。
今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,
攘除奸凶,兴复汉室,还于旧都。
此臣所以报先帝而忠陛下之职分也。
至于斟酌损益,进尽忠言,则攸之、祎、允之任也。
愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。
若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。
臣不胜受恩感激。
今当远离,临表涕零,不知所言。