答案 实验报告_实验7_数组(学号_姓名)
实验总结报告-串和数组
实验总结报告—栈和队列学号:姓名:时间:一、目的1.做实验的目的2.2.撰写实验报告的目的二、内容1.说明实验次数及实验内容本次实验用一个实验课时完成。
实验内容:1. 编写函数StrAssign(), StrCopy() , StrLenth() , StrCompare() , StrConcat() ,Substring(), Replace(),完成串赋值,串复制,求串长度,串比较,串连接,求字串,子串替代等相应功能。
注:Replace() 依赖Find_KMP()2. 使用KMP 算法,编写函数Find_KMP(char *S,char *P,int start)实现字符串匹配。
测试数据:2.1char S[] = “abcabcabcd”;char P[] = “abcabcd”;2.2char S[] = “abcdababcabcdabcabcabcd”;char P[] = “abcabcd”;2.3char S[] = “cocaocoaoc”;char P[] = “coaoc”;要求: 1.打印出模式串P 的next[]模式数组;2.完成Find_KMP()后在Repalce()中调用,将P 替换成“AAA”。
注意2.2 有2 个地方要替换。
3. 创建三元组实现以下稀疏矩阵的存储,并利用三元组实现稀疏矩阵的转置,比较“按需查找”方法与“按位就座”方法的区别。
0 12 9 0 0 0 00 0 0 0 0 0 03 0 0 0 0 14 00 0 24 0 0 0 00 18 0 0 0 0 015 0 0 7 0 0 0建议实现流程为1.矩阵2.三元组3.转置的三元组4.转置的矩阵,将3 或4打印出来。
2.做实验完成情况实验内容在实验课时时间内完成(提前编写了大概1/2部分的代码),选做内容也完成。
本次实验内容较多,为使代码看着简洁有条理,采用了建工程的方式。
串部分:自定义了头文件String.h:/*自定义头文件*/#include<stdio.h>#define MAX_LEN 255typedef unsigned char SString[MAX_LEN + 1];/*自定义函数*/void StrAssign(SString &T, char s[]);//将字符串常量s赋给Tvoid StrPrint(SString T);//打印串void StrCopy(SString &T, SString S);//串复制void test();//检验串操作int StrLength(SString T);//求串长int StrCompare(SString T, SString S);//比较串,T>S返回正值,T<S返回负值,相等返回0void StrConcat(SString &T, SString S1, SString S2);//用T返回SString 类型串S1、S2连接成的新串void SubString(SString &S, SString T, int pos, int len);//用S返回串T中起始位置为pos,长度为len的字串void Index(SString S, SString T, int pos[]);//若S串中存在不重叠的子串T,则用pos[]返回所有T串的起始位置void StrReplace(SString &S, SString T, SString V);//若串S中存在字串T,则用V替代所有不重叠的Tvoid StrInsert(SString &S, int pos, SString T);//在串S中pos位置插入子串Tvoid StrDelete(SString &S, int pos, int len);//在串S中pos位置删除长度为len的子串void GetNext(SString S, int next[]);//求模式串中的next函数修正值并写入数组next[]int FindKMP(SString S, SString T, int start);//在串S中从start位置开始,查找第一次出现模式T的位置返回,没找到返回-1void StrReplace2(SString &S, SString T, SString V);//若串S中存在字串T,则用V替代所有不重叠的Tvoid KMP();//KMP算法及其应用在头文件中对所有要用到的自定义函数进行了声明,各函数的功能可见代码注释部分。
c语言实验报告《数组》
c语言实验报告《数组》C语言实验报告:数组引言:C语言是一门广泛应用于计算机编程领域的高级编程语言,其强大的功能和灵活性使得它成为了许多程序员的首选。
在C语言中,数组是一种非常重要的数据结构,它能够存储多个相同类型的元素,并通过索引来访问和操作这些元素。
本篇实验报告将重点介绍C语言中的数组,并通过实例来展示其用法和特性。
一、数组的定义和声明在C语言中,数组的定义和声明非常简单。
我们可以通过以下方式来定义一个数组:```数据类型数组名[数组大小];```其中,数据类型表示数组中元素的类型,数组名是我们给数组起的名称,而数组大小则表示数组中元素的个数。
例如,我们可以定义一个包含5个整数的数组:```int numbers[5];```这样,我们就成功地声明了一个名为numbers的整数数组,它包含了5个元素。
二、数组的初始化在声明数组的同时,我们还可以为数组的元素赋初值。
这个过程称为数组的初始化。
C语言提供了多种初始化数组的方式,例如:```int numbers[5] = {1, 2, 3, 4, 5};```上述代码将数组numbers的前5个元素分别初始化为1、2、3、4和5。
我们也可以只给部分元素赋初值,未赋初值的元素将自动被初始化为0:```int numbers[5] = {1, 2, 3};```这样,数组numbers的前3个元素将分别被初始化为1、2和3,而后两个元素将被初始化为0。
三、数组的访问和操作数组的访问和操作是我们使用数组的重要环节。
在C语言中,我们可以通过索引来访问和操作数组中的元素。
数组的索引从0开始,即第一个元素的索引为0,第二个元素的索引为1,以此类推。
例如,我们可以通过以下方式来访问数组numbers的第一个元素:```int firstNumber = numbers[0];```上述代码将数组numbers的第一个元素赋值给变量firstNumber。
同样,我们也可以通过索引来修改数组中的元素:```numbers[0] = 10;```上述代码将数组numbers的第一个元素修改为10。
《C语言程序设计》实验报告数组
《C语言程序设计》课程实验报告≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡3.有一个已排序好的数组,要求输入一个数后,按原来排序规律插入到数组中。
编写以下程序:#include<stdio.h>main(){ int a[6] = {1,3,6,7,9};int i,j,x,t;printf("insert data:");scanf("%d",&x);for(i=0;i<5;i++)if(x<a[i])break;for(j=5;j>i;j--)a[j]=a[j-1];a[j]=x;printf("Now array a:\n");for(i=0;i<6;i++)printf("%4d",a[i]);printf("\n");}结果如下:4.有一篇文章,共有3行文字,要求分别统计出大写字母、小写字母、数字、空格以及其它字符的个数。
编写以下程序:#include <stdio.h>int main(){int i,j,upp,low,dig,spa,oth;char text[3][10];亲爱的朋友,上文已完,为感谢你的阅读,特加送另一篇范文,如果下文你不需要,可以下载后编辑删除,谢谢!道路施工方案1、工程概况2、编制说明及编制依据3、主要施工方法及技术措施3.1施工程序3.2施工准备3.3定位放线3. 4土方开挖3.5卵石路基施工3.6天然砾基层施工3. 7高强聚酯土工格楞3.8水泥稳定砂砾基层施工3.9路缘石施工3. 10玻璃纤维土工格栅施工3.11沥青面层施工3. 12降水施工4、质量控制措施5、雨季施工安排6、安全技术措施1.工程概况本项目建设的厂址位于新疆石河子市。
工程场地位于石河子高新技术开发区经七路西。
场地原为麦田,地势南高北低。
C语言实验报告数组
实验七数组1.实验目的(1)熟练掌握一维数组、二维数组的定义、初始化和输入/输出方法;(2)熟练掌握字符数组和字符串函数的使用;(3)掌握与数组有关的常用算法如查找、排序等..2.实验指导(1)对任意一个一维型数组;从中找出数组元素的最大值和最小值并输出..要求:①数组有十个元素;②使用scanf函数实现数组元素的输入前给出必要的提示;③输出时;首先输出数组的十个元素;然后输出其最大值和最小值..分析指导:①算法分析:首先定义一个数组;通过循环从键盘输入十个数组元素的值;再通过另一个循环判断数组元素的最大只和最小值;②根据分析情况编写程序:include<stdio.h>mainint a10;i;max;min;printf"please input ten integers:";fori=0;i<=9;i++{scanf"%d";&ai;}max=a0;min=a0;fori=1;i<=9;i++{ifai>maxmax=ai;ifai<minmin=ai;}fori=0;i<=9;i++{printf"a%d=%d\n";i;ai;}printf"The maximum value is %d;and the minimum value is %d\n";max;min;运行程序;输入十个整数;如:21 37 6 17 9 12 89 76 35 59运行结果如下:(2)编写函数cmpStrchar s1;char s2比较两个字符串s1和 s2的大小..如果s1>s2;返回一个正数;s1=s2;返回0;s1<s2;返回一个负数;在主函数中调用该函数完成字符串的比较操作;并输出返回的值..要求:①不允许使用strcmp函数;②用gets函数在主函数中输入两个字符串;③实现触摸屏受托人函数;返回的正数或负数的绝对值应该是进行比较的两个字符传中相应字符的ASCII码的差值..分析指导:①算法分析:两个字符串从第一个字符开始一一对应进行比较;直到不相等的那个字符;从而求得它们的ASCII码的差值..比如;‘A’与‘C’相比;由于‘A’<‘C’;应输出负数;由于‘A’与‘C’的ASCII码的差值为2;因此;应输出“-2”..同理;“And”和“Aid”比较;根据第二个字符比较结果;‘n’比‘I’大5;因此应输出‘5’;②根据分析情况编写程序:include<stdio.h>int cmpstrchar s1;char s2{int i;diff;i=0;whiles1i==s2i&&s1i='\0'i++;ifs1i=='\0'&&s2i=='\0'diff=0;elsediff=s1i-s2i;return diff;}void main{int z;char s1100;s2100;printf"input the first string:";//输入字符串1gets s1;printf"input the second string:";//输入字符串2getss2;z=cmpstrs1;s2;//输出比较结果printf"the difference between two strings is %d\n";z;}查看运行结果如下:重新输入两个字符串meet;mood运行结果如下:(3)再给定的字符串中查找指定的字符..要求:①字符串采用直接初始化的方式处理;②通过scanf函数读入一个任意字符;③在字符串中查找该字符;如果存在该字符;输出该字符在字符串中的一次出现的位置;如果再给定的字符串中不存在该字符;则给出相应的说明信息..include<stdio.h>void main{int i;char ch;char s=" program";printf" 输入一个英文字母: ";scanf"%c";&ch;for i=0;si='\0';i++{if si==chbreak;}if i<7printf"s%d=%c\n";i;ch;elseprintf"No founded\n";}输入一个英文字母O运行程序如下:再次输入一个英文字母w运行程序如下:(4)首先输入一个大于二且小于十的整数n;然后定义一个二维整型数组nn;初始化该数组;讲述组中最大元素所在的行和最小元素所在的行对调..要求:①nn数组元素的值由scanf函数从键盘输入假定最大值最小值不在同一行上;然后输出该数组;②查找最大值最小值所在的行;将数组中最大元素所在的行和最小元素所在的行对调;并输出对调后的数组;③为直观起见;数组按n行n列的方式输出;④修改程序;对最大值与最小值可能出现在一行种的情况进行处理.. include<stdio.h>main{long matrix99;min;max;temp;int i;j;n;nMax=0;nMin=0;printf"\nplease inpute n of matrix:\n";scanf"%d";&n;printf"\nplease inpute elements of matrix%d%d:\n";n;n; fori=0;i<n;i++forj=0;j<n;j++scanf"%ld";&matrixij;min=max=matrix00;fori=0;i<n;i++forj=0;j<n;j++{ifmatrixij>max{max=matrixij;nMax=i;}else ifmatrixij<min{min=matrixij;nMin=j;}}forj=0;j<n;j++{temp=matrixnMaxj;matrixnMaxj=matrixnMinj;matrixnMinj=temp;}printf"\nResult matrix:\n";fori=0;i<n;i++{forj=0;j<n;j++printf"%5ld";matrixij;printf"\n";}}输入一个数4;输入一个44的数组1 3 6 72 4 5 81 3 5 72 6 9 7运行程序如下:再次输入一个数字3;输入一个33的数组1 2 32 4 537 8运行程序如下:3 实验结论通过本次实验熟练的掌握一维数组、二维数组的定义、初始化和输入/输出方法以及字符数组和字符串函数的使用;还有就是掌握与数组有关的常用算法。
c语言实验7数组实验报告
实验报告课程名称程序设计实验项目名称数组班级与班级代码14级计算机科学与技术1班实验室名称(或课室) SS1-332专业计算机科学与技术任课教师学号:姓名:实验日期:2014年月日广东商学院教务处制一.实验目的1.熟练掌握一维数组、二维数组的定义、赋值、输入、输出方法。
2.熟练掌握字符数组和字符串函数的使用。
3.熟练掌握一位数组以及一位数组元素的存储关系。
4.熟练掌握一位数组和二维数组的使用以及在函数中的传递。
5.通过上机实践掌握与数组有关的算法。
二、实验内容上机题1输入并运行以下程序。
实验内容:用2个数组对第3个数组进行赋值#include<stdio.h>main(){int i,a[5],b[5],c[5];a[0]=2,a[1]=6,a[2]=4,a[3]=8,a[4]=9;b[0]=2,b[1]=7,b[2]=9,b[3]=5,b[4]=3;for(i=0;i<=4;i++){c[i]=a[i]*b[i];printf("c[%d]=%d\n",i,c[i]);}}实验步骤○1int a[5]:整型一维数组说明,a是数组名,也是数组的起始地址,该数组可以存储5个整数。
a[0]~a[4]也可以看成是变量标识字符,[]中的数值称为数组下标,下标从0开始。
○2数组赋值方法和一般变量一样。
例如,a[0]=2表示将2赋给a[0]。
运行结果上机题2 输入并运行以下程序。
实验内容:对不指明数组的数组进行赋值并用循环结构进行求和#include<stdio.h>main(){int sum,i;int a[]={5,8,4,6,4,3,8,2,4,5,6};sum=0;for(i=0;i<=10;i++)sum+=a[i];printf("sum=%d\n",sum);}实验结果实验小结○1对全部元素赋初值时,可以不指定数组长度,C编译系统自动根据初值个数来决定数组长度。
C语言实验报告《数组》
C语言实验报告《数组》《数组》实验报告实验目的:掌握C语言中数组的定义、初始化和使用方法,了解数组在程序中的作用和用途,熟悉数组的基本操作。
实验内容:1.数组的定义和初始化2.数组的基本操作-访问数组元素-修改数组元素-遍历数组-数组作为函数参数实验步骤:1.数组的定义和初始化定义一个整型数组,数组名为array,数组大小为10。
使用for循环将数组元素初始化为0。
2.数组的基本操作1) 访问数组元素:通过下标访问数组的元素,例如array[0]表示数组的第一个元素。
2)修改数组元素:通过下标将数组的元素修改为新的值。
3) 遍历数组:使用for循环遍历数组的每个元素,并输出其值。
4)数组作为函数参数:将数组作为函数的参数传递,并在函数内对数组进行操作。
实验结果:1.数组的定义和初始化:int array[10];for (int i = 0; i < 10; i++)array[i] = 0;}2.数组的基本操作:1)访问数组元素:int x = array[0]; // 访问第一个元素的值,即数组的第一个元素2)修改数组元素:array[0] = 1; // 将第一个元素的值修改为13)遍历数组:for (int i = 0; i < 10; i++)printf("%d ", array[i]); // 输出每个元素的值}4)数组作为函数参数:void printArray(int arr[], int len)for (int i = 0; i < len; i++)printf("%d ", arr[i]); // 输出数组的每个元素}}int maiint myArray[5] = {1, 2, 3, 4, 5};printArray(myArray, 5); // 将数组myArray作为参数传递给printArray函数return 0;}实验总结:通过本次实验,我们掌握了C语言中数组的定义和初始化方法,学会了访问数组元素、修改数组元素、遍历数组的操作,还了解了数组作为函数参数的使用。
C语言实验报告《数组》
C语言实验报告《数组》C语言实验报告《数组》篇一:《C语言程序设计》实验报告数组《C语言程序设计》课程实验报告≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡篇二:C语言实验报告本《C语言程序设计》实验报告 201X~201X 学年第二学期专业班级姓名学号任课教师计算机教学实验中心 201X年 5 月《C语言程序设计》实验报告( 1 )学号:姓名:班级:成绩:任课教师签名:《C语言程序设计》实验报告( 2 )学号:姓名:班级:成绩:任课教师签名:篇三:C语言实验报告数组实验报告实验课程名称高级C语言程序设计实验项目名称数组年级 09 级专业数学学生姓名李军学号 0907010170 理学院实验 201X 年 4 月 22 日学生实验室守则一、按教学安排准时到实验室上实验课,不得迟到、早退和旷课。
二、进入实验室必须遵守实验室的各项规章制度,保持室内安静、整洁,不准在室内打闹、喧哗、吸烟、吃食物、随地吐痰、乱扔杂物,不准做与实验内容无关的事,非实验用品一律不准带进实验室。
三、实验前必须做好预习(或按要求写好预习报告),未做预习者不准参加实验。
四、实验必须服从教师的安排和指导,认真按规程操作,未经教师允许不得擅自动用仪器设备,特别是与本实验无关的仪器设备和设施,如擅自动用或违反操作规程造成损坏,应按规定赔偿,严重者给予纪律处分。
五、实验中要节约水、电、气及其它消耗材料。
六、细心观察、如实记录实验现象和结果,不得抄袭或随意更改原始记录和数据,不得擅离操作岗位和干扰他人实验。
七、使用易燃、易爆、腐蚀性、有毒有害物品或接触带电设备进行实验,应特别注意规范操作,注意防护;若发生意外,要保持冷静,并及时向指导教师和管理人员报告,不得自行处理。
仪器设备发生故障和损坏,应立即停止实验,并主动向指导教师报告,不得自行拆卸查看和拼装。
八、实验完毕,应清理好实验仪器设备并放回原位,清扫好实验现场,经指导教师检查认可并将实验记录交指导教师检查签字后方可离去。
C语言:数组的应用实验报告
课程名称:结构化程序设计与C语言开课实验室:年月日一、实验目的用C语言编写和调试数组的程序,包括一维数组和二维数组。
从而对数组的程序设计有比较深入的了解。
二、内容及结果1、程序二选择排序法1)题目:用选择法对10个整数排序。
2)代码:#include<>int main(){int a[10];int i,j,t;printf("input 10 numbers:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");for(j=0;j<9;j++)for(i=0;i<9-j;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("the sorted numbers:\n");for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");return 0;}3)运行截图:2、程序二将一个数组中的值按逆序重新存放。
1)题目:将一个数组中的值按逆序重新存放。
2)代码:# include <>int main (){int a[5]={8,6,5,4,1};int i,t;for(i=0;i<=2;i++){t=a[i];a[i]=a[4-i];a[4-i]=t;}for(i=0;i<=4;i++)printf("%d ",a[i]);return 0;}3)运行截图:3、程序三输出杨辉三角形(10行)1)题目:输出杨辉三角形(10行)2)代码:#include<>int main(){int yh[10][10]={0};int i,j;for(i=0;i<10;i++)yh[i][0]=1;for(i=1;i<10;i++)for(j=1;j<10;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];for(i=0;i<10;i++){for(j=0;j<i+1;j++)printf("%5d",yh[i][j]);printf("\n");}}3)运行截图:4、程序四找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该行上最小。
数组实验报告
数组实验报告姓名:学号:班级:计科1501班任课教师:一、实验目的掌握数组的排序、复制等操作二、实验要求实现编程代码,得出最后实验效果图三、实验内容1.编程实现:从键盘接收人任意个整数,并将其存放在数组中,然后求出该数组中的最大值(考察知识点:数组的length属性,求最大值的方法:打擂台).实验效果图如下:2。
编程实现:有一整型数组a,其中数据为3、4、5、1、2、6,编程实现将数组a复制到数组b中(考察知识点:数组的复制)3.编程实现:有一字符串数组,其中的数据有”张三”,”李四",”王五”,”赵六” ,"田七”,"李八" 。
编程查找该数组中是否包含”麻子"。
(考察知识点:数组的查找)实验效果图如下:4。
编程实现:有一整型数组,其中的数据有1、22、33、44、55、66、77.现将34插入到该数组中,并不打乱原来的升序(考察知识点:数组的插入。
提示:先将34替换到77)实验效果图如下:5。
编程实现:有一整型数组,其中数据为34,23,12,56,77,89。
编程实现对数组元素进行升序排序,并输出排序后的结果。
(考察知识点:数组的定义、排序,请使用冒泡排序、选择排序、Array。
sort()三种方法进行排序)6。
编程实现:有一3行3列的2维数组,其中数据为1、2、3、4、5、6、7、8、9。
编程实现其数据的输出(考察知识点:二维数组的赋值、输出)7。
编程实现:综合实例:学生成绩管理系统。
实验效果图如下:四、实验代码(含注释)1、import java.util。
Scanner;public class L1 {public static void main(String[] args){Scanner in=new Scanner(System。
in);System.out.print(”请输出数组的长度:");int num=in。
数组及其应用实验报告
计算机与信息技术学院综合性、设计性实验报告一、实验目的:掌握一维、二维数组的定义及引用,字符数组的输入输出,字符串处理函数等。
本实验综合运用以前各章节所学知识,熟悉数组类型的应用场合以及数组的编程与使用方法,进一步熟悉和掌握数组及相关知识,使得以后在编程过程中更加得心应手。
二、实验仪器或设备:微型计算机。
三、总体设计(设计原理、设计方案及流程等)实验内容:学生成绩统计从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,分别实现下列功能:(1)统计不及格人数(2)统计成绩在全班平均分及平均分之上的学生人数(3)统计各分数段的学生人数及所占的百分比(60以下,60-69,70-79,80-89,90以上)#include<stdio.h>void main(){float p[5],ave,s=0;int i,n1=0,n2=0,n3=0,n4=0,n5=0,n6=0,n7=0,c;for(i=0;i<5;i++)scanf("%f",&p[i]);printf("\n");for(i=0;i<5;i++)if(p[i]<60) n1++;printf("不及格的人数是%d\n",n1);for(i=0;i<5;i++) s+=p[i];ave=s/5;printf("平均分是%f\n",ave);for(i=0;i<5;i++)if(p[i]>=ave) n2++;printf("平均分之上的学生人数是:%d\n",n2);for(i=0;i<5;i++){c=int(p[i]/10);switch (c){case 9:n3++;break;case 8:n4++;break;case 7:n5++;break;case 6:n6++;break;default:n7++;}}printf("90分以上的人数是%d,所占百分比是%f%%\n80~89的人数是%d,\所占百分比是%f%%\n70~79的人数:%d,所占百分比%f%%\n60~69的人数:%d,\ 所占百分比:%f%%\n60分以下的人数:%d,所占百分比:%f%%\n",n3,n3/5.0*100,n4,n4/5.0*100,n5,n5/5.0*100,n6,n6/5.0*100,n7,n7/5.0*100);}四、实验步骤:(包括主要步骤、代码分析等)实验分三个阶段完成:1. 分析设计阶段:找出实现方法,按照需求分析设计算法。
C语言实验报告《数组》_实验报告_
C语言实验报告《数组》学号:__________ 姓名:__________ 班级:__________ 日期:__________指导教师:__________ 成绩:__________实验三数组一、实验目的1、掌握一维和二维数组的定义、赋值和输入输出2、掌握字符数组和字符串数组的使用3、掌握与数组有关的排序算法二、实验内容1、已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。
(习题7.4)2、将一个数组中的值按逆序重新存放。
例如,原来顺序为8,6,5,4,1。
要求改为1,4,5,6,8。
(习题7.5)3、如下程序是按选择法对数组中的n个元素按从小到大的顺序排序,请对程序中的错误进行改正,使其正常运行。
#include#define N 20void main(){int a[N]={9,6,8,3,-1};int i,m;printf("before sort:");for(i=0;i<m;i++)< p="">printf("%d",a[i]);printf("\n");{ int i,j,t,p;for(j=0;j<m-1;j++)< p="">{ p=j;for(i=j;i<m;i++)< p="">if(a[i]<a[p]) after="" p="" sort:");<="">for(i=0;i<m;i++)< p="">printf("%d",a[i]);printf("\n");}三、实验步骤与过程第一┆范文网整理该文章,版权归原作者、原出处所有...四、程序调试记录</m;i++)<></a[p]) ></m;i++)<></m-1;j++)<></m;i++)<>。
实验07-1参考答案
实验七-1 数组程序设计班级:学号:姓名:评分:一.【实验目的】1、熟练掌握使用一维数组编程的方法。
2、熟练掌握排序算术。
3、熟练掌握使用二维数组编程的方法。
4、进一步掌握C程序的调试方法和技巧。
二.【实验内容和步骤】1、程序调试题A.目标:进一步学习掌握程序调试的方法和技巧。
B.内容:从键盘输入一个正整数n(0<n<9)和一组(n个)有序的整数,再输入一个整数x,把x插入到这组数组中,使该组数据仍然有序。
改正程序中的错误,使其实现程序的功能。
(注:程序文件保存在“调试示例”文件夹中,文件名为error07_1.cpp)①调试正确的源程序清单#include <stdio.h>int main( ){int i, j, n, x, a[10];printf("输入数据的个数n:");scanf("%d", &n);printf("输入%d个整数:", n);for(i = 0; i < n; i++)scanf("%d", &a[i]);printf("输入要插入的整数:");scanf("%d", &x);for(i = 0; i < n; i++){if(x > a[i]) continue;j = n - 1;while(j >= i){ /* 调试时设置断点 */a[j+1] = a[j];j--;} /* 调试时设置断点 */a[i] = x;break;}if(i == n) a[n]=x;for(i = 0; i < n + 1; i++)printf("%d ", a[i]);putchar('\n');return 0;}②运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。
C语言实验报告《数组》实验报告
C语言实验报告《数组》实验报告实验目的本次实验的主要目的是了解C语言中数组的概念、用法和操作,掌握如何定义和使用数组。
通过练习编写具有一定复杂度的数组相关程序,加深对C语言数组的理解和应用。
实验内容1. 数组的定义与初始化在C语言中,数组是一组具有相同类型的数据在内存中连续存储,通过数组下标访问每个元素。
数组的定义形式为:type name[size],其中type为数组元素的类型,name为数组名,size为数组大小(元素个数)。
数组的初始化可以在定义时或之后进行。
定义时,可以使用下标逐个指定每个元素的值,形如type name[size] = {val0, val1, ...};也可以只指定部分元素,剩余元素的值为默认值(0或NULL),形如type name[size] = {val0,val1, ...}。
之后初始化则可以使用数组下标逐个赋值,或使用循环语句给整个数组赋值。
例如,下面是一个整型数组的定义和初始化:int arr[5] = {1,2,3}; //arr[0] = 1, arr[1] = 2, arr[2] = 3, arr[3] = 0, arr[4] = 0;for(int i=0; i<5; i++){arr[i] = i; //arr[0] = 0, arr[1] = 1, arr[2] = 2, arr[3] = 3, arr[4] = 4;}2. 多维数组除了一维数组,C语言还支持多维数组。
多维数组是指一个数组中每个元素又是一个数组,形成了二维、三维甚至更高维度的数组。
多维数组的定义与一维数组类似,只是需要在type后面加上多个方括号,每个方括号内表示该维度的大小。
例如,定义一个二维数组:int matrix[2][3] = {{1,2,3},{4,5,6}}; //matrix[0][0] = 1, matrix[0] [1] = 2, ..., matrix[1][2] = 6多维数组的初始化可以像一维数组一样,在定义时指定每个元素的值,或在之后使用嵌套循环赋值。
C语言实验报告 数组
实验四数组学号:姓名:一、实验目的数组是有序数据的集合,通过实验上机掌握一维数组和二维数组的使用,以及字符串处理函数的使用方法。
掌握与数组有关的算法(特别是排序算法)。
二、实验内容按要求完成程序的设计和调试1.用选择法对10个整数排序。
10个整数用scanf函数输入。
2.有15个数存放在一个数组中,输入一个数要求用拆半查找法找出该书是数组中第几个元素的值,如果该数不在数组中,则输出无此数,要找的数用scanf函数输入。
三、实验要求1.掌握一维数组和二维数组的定义和正确使用方法。
2.熟悉在神魔情况下使用数组,并熟练运用数组来解决实际问题。
3.掌握字符数组的存储形式、字符串标志以及字符串函数的使用。
四、程序流程图五、实验源程序及注释#include<stdio.h>#define N 15int main(){int i,number,top,bott,mid,loca,a[N],flag=1,sign;char c;printf("enter data:\n");scanf("%d",&a[0]);i=1;while (i<N) //检查是否输入完毕{scanf("%d",&a[i]);if (a[i]>=a[i-1])i++;elseprintf("enter this data again:\n");}printf("\n");while (flag){printf("input the number you look for:");scanf("%d",&number); //20sign=0; //sign=0表示尚未找到top=0;bott=N-1; //bott是查找区间的末位if ((number>a[N-1])||(number<a[0]))loca=-1; //表示找不到while ((!sign)&&(top<=bott)){ mid=(bott+top)/2; //找出中间元素的下标if (number==a[mid]){ loca=mid;printf("Has found %d,its position is %d\n",number,loca+1); //30下标表示从零开始起,输出数的位置加一便于查找sign=1;}elseif (number<a[mid])bott=mid-1;elsetop=mid+1;}if(!sign||(loca==-1))printf("can't find %d\n",number); //40printf("continue or not?(Y/N)");scanf("%c",&c);if ((c=='n')||(c=='N'))flag=0; //flag为变量开关,控制程序是否结束}return 0;}实验小结1.本次实验我基本掌握了数组的算法,练习了折半寻找法和选择法排列数据。
实 验 报 告(数组)
return 0;
}
程序运行时输入:
76 85 90
64 57 80
73 65 66
84 71 72
程序运行时输出:
3.编写程序,生成并输出杨辉三角(10行)。杨辉三角的特点是第一列和对角线数字为1,其余元素a[i][j]满足a[i][j]=a[i-1][j-1]+a[i-1][j]。
}
return 0;
}
程序运行时输入:
2.设某班有4个学生,每个学生选修了三门课,算并显示以下信息:
(1)每个学生的总成绩。
(2)每门课的平均成绩。
(3)所有学生总成绩的平均值。
【输入】4个学生三门课的成绩。
【输出】以二维表格形式输出学生成绩信息和计算结果。
1
1 1
1 2 1
1 3 3 1
.
.
.
程序代码:
#include "stdio.h"
int main()
{ int i,j,n=0,a[17][17]={0};
while(n<1 || n>16)
{printf("请输入杨辉三角形的行数:");
scanf("%d",&n); }
for(i=0;i<n;i++)
printf("%6d\n",sum);
}
for(b=0;b<3;b++)
{int s=0;
for(k=0;k<4;k++)
{s=s+c[k][b];
m+=c[k][b];}
数组实验实验报告
printf("%s\n",a);
return 0;
}
void strncat(char s[],char t[],int n)
{
int i=0,j;
while(s[i++]);
for(j=0;j<n&&t[j];)
s[i++]=t[j++];
s[i]='\0';
}
4.程序设计
for(j=0;j<6-i;j++)
if(ACM[j].grade>ACM[j+1].grade)
t=ACM[j],ACM[j]=ACM[j+1],ACM[j+1]=t;
printf("now the list is:\nnபைடு நூலகம்me\tgrade\n");
for(k=0,m=0;m<=6&&k<=6;k++,m++)
malloc(sizeof(struct students));
printf("the original list is:\nname\tgrade\n");
for(m=0;m<=6;m++)
printf("%s\t%d\n",ACM[m].name,ACM[m].grade);
for(i=0;i<6;i++)
scanf("%d",&n);
if(n>=-32768&&n<=32767)
数组(C语言实验报告)
letter=number=space=other=0;
printf("请输入字符串:\n");
gets(c);
for(i=0;i<N&&c[i]!='\0';i++)
{
if((c[i]>='a'&&c[i]<='z')||(c[i])>='A'&&c[i]<='Z')
letter++;
②用for语句实现循环;
(2)该题目涉及的知识点和难点:
①宏定义;
②二维数组的输入输出;
③for语句的输入与使用。
3、餐饮服务质量调查打分
在商业和科学研究中,人们经常需要对数据进行分析并将结果以直方图的形式显示出来。例如,一个公司的主管可能需要了解一年来公司的营业状况,比较一下各月份的销售收入状况。如果仅给出一大堆数据,这显然太不直观了,如果能将这些数据以条形图(直方图)的形式表示,将会大大增加这些数据的直观性,也便于数据的分析与对比。下面以顾客对餐饮服务打分为例,练习这方面的程序编写方法。
假设有20个学生被邀请来给自助餐厅的食品和服务质量打分,分数划分为1~5这5个等级(1表示最低分,5表示最高分),试统计调查结果,并用*打印出如下形式的统计结果直方图。
Grade Count Histogram
1 5 *****
2 10 **********
3 7 *******
...
程序如下:
#include<stdio.h>
}
printf("统计调查结果如下:\n");
数组_实验报告
《程序设计基础》实验报告单5一、实验目的掌握一维数组和二维数组的定义方法,以及其元素的访问形式掌握利用字符数组来处理字符串及字符串处理函数二、实验要求利用数组解决一些循环,图形问题。
熟悉数组作为函数参数的用法三、实验内容及主要步骤开启TC编写程序,运行程序,整理结果①熟悉选择法排序②利用数组实现图形输出问题四、实验程序清单排序#include<stdio.h>void main() {int data[11],i,j,post,z;printf("please input 10 integer:\n");for(i=1;i<=10;i++) scanf("%d",&data[i]);for(i=1;i<=9;i++) {post=i;for(j=i+1;j<=10;j++){if(data[j]<data[post]) post=j;z=data[post];}printf("%d",z);//if(post!=i) {//t=data[i];data[i]=data[post];data[post]=t;// }}//printf("the sorted numbers:\n");//for(i=1;i<=10;i++)//printf("%d ",z);}一维数组打印九九乘法表#include<stdio.h>void main() {int a[10],i,j;for(i=1;i<=10;i++) {for(j=1;j<=i;j++)a[j]=i*j;printf("%d*%d=%d ",j,i,a[j]);}}二维数组打印九九乘法表#include<stdio.h>void main() {int a[10][10],i,j;for(i=1;i<10;i++) {for(j=1;j<=i;j++){a[i][j]=i*j;printf("%d*%d=%d ",j,i,a[i][j]);}printf("\n");}}折半查找法#include<stdio.h>int fun1( int a[],int n,int key){int low,high,mid;low=0;high=n-1;while(low<=high){mid=(low+high)/2;if(a[mid]==key) return mid;if(a[mid]>key) high=mid-1;else low=mid+1;}return -1;}void main() {int a[15]={1,2,4,6,7,10,15,16,20,21,23,36,39,45,50},key,n;scanf("%d",&key);n=fun1(a,15,key);if(n!=-1) printf("Find success:%d",n);else printf("No find!");}五、实践经验及问题分析⒈一维数组的定义为:类型标识符数组名【数组宽度】,二维数组为类型标识符数组名【长度1】【长度2】,在定义二维数组时候长度1可以省略,而长度2不可以省略。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告_实验7_数组(学号_姓名)
一、实验目的:
1、理解数组的作用、特点;
2、掌握一维数组、二维的定义、引用、初始化,能够与循环结合实现批量数据处理(如输入、输出,比较大小,交换等);
3、掌握字符数组、字符串的使用;
4、熟悉打擂台等典型算法。
二、实验内容
1、(基础题)有一个数列,它的第一项为1,第二项为2,第三项为3,以后每一项都等于它的前三项之和。
使用一维数组编程实现功能:计算该数列的前20项并赋值给数组,然后以逆序方式输出,每一行5个数据。
如下图所示:
程序代码:
#include<stdio.h>
int main()
{
int i;
int f[20]={1,2,3};
for(i=3;i<20;i++)
f[i]=f[i-1]+f[i-2]+f[i-3];//计算数列的值
for(i=19;i>=0;i--)
{
//每行输出5个数据
printf("%10d",f[i]);
if(i%5==0)printf("\n");
}
printf("\n\n");
return0;
}
2、(基础题)青年歌手大奖赛,有7名评委进行打分,分数取值范围:0.0~10.0,试编程实现如下功能:从键盘输入7位评委给某一选手的评分,之后计算、输出该选手的平均得分(计算规则:去掉一个最高分和一个最低分,求出剩余5个得分的平均值)。
如下图所示:
(提示:使用一维数组来保存7位评委的给分,先计算所有评委给分总和,并找到最高分、最低分,然后用给分总和-最高分-最低分,再除5得到选手的平均得分,最后输出。
)
程序代码:
#include<stdio.h>
#define N7
int main()
{
double score[N];
double max,min,sum,aver;
int i;
printf("请输入%d位评委的给分:\n",N);
for(i=0;i<N;i++)
scanf("%lf",&score[i]);
max=min=sum=score[0];
for(i=1;i<N;i++)
{
if(max<score[i])
max=score[i];
if(min>score[i])
min=score[i];
sum=sum+score[i];
}
sum=sum-max-min;
aver=sum/(N-2);
printf("\n去掉一个最高分:%.4f,去掉一个最低分:%.4f\n\n",max,min);
printf("该选手的最后得分是:%.4f\n\n",aver);
return0;
}
3、(基础题)计算矩阵之和:
先输出这两个矩阵,再输出求和后矩阵。
(提示:矩阵之和是对应元素相加,可用二维数组实现)
程序代码:
#include<stdio.h>
int main()
{
int a[3][4]={{3,0,4,5},{6,2,1,7},{4,1,5,8}};
int b[3][4]={{1,4,0,3},{2,5,1,6},{9,3,6,0}};
int c[3][4];
int i,j;
printf("array a:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%5d",a[i][j]);//12
}
printf("\n");//3
}
printf("\narray b:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%5d",b[i][j]);
}
printf("\n");
}
//c矩阵各元素的值
for(i=0;i<3;i++)
for(j=0;j<4;j++)
c[i][j]=a[i][j]+b[i][j];
printf("\narray a+b:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%5d",c[i][j]);
}
printf("\n");
}
return0;
}
4、(基础题)输入一个字符串,请编程统计其中的字母、数字、空格(含制表符)、标点符号的个数并输出。
如下图所示:
(提示:在教材的p385-386中有字符和字符串函数,可以直接引用。
如isalpha()判断字母函数、isdigit()判断数字函数、isspace()判断空格函数、ispunct()判断标点函数等)
程序代码:
#include<stdio.h>
#include<ctype.h>
#include<string.h>
int main()
{
char str[201];
int i;
int a[4]={0};//定义4个统计变量,初始值为0
printf("请输入一个长度不超过200的字符串:");
gets(str);
for(i=0;i<strlen(str);i++)
{
if(isalpha(str[i])!=0)
a[0]++;
else if(isdigit(str[i]))
a[1]++;
else if(isspace(str[i]))
a[2]++;
else if(ispunct(str[i]))
a[3]++;
}
printf("该字符串的字母个数、数字个数、空格个数、标点个数分别为:");
for(i=0;i<4;i++)
printf("%d",a[i]);
return0;
}
5、(提高题)已知学生成绩如下表,要求用二维数组保存学生成绩,并计算每个学生的平均成绩以及各门课程的平均成绩。
程序运行效果如下图所示:
#include<stdio.h>
#define M4
#define N3
int main()
{
float sc[M][N];
int Row,Col;//定义行,列两个控制变量
float average_stu[M]={0.0};//存放每个学生的平均成绩
float average_sc[N]={0.0};//存放每门课程的平均成绩
printf("请输入4个学生3门课程的成绩:");
for(Row=0;Row<M;Row++)
for(Col=0;Col<N;Col++)
scanf("%f",&sc[Row][Col]);
printf("\n已输入的学生成绩:\n");
for(Row=0;Row<M;Row++)
{
for(Col=0;Col<N;Col++)
printf("%.2lf\t",sc[Row][Col]);
printf("\n");
}
//计算每个学生的平均成绩
for(Row=0;Row<M;Row++)
{
for(Col=0;Col<N;Col++)
average_stu[Row]+=sc[Row][Col];
average_stu[Row]/=N;
}
//计算每门课程的平均成绩
for(Col=0;Col<N;Col++)
{
for(Row=0;Row<M;Row++)
average_sc[Col]+=sc[Row][Col];
average_sc[Col]/=M;
}
//输出每个学生的平均成绩
for(Row=0;Row<M;Row++)
printf("第%d个学生的平均成绩为:%.2lf\n",Row+1,average_stu[Row]);
printf("\n");
//输出每门课程的平均成绩
for(Col=0;Col<N;Col++)
printf("第%d门课程的平均成绩为:%.2lf\n",Col+1,average_sc[Col]);
printf("\n");
return0;
}。