实验七 数组程序设计
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语言程序设计实验报告数组实验目的:1. 了解数组的概念和使用方法;2. 掌握数组的定义和初始化;3. 掌握数组的遍历和元素访问;4. 掌握数组的排序算法和查找方法。
实验内容:一、数组的定义和初始化:1. 在C语言中,数组是一组有序、相同类型的元素的集合。
数组中的每个元素可以通过一个下标来标识,下标从0开始,最大为元素个数减1。
2. 定义数组的语法:类型名数组名[元素个数];3. 数组的初始化:可以在定义数组的同时进行初始化,也可以在定义后逐个赋值,还可以用花括号{}将初始值逐一列出进行初始化。
示例代码:```// 定义数组并初始化int a[5] = {5, 4, 3, 2, 1};// 定义数组后逐个赋值int b[3];b[0] = 1;b[1] = 2;b[2] = 3;// 使用花括号逐一初始化int c[] = {1, 2, 3, 4, 5};```二、数组的遍历和元素访问:1. 数组的遍历:可以使用for循环来遍历数组中的每个元素。
```int a[5] = {5, 4, 3, 2, 1};printf("%d", a[1]); // 输出4```三、数组的排序算法和查找方法:1. 排序算法:常用的数组排序算法有冒泡排序、插入排序和快速排序等。
```void bubbleSort(int a[], int n) {int i, j, temp;for (i = 0; i < n - 1; i++) {for (j = 0; j < n - i - 1; j++) {if (a[j] > a[j + 1]) {temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}}}```2. 查找方法:常用的数组查找方法有线性查找和二分查找等。
实验结果:本次实验主要学习了数组的定义、初始化、遍历、元素访问、排序算法和查找方法。
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 实验结论通过本次实验熟练的掌握一维数组、二维数组的定义、初始化和输入/输出方法以及字符数组和字符串函数的使用;还有就是掌握与数组有关的常用算法。
实验07 数组基本操作的程序设计
姓名:邵彧韬班级0411112 学号041111231 实验日期2013-04-18课程名称VB 程序设计指导教师刘惠彬成绩实验名称:数组基本操作的程序设计实验目的1)熟悉数组的声明和引用;学会在循环中访问数组元素的方法。
2)掌握一维数组的基本处理方法(键盘输入、随机数产生、遍历、查找、累加、输出等)。
3)熟悉选择排序和冒泡法排序的算法。
实验环境Visual Studio 2008实验内容1)查找最大和最小元素并交换位置①控件的主要属性:(要求列出所有控件)Form:查找最大和最小元素并交换位置Label:a数组,最大值,最小值,最大值下标,最小值下标,交换后a数组Butter:执行②程序代码:Public Class Form1Dim numbers() As Integer = New Integer() {0, 10, 20, 30, 40, 50, 60, 70, 80, 90}Dim output As StringPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim key, i As Integerkey = Val(InputBox("输入要插入的元素值:"))ReDim Preserve numbers(numbers.Length)Dim index As IntegerFor i = 0 To numbers.Length - 2If numbers(i) < index Thennumbers(i) = numbers(index)End IfNextoutput = ""姓名:邵彧韬班级0411112 学号041111231 实验日期2013-04-18课程名称VB 程序设计指导教师刘惠彬成绩For i As Integer = 0 To numbers.Length - 1output = output & numbers(i) & vbTabNext iTextBox1.Text = outputEnd SubPrivate Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Loadoutput = ""For i As Integer = 0 To numbers.Length - 1output = output & numbers(i) & vbTabNext iTextBox1.Text = outputEnd SubEnd Class2)有条件转存数组元素并排序①控件的主要属性:(要求列出所有控件)Form:有条件转存数组元素并排列Label:a数组,有条件转存的b数组②程序代码:Public Class Form1Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim i, m, n As IntegerConst i As Integer = 20Const m As Integer = 20Dim numbers(0 To i - 1) As IntegerDim number(0 To m - 1) As Integer姓名:邵彧韬班级0411112 学号041111231 实验日期2013-04-18课程名称VB 程序设计指导教师刘惠彬成绩Dim output As String = ""Randomize()For i As Integer = 0 To numbers.Length - 1numbers(i) = Int(Rnd() * 20 + 1)output = output & numbers(i) & vbTabnumber(m) = Int(Rnd() * 20 + 1)output = output & numbers(i) & vbTabNextEnd SubEnd Class实验小结(关键步骤、解决方法、主要算法;调试与分析)通过本次的VB实验,我们在课堂中重新学习认识了VB程序设计中的要点内容和重点,通过老师细致的讲解,我们认真的听取,从而掌握了VB程序设计的内涵,我们依次从这次的实验中学习到了VB设计的关键步骤,并在这些步骤上做出的自己的理解和引申,在解决方法上,我们采用了老师讲解的步骤,并且再加上自己的理解,从而使整个实验有序的进行,在主要算法上,我们参照书本和老师的范本并且加之自己的学习过的设计方法使得整个实验贯穿了从理解到实际运用,最后在实验的调试和运用我们有做出来系统的逐步分析,是的我们对此次的实验思路更加的清晰,明了。
数组程序设计实验报告
数组程序设计实验报告数组程序设计实验报告引言在计算机科学领域,数组是一种重要的数据结构,用于存储和操作大量相同类型的数据。
数组的使用广泛,无论是在算法设计还是软件开发中,都扮演着重要的角色。
本实验旨在通过编写数组程序,探索数组的特性和应用。
一、数组的定义与初始化数组是一种由相同类型的元素组成的集合,每个元素都可以通过索引访问。
在程序中,我们可以通过声明数组变量来定义一个数组。
例如,int numbers[5]就定义了一个包含5个整数的数组。
数组的初始化可以在声明时进行,也可以在后续的代码中进行。
二、数组的基本操作1. 访问数组元素数组元素可以通过索引来访问,索引从0开始。
例如,numbers[0]表示数组numbers的第一个元素。
通过循环遍历数组,我们可以逐个访问数组中的元素。
2. 修改数组元素数组元素的值可以通过索引进行修改。
例如,numbers[0] = 10将把数组numbers的第一个元素的值修改为10。
3. 数组的长度数组的长度是指数组中元素的个数。
在C语言中,可以通过sizeof运算符来获取数组的长度。
例如,sizeof(numbers) / sizeof(numbers[0])将返回数组numbers的长度。
三、数组的应用1. 数组的排序数组排序是数组程序设计中常见的任务之一。
常见的排序算法包括冒泡排序、选择排序和插入排序。
通过对数组元素进行比较和交换,可以将数组按照升序或降序排列。
2. 数组的搜索数组搜索是另一个常见的任务,它涉及在数组中查找特定的元素。
线性搜索是一种简单直观的搜索方法,它逐个比较数组元素,直到找到目标元素或搜索完整个数组。
二分搜索是一种更高效的搜索方法,它要求数组事先有序。
3. 多维数组除了一维数组,我们还可以使用多维数组来存储和处理更复杂的数据。
二维数组是最常见的多维数组形式,它可以看作是一个表格或矩阵。
通过使用行和列的索引,我们可以访问和修改二维数组中的元素。
实验七 二维数组实验报告
***软件类实验报告课程名称:C语言程序设计学号:姓名:班级:指导教师:开课学期:学院:***教务处⑶二维数组处理矩阵问题。
四、实验过程及内容:(运行结果请抓图到对应题目的下方)1.输入下面的程序,说明程序的功能并分析运行结果。
2.程序填空题。
加法口诀表。
输入1个正整数n(1≤n≤10),输出一张10以内的加法口诀表。
加数与被加数都不大于n(将加数、被加数、和放入一个二维数组中,再输出该数组),程序运行结果如图7-1所示。
填空完成程序。
实验结果:3. 程序填空题。
下列程序定义了M×N的二维数组,并在主函数中对其赋值。
函数fun()的功能是计算数组周边元素的平均值并作为函数值返回给主函数。
实验结果:4. 编程insert函数,insert函数的功能是:实现在字符串s的指定的下标位置插入另一个字符串t。
例如:字符串s为“I am a boy.”,t为“good ”,调用insert(s,7,t);则s结果为“I am a good boy.”。
主函数框架如下:#include "stdio.h"#include "string.h"void main(){char s[100]="I am a boy.",t[50]="good ";void insert(char s[],int n,char t[]);insert(s,7,t);puts(s);}请完成insert函数的定义。
实验结果:5. 程序改错题。
打印九九乘法表。
6.编写程序实现,求3*3矩阵两条对角线元素之和五、实验小结。
C语言实验学生版(最新版)
实验一:简单的C程序设计(2学时)一、实验方式:一人一机二、实验目的:1、了解C语言程序的编译环境和编写过程。
2、掌握C语言程序在Visual C++ 6.0环境下的调试过程。
3、初步了解C语言程序的特点。
4、掌握C语言的数据类型。
三、实验内容:1、计算两个数x和y的和。
(教材P5【例1-2】)2、从键盘输入华氏温度h,输出摄氏温度c(摄氏温度=5/9*(华氏温度-32))。
(实验教材P18)3、给定圆环,输入内圆环半径r1、外圆环半径r2,求出圆环的面积。
(实验教材P27)4、从键盘上输入两个整数x、y,实现两个数的交换,并求出最大值、最小值和两个数的平均值。
(实验教材P21)5、输入并运行以下程序,分析运行结果。
(实验教材P27)#include <stdio.h>void main( ){int i,j;i=8; j=10;printf(“%d,%d\n”,++i,++j);i=8; j=10;printf(“%d,%d\n”,i++,j++);i=8; j=10;printf(“%d,%d\n”,++i,i);i=8; j=10;printf(“%d,%d\n”,i++,i);}四、实验程序代码:五、实验运行结果(截图):实验二:顺序结构程序设计(2学时)一、实验方式:一人一机二、实验目的:1、掌握标识符、常量、变量的定义及使用。
2、掌握C语言的常用运算符及表达式。
3、掌握单分支if语句的使用方法。
4、掌握双分支if-else语句的使用方法。
三、实验内容:1、从键盘输入一个3位整数,请输出该数的逆序数。
(实验教材P27)2、输入3个字符型数据,将其转换成相应的整数后,求它们的平均值并输出。
(实验教材P27)3、判断箱子是正方体还是长方体。
(实验教材P33)4、有一函数: x (x<1)y= 2x-1 (1≤x<10)3x-11 (x≥10) 编写程序,输入x值,输出y值。
数组程序设计实验报告
数组程序设计实验报告《数组程序设计实验报告》在计算机科学领域,数组是一种非常重要的数据结构,它可以存储多个相同类型的数据,并且可以通过索引来访问和操作这些数据。
在本次实验中,我们将使用数组来设计和实现一些简单的程序,以加深对数组的理解和应用能力。
实验一:数组的基本操作在这个实验中,我们首先学习了如何声明和初始化数组,然后进行了一些基本的数组操作,比如访问数组元素、修改数组元素、以及遍历数组等。
通过这些操作,我们对数组的基本特性有了更深入的了解,并且能够更加灵活地使用数组来存储和处理数据。
实验二:数组的排序算法在这个实验中,我们学习了几种常见的数组排序算法,比如冒泡排序、选择排序和插入排序。
通过实现这些排序算法,我们深入理解了数组元素之间的比较和交换操作,以及不同排序算法的时间复杂度和空间复杂度。
同时,我们也学会了如何根据具体的需求选择合适的排序算法来优化程序性能。
实验三:数组的应用案例在这个实验中,我们将学习如何利用数组来解决实际的问题。
比如,我们可以使用数组来实现一个简单的学生成绩管理系统,或者用数组来存储和统计一组数据的频率分布。
通过这些案例,我们不仅能够加深对数组的理解,还能够提高自己的编程能力和解决问题的能力。
总结通过本次实验,我们对数组的基本操作、排序算法和应用案例有了更深入的了解,同时也提高了自己的编程能力和问题解决能力。
数组作为一种重要的数据结构,在实际的软件开发中有着广泛的应用,因此我们需要不断地学习和掌握数组的相关知识,以便更好地应用它们来解决实际的问题。
希望通过这次实验,我们能够更加熟练地使用数组,并且能够将所学到的知识应用到实际的软件开发中去。
数组程序实验报告
数组程序实验报告
《数组程序实验报告》
在计算机科学中,数组是一种非常重要的数据结构,它可以用来存储一系列相同类型的数据。
在本次实验中,我们将对数组程序进行实验,并对其进行详细的报告。
实验目的:
1. 了解数组的定义和基本操作
2. 掌握数组的初始化和赋值
3. 理解数组的遍历和查找
4. 掌握数组的排序和插入操作
实验步骤:
1. 定义一个数组并初始化
2. 对数组进行赋值操作
3. 遍历数组并查找特定元素
4. 对数组进行排序操作
5. 实现数组的插入操作
实验结果分析:
在实验过程中,我们成功地定义了一个数组并进行了初始化,然后对数组进行了赋值操作。
通过遍历数组并查找特定元素,我们发现数组的查找操作是非常高效的。
在对数组进行排序操作时,我们发现数组的排序操作能够快速地对数据进行排序。
最后,我们实现了数组的插入操作,成功地向数组中插入了新的元素。
结论:
通过本次实验,我们对数组的定义和基本操作有了更深入的了解,掌握了数组的初始化、赋值、遍历、查找、排序和插入操作。
数组作为一种重要的数据结构,在实际编程中具有广泛的应用价值,我们需要不断地加强对数组的理解和掌握,以便更好地应用于实际项目中。
通过本次实验的实践操作,我们对数组的实际应用有了更深入的了解,相信在今后的编程实践中,我们能够更加熟练地运用数组来解决实际的问题。
希望通过本次实验报告的分享,能够对大家有所帮助,也希望大家能够在今后的学习和工作中不断地加强对数组的理解和应用。
数组的程序设计实验
一、实验目的通过对数组的赋值与操作,掌握数组的结构特点,及相关处理的算法设计。
二、实验内容1、题目:数组的赋值与打印实验分析及提示:程序1是数组的输入和输出代码,请阅读该代码并回答程序后面的问题。
程序1:#include <stdio.h>#include <stdlib.h>int main(){int a[5];//没有初始化赋值;int i;for(i=0;i<10;i++) printf("%d\n”,a[i]);//输出10个整数-----【1】for(i=0;i<5;i++) scanf("%d”,&a[i]);//输入5个整数--------【2】for(i=0;i<10;i++) printf("%d”,a[i]);//输出10个整数-------【3】return 0;}1.1运行上述程序,语句【1】执行后的结果是什么?为什么会打印出这样的数值?将你的运行结果与其他同学对比一下,大家的结果都一样吗?200911874040836804072360820091163332293672782因为没有对数组a[5]初始化赋值,因此产生了随机数。
不一样。
1.2 运行语句【2】,请输入5个整数,"12 23 34 45 56”,那么在运行语句【3】之后,输出了多少个数,分别抄写在下面,和其他同学对比一下,后五个数字一样吗?【3】1223344556002293672782. 不一样。
1.3 你的数组越界了吗?你怎样知道数组越界了呢?应该如何修改语句【3】越界了。
产生随机数,随着i自增,数组a下标超过数组范围。
for(i=0;i<5;i++) printf(“%d”,a[i]);2、题目:字符串的处理。
程序2是将字符串逆序排列的算法,请将空缺的语句填写完整。
程序2:#include <stdio.h>#include <stdlib.h>int main(){char str[100], c;int i, j;printf (”Enter string:”);gets (str);for ( i=0; 【1】; i++ );i--;for ( j=0; j<i; 【2】,【3】){ 【4】;str[i]=str[j];【5】;}printf(”Output string:%s\n”, str);return 0;}3.题目:求一个字符串的子串。
数组程序实验报告
数组程序实验报告数组程序实验报告引言:数组是一种常见的数据结构,它可以存储多个相同类型的元素,并通过索引来访问和操作这些元素。
在本次实验中,我们将学习如何使用数组来解决一些实际问题,并通过编写相应的程序来验证其有效性。
实验目的:1. 理解数组的概念和基本操作。
2. 掌握数组在不同场景下的应用。
3. 提高编程能力和问题解决能力。
实验内容:本次实验分为两个部分,分别是数组的创建和初始化,以及数组的操作和应用。
一、数组的创建和初始化:在编写数组程序之前,我们首先需要了解如何创建和初始化一个数组。
数组的创建可以通过声明一个变量并指定其类型为数组来实现,如int[] numbers;。
而数组的初始化则可以通过直接赋值或使用循环来实现。
1. 直接赋值初始化:例如,我们可以通过以下方式创建一个整型数组,并直接给数组元素赋值:int[] numbers = {1, 2, 3, 4, 5};2. 使用循环初始化:数组的初始化也可以通过使用循环来实现,这样可以方便地对数组进行批量赋值。
int[] numbers = new int[5];for (int i = 0; i < numbers.length; i++) {numbers[i] = i + 1;}二、数组的操作和应用:在实际应用中,我们经常需要对数组进行一些操作,例如遍历、查找最大/最小值、排序等。
下面我们将介绍几个常见的数组操作和应用。
1. 数组的遍历:遍历数组可以通过使用循环结构来实现,通过循环遍历数组的每个元素,并进行相应的操作。
int[] numbers = {1, 2, 3, 4, 5};for (int i = 0; i < numbers.length; i++) {System.out.println(numbers[i]);}2. 数组的查找:在数组中查找特定元素可以使用线性查找或二分查找等算法。
这里我们以线性查找为例,来实现查找某个元素的功能。
实验七二维数组程序设计
实验七二维数组程序设计实验七二维数组程序设计一、实验学时 2学时二、实验目的(一)掌握二维数组的定义、赋值及输入输出的方法;(二)掌握与二维数组有关的算法如查找、矩阵转置等;(三)掌握在程序设计中使用数组的方法。
数组是非常重要的数据类型,循环中使用数组能更好地发挥循环的作用,有些问题不使用数组难以实现。
(四)掌握在VC++环境下上机调试二维数组程序的方法,并对结果进行分析。
三、预习要求熟悉二维数组的定义、引用和相关算法(求最大值、最小值)的程序设计,同时要掌握在程序设计中利用双重循环来实现二维数组的输入和输出。
四、实验内容(一)二维数组的初始化,即给二维数组的各个元素赋初值。
下面的几个程序都能为数组元素赋值,请输入程序并运行,比较这些赋值方法有何异同。
1.在定义数组的同时对数组元素分行初始化。
/* c7-1.c *//*二维数组的初始化(分行)*/#include "stdio.h"void main( ){ int i,j,a[2][3]={{1,2,3},{4,5,6}};for(i=0; i<2; i++){ for(j=0; j<3; j++)printf("%d ",a[i][j]);printf("\n");}}2.不分行的初始化。
把{ }中的数据依次赋值给数组的各个元素。
/* c7-2.c *//*二维数组的初始化(不分行)*/#include "stdio.h"void main( ){ int i,j,a[2][3]={1,2,3,4,5,6};for(i=0;i<2;i++){ for(j=0;j<3;j++)printf("%d ",a[i][j]);printf("\n");}}3.为部分数组元素初始化。
如:数组定义语句为:int i,j,a[2][3]={{1,2},{4}};4.可以省略第一维的定义,但不能省略第二维的定义。
实验七: 二维数组和函数程序设计
实验七: 二维数组和函数程序设计1、实验目的熟悉二维数组和函数的综合编程方法进一步熟悉排序、查找等基本算法。
2、实验内容某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30人参加考试。
考试后要求:(1)计算每个学生的总分和平均分;(2)按总分成绩由高到低排出成绩的名次;(3)打印出名次表,表格内包括学生编号、各科分数、总分和平均分;(4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。
2、实验要求用二维数组score存放每个学生各门课程的成绩,用一维数组num存放每个学生的学号,用一维数组sum存放每个学生的总分,用一维数组aver存放每个学生的平均分。
(1)用函数编程实现计算每个学生的总分;(2)用函数编程实现按总分由高到低对学生成绩排序,注意:排序时,一维数组sum 元素的变化应连同二维数组score和一维数组num和aver一起变化;(3)用函数编程实现打印名次表(4)用函数编程实现查找学号为k的学生在班级中的排名名次及相关成绩等信息,找不到时返回-1值。
程序画面如下: (仅供参考)Please enter the total number of the students(n<=30):5↙Enter No. and score as: MT EN PH99010 80 87 83↙99011 90 95 93↙99012 67 78 87↙99013 76 89 81↙99014 60 56 45↙Before sort:NO | MT EN PH SUM AVER-------------------------------------------------------------- 99010 | 80 87 83 250 8399011 | 90 95 93 278 9399012 | 67 78 87 232 7799013 | 76 89 81 246 8299014 | 60 56 45 161 54After sort:NO | MT EN PH SUM AVER-------------------------------------------------------------- 99011 | 90 95 93 278 9399010 | 80 87 83 250 8399013 | 76 89 81 246 8299012 | 67 78 87 232 7799014 | 60 56 45 161 54Please enter searching number:99012↙position: NO MT EN PH SUM AVER4 99012 67 78 74 232 77。
c 实验报告7
c 实验报告7C 实验报告7实验目的:通过C语言编程实现对数组的排序和查找功能。
实验设备:计算机、C语言编程环境实验原理:数组是一组连续存储的相同数据类型的元素,可以通过下标来访问数组中的元素。
排序是将数组中的元素按照一定的顺序重新排列,查找是在数组中寻找指定的元素。
实验步骤:1. 编写C语言程序,实现对数组的排序功能。
利用冒泡排序、快速排序或其他排序算法对数组进行排序,使数组中的元素按照从小到大或从大到小的顺序排列。
2. 编写C语言程序,实现对数组的查找功能。
利用线性查找、二分查找或其他查找算法在数组中寻找指定的元素,并输出该元素的位置或提示未找到。
3. 编译并运行程序,测试排序和查找功能的正确性和效率。
实验结果与分析:经过实验,我们成功地实现了对数组的排序和查找功能。
通过对不同大小的数组进行排序和查找操作,我们发现排序算法的效率对于数组的大小有一定的影响,而查找算法的效率则受到排序后数组的影响较大。
因此,在实际应用中,需要根据具体情况选择合适的排序和查找算法。
实验总结:通过本次实验,我们深入了解了C语言中数组的排序和查找操作,掌握了不同的排序和查找算法,并通过实验验证了它们的正确性和效率。
这对我们进一步提高编程能力和解决实际问题具有重要意义。
实验中遇到的问题和解决方法:在实验过程中,我们遇到了一些问题,如排序算法的选择、查找算法的实现等。
我们通过查阅资料、与老师和同学讨论等方式,最终解决了这些问题,并得以顺利完成实验。
下一步工作展望:在今后的学习和实践中,我们将继续深入研究和应用C语言中的排序和查找算法,探索更多的优化方法和技巧,提高程序的效率和性能,为解决实际问题提供更好的支持。
通过本次实验,我们不仅学到了实际编程技能,还培养了解决问题的能力和团队合作精神,为我们今后的学习和工作打下了坚实的基础。
C语言程序设计实验报告数组
C语言程序设计实验报告(数组)1实验目的(1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法;(2)熟练掌握字符数组和字符串函数的使用;(3)掌握与数组有关的常用算法(查找、排序等)。
2实验内容编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。
要求:1、不允许用strcat()和strlen()字符处理库函数;2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数strlen()计算并返回两个字符串的长度;3、调用函数catstr()连接两个字符串(将str2连接在str1后面);4、调用函数lenstr()计算并返回连接后字符串的长度;5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字符串及其长度。
.算法描述流程图 3catStr函数lenStr函数开始开始定义函数定义函数lenStr(char str[])catStr(char str1[],char str2[])i=0;声名变量并赋i,j声名变量i=0,j=0初值m[i]!='\0'str1[i]!='\0' 真假str2[j]!='\0'printf(%d,i);str1[i+j]=str2[j];i++str1[i+j]='\0';结i++,j+结束主函数开始声名变量s1[50]=shi,s2[50]=weiyu;调用函数lenStr();并输调用函数catStr()的s1,s2输出出连接后的字符串字符长度输出连接后字再次调用函符串的长lenStr(结束源程序4#include<stdio.h>#include<string.h>catStr(char str1[],char str2[]) void{ int i,j;for (i=0;str1[i]!='\0';i++);for(j=0;str2[j]!='\0';j++) str1[i+j]=str2[j];str1[i+j]='\0';}lenStr(char m[] ){int i;for (i=0;m[i]!='\0';i++);printf(%d,i); }void main(){char s1[50]=orever,s2[50]=more;printf(s1=%s,s2=%s,s1,s2);printf(\s1的长度:);lenStr(s1);printf(\s2的长度:);lenStr(s2);catStr(s1,s2);printf(\连接后的字符:);printf(%s\n,s1);牰湩晴尨连接后字符的长度:);lenStr(s1);printf(\);}5测试数据s1=forever, s2=more6运行结果7出现问题及解决方法在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。
数组程序设计实验结论
数组程序设计实验结论
在这次实验中,我们研究了数组的程序设计。
数组是一种常见的数据结构,它是由一组相同类型的元素组成的有序集合。
在这次实验中,我们研究了用C语言实现数组的基本操作,
包括插入元素、删除元素、搜索元素和排序元素等。
我们还研究了如何实现一个动态数组,它可以自动扩展容量,以容纳更多的元素。
我们也研究了如何使用数组来实现多项式的表达式,以及如何计算这个多项式的值。
我们还探讨了如何使用数组来存储二维图形的点的坐标,以及如何在图形中画出线段、圆和椭圆等图形。
最后,我们还研究了数组的时间复杂度,即操作数组所需要的时间。
我们发现,插入、删除和搜索元素的时间复杂度均为O(n),而排序数组的时间复杂度可以达到O(nlogn)。
总的来说,我们通过本次实验,对数组的程序设计有了更深入的理解。
我们研究了如何实现和使用数组,并了解了数组的时间复杂度。
数组的灵活性和高效的操作使它成为编程中最常用的数据结构之
一,因此,本次实验对我们的研究和实践都有很大的帮助。
实验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语言程序设计实验七 数组的应用
‘\n’,
‘/’,
‘*’,
‘\n’,
/* (213 lines deleted)*/
0
};
/* The string is a representation of the body of this program from ‘0’to the end */
printf(“%d”,num[i]);
}
3、操作符&用以求一个变量的地址,这在函数scanf中已经使用过了。现在要你设计一个程序,返回一个3 * 5的二维数组各元素的地址,并由此说明二维数组中各元素是按什么顺序存诸的。
4、1983年,在ACM图林奖颁奖大会上,杰出的计算机科学家,UNIX的鼻祖,C语言的创始人之一,图林大奖得主,Ken Thompson上台的第一句话是:“我是一个程序员,在我的1040表上,我自豪地写上了我的职业。作为一个程序员,我的工作就是写程序,今天我将向大家提供一个我曾经写过的最精练的程序。”这个程序如下:
}
(3)#include <stdio.h>
main()
{int a[2+2*4];
}
通过这一实验,可以说明什么问题?
2、运行下面的C程序,根据运行结果,可以说明什么?
#include <stdio.h>
main( )
{int num[5]={1,2,3,4,5};
int i;
for(i=0;i<=5;i++)
main( )
{ int i;
printf(“char \ts[]={\” };
for (i=0;s[i];i++)
[练习]C语言实验七、函数程序设计答案
实验七 函数及程序结构(二)一、实验目的1.掌握函数的嵌套调用和递归调用2.掌握数组做函数参数的用法3.掌握全局变量和局部变量的用法。
?4.掌握变量的存储类别。
?二、实验内容1.[目的]掌握函数的嵌套调用方法。
[题目内容] 编写程序计算cb a 。
要求设计主函数main()读取a 、b 、c 的值,并调用ratio 函数计算a/(b-c)的值。
如果(b-c)=0那么ratio 就不能计算,因此,ratio 函数调用另一个函数dif ,以测试(b-c)的差是否为零,如果b 不等于c ,dif 返回1,否则返回0。
[输入] a 、b 、c 的值[输出] 计算结果[提示] main 函数调用ratio 函数,ratio 函数调用dif 函数。
三个函数平行定义,嵌套调用。
#include <stdio.h>void main(){float ratio(int x,int y ,int z);int dif(int x,int y);int a,b,c;float d;printf("请输入a,b,c:");scanf("%d%d%d",&a,&b,&c);d=ratio(a,b,c);if(d==0.0) printf("b-c 为零。
");else printf("%d/(%d-%d)=%f\n",a,b,c,d);}float ratio(int x,int y ,int z){if(dif(y ,z)==1) return (float)x/(float)(y-z);else return 0.0;}int dif(int x,int y){if(x==y) return 0;else return 1;}2.[目的]利用标准库提供的随机数功能。
[题目内容]编写程序,帮助小学生练习乘法计算。
C程序设计_数组_实验报告
贵州大学《C程序设计实验》实验报告实验名称:数组专业电子信息科学与技术班级姓名学号教师2010年分析:变量声明:int i,j,min,temp,data[11];声明int变量i,j,temp和数组data其有11个元素,后面只用data【1】——data【10】,这是为了方便人们的习惯。
(2). 有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。
如果该数不在数组中,则输出“无此数”。
以15个数用赋初值的方法在程序中给出。
要找的数用scanf函数输入。
#include <stdio.h>#include <time.h>#include <stdlib.h>#define n 15void search(int *p,int x);void main(){end=mid-1;elsehead=mid+1;}if(target==0)printf("查找失败!该数组中没有你所输入的数据.\n"); }运行情况:(3). 将两个字符串连接起来,不要用strcat函数。
#include<stdio.h>void main(){char a[50],b[50];inti=0,j=0;printf("请输入数组a\n");scanf("%s",a);printf("请输入数组b\n");scanf("%s",b);while(a[i]!='\0')i++;while(b[j]!='\0')a[i++]=b[j++];a[i]='\0';printf("连接后的的字符串为:%s ",a);}运行情况:(4). 找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七数组程序设计(4学时)一、实验方式:一人一机二、实验目的:1、掌握数组的定义、赋值和输入输出的方法。
2、学习用数组实现相关的算法(特别是排序算法)。
3、掌握C语言中字符数组和字符串处理函数的使用。
三、实验内容:说明:前四题为必做题目,后两题为选做题目。
1、下列程序的功能是:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。
程序中有几处错误,试找出它们后加以修改,并上机验证修改结果。
#include <stdio.h>void main( ){ int i,n,a[10],avg;for(i=0;i<n;i++)scanf(“%d”,a[i]);for(i=0;i<n;i++){ if(i%3==0) printf(“\n”);printf(“%d ”,a[i]);}for(i=0;i<10;i++)avg+=a[i];printf(“\navg=%f\n”,avg);}实验步骤与过程:#include <stdio.h>void main( ){ int i,a[10];float avg=0;printf("欢迎请输入10个整数:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++){ if(i%3==0) printf("\n");printf("%d ",a[i]);}for(i=0;i<10;i++)avg+=a[i];avg=avg/10;printf("\navg=%f\n",avg);}实验调试记录:--------------------Configuration: 71ext - Win32 Debug--------------------Compiling...71ext.cLinking...71ext.exe - 0 error(s), 0 warning(s)参考答案:2、写一个函数,对输入的10个整数按从小到大的顺序排序(升序,用冒泡排序实现)。
(实验指导书P147)实验步骤与过程:/*ex7_1.cpp*/#include<stdio.h>void sort1(int s[],int n){int i,j;int t;for(i=0;i<10;i++)for(j=0;j<10;j++)if(s[j]<s[j-1]){t=s[j-1];s[j-1]=s[j];s[j]=t;}}void main(){int i,a[10];printf("请输入10个整数:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);sort1(a,10);printf("排序后的输出为:\n");for(i=0;i<10;i++)printf("%d",a[i]);}实验调试记录:--------------------Configuration: 72ext - Win32 Debug--------------------Compiling...72ext.cLinking...72ext.exe - 0 error(s), 0 warning(s)参考答案:3、编写程序,判断某一字符串是不是“回文数”,回文数是从左至右或从右至左读起来都是一样的字符串。
(实验指导书P153)实验步骤与过程:#include<stdio.h>#include<string.h>int huiwen(char str[]){int i,j,len,flag=1;len=strlen(str);for(i=0,j=len-1;i<=j;i++,j--);if(str[i]!=str[j]){if(str[i]>128&&str[j]>128){if(str[i]==str[i-1]&&str[i+1]==str[j]){i++;j--;}else flag=0;}else flag=0;}return flag;}void main(){char str[50];printf("请输入一字符串 ");gets(str);if(huiwen(str))printf("该字符串是回文\n");elseprintf("该字符串不是回文\n");}实验调试记录:--------------------Configuration: 2 - Win32 Debug-------------------- Compiling...2.cppLinking...2.exe - 0 error(s), 0 warning(s)参考答案:4、输入一个3行3列矩阵的所有元素,然后求出主对角线元素之和。
实验步骤与过程:#include<stdio.h>void main(){int i,j,sum;int a[3][4];printf("请输入九个数:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("数值是:\n");for(i=0;i<3;i++){for(j=0;j<3;j++)printf("a[%d][%d]=%d\t",i,j,a[i][j]);printf("\n");}sum=a[0][0]+a[1][1]+a[2][2];printf("对角线的和为:%d\n",sum);}实验调试记录:--------------------Configuration: 6 - Win32 Debug-------------------- Compiling...6.cppLinking...6.exe - 0 error(s), 0 warning(s)参考答案:5、给定某年某月某日,将其转换成这一年的第几天并输出。
(实验指导书P152)实验步骤与过程:#include"stdio.h"intday_tab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,3 1}};int day_year(int y,int m,int d){int i,j,s=0;if(y%4==0)i=1;elsei=0;for(j=1;j<m;j++)s=s+day_tab[i][j];return(s+d);}void main(){int y,m,d;printf("请输入年、月、日:\n");scanf("%d%d%d",&y,&m,&d);printf("是这年的第%d天\n",day_year(y,m,d));}实验调试记录:Deleting intermediate files and output files for project '1 - Win32 Debug'.--------------------Configuration: 1 - Win32 Debug-------------------- Compiling...1.cLinking...1.exe - 0 error(s), 0 warning(s)参考答案:实验七数组程序设计(4学时)一、实验方式:一人一机二、实验目的:1、掌握数组的定义、赋值和输入输出的方法。
2、学习用数组实现相关的算法(特别是排序算法)。
3、掌握C语言中字符数组和字符串处理函数的使用。
三、实验内容:说明:前四题为必做题目,后两题为选做题目。
1、下列程序的功能是:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。
程序中有几处错误,试找出它们后加以修改,并上机验证修改结果。
#include <stdio.h>void main( ){ int i,n,a[10],avg;for(i=0;i<n;i++)scanf(“%d”,a[i]);for(i=0;i<n;i++){ if(i%3==0) printf(“\n”);printf(“%d ”,a[i]);}for(i=0;i<n;i++)avg+=a[i];printf(“\navg=%f\n”,avg);}2、写一个函数,对输入的10个整数按从小到大的顺序排序(升序,用冒泡排序实现)。
(实验指导书P147)3、编写程序,判断某一字符串是不是“回文数”,回文数是从左至右或从右至左读起来都是一样的字符串。
(实验指导书P153)4、输入一个3行3列矩阵的所有元素,然后求出主对角线元素之和。
5、给定某年某月某日,将其转换成这一年的第几天并输出。
(实验指导书P152)6、编写程序,在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,否则输出no found。
(书P191)四、实验步骤与过程:五、实验调试记录:六、参考答案:(省略)。