c语言实验报告五 一维数组
- 格式:doc
- 大小:104.50 KB
- 文档页数:4
计算机基础课实验报告题目:《C语言程序设计》综合实训院系:电气及自动化工程学院专业年级:电气工程及其自动化2011025班学生姓名:吴天一学号:********2011年11月23日实验6 数组一、实验目的1、掌握一维数组和二维数组的定义、赋值和输入输出的方法;2、掌握字符数组和字符串函数的使用;3、掌握与数组有关的算法(特别是排序算法)。
二、实验内容和步骤1、以下给定程序的功能是:求一维数组a中所有元素的平均值,结果保留两位小数。
例如,当一维数组a中的元素为:10,4,2,7,3,12,5,34,5,9时,程序的输出应为:The aver is:9.10程序中有两处错误,错误都在提示行:/*******found*******/的下面一行。
请改正程序中的错误,使它能得出正确的结果。
注意:程序中的其它地方请不要随意改动,不得增行或删行,也不得更改程序的结构!#include<conio.h>#include<stdio.h>void main(){ int a[10]={10,4,2,7,3,12,5,34,5,9},i;/*******found*******/int aver,s;/*******found*******/s=0;for(i=1;i<10;i++)s+=a[i];aver=s/i;printf("The aver is:%.2f\n",aver);}2、以下给定程序的功能是:求二维数组a中的最小值。
例如,当二维数组a中的元素为:4 2 347 3 125 6 5程序的输出应为:The min is:2.程序中有两处错误,错误都在提示行:/*******found*******/的下面一行。
请改正程序中的错误,使它能得出正确的结果。
注意:程序中的其它地方请不要随意改动,不得增行或删行,也不得更改程序的结构!#include<conio.h>#include<stdio.h>void main(){ int a[3][3]={4,2,34,7,3,12,5,6,5},i,j,min;min=a[0][0];/*******found*******/for(i=1;i<3;i++)for(j=0;j<3;j++)if(min>a[i][j]){/*******found*******/min==a[i][j];}printf("The min is:%d\n",min);}3、在考生目录下,给定程序的功能是:在第一个循环中给a数组的前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10:在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1;在最后一个循环中输出对称折叠以后的a数组的前10个元素。
c语言数组实验报告C 语言数组实验报告一、实验目的1、深入理解 C 语言数组的概念和基本操作。
2、掌握数组的定义、初始化、遍历和访问。
3、学会使用数组解决实际问题,提高编程能力和逻辑思维能力。
二、实验环境1、操作系统:Windows 102、编译环境:Visual Studio 2019三、实验内容1、一维数组的操作定义一个包含 10 个整数的一维数组,并使用循环进行初始化。
编写程序,计算数组中所有元素的和与平均值,并输出结果。
实现对数组元素的遍历,输出每个元素的值。
2、二维数组的操作定义一个 3 行 4 列的二维整数数组,并进行初始化。
编写程序,计算二维数组中所有元素的总和。
打印出二维数组中每一行的元素值。
3、字符数组的操作定义一个字符数组,存储一个字符串。
实现字符串的输入和输出功能。
编写程序,统计字符串中字符的个数。
四、实验步骤(一)一维数组的操作1、定义并初始化一维数组```cint arr10 ={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};```2、计算数组元素的和与平均值```cint sum = 0;float average;for (int i = 0; i < 10; i++){sum += arri;}average =(float)sum / 10;printf("数组元素的和为:%d\n", sum);printf("数组元素的平均值为:%2f\n", average);```3、遍历并输出数组元素```cfor (int i = 0; i < 10; i++){printf("%d ", arri);}printf("\n");```(二)二维数组的操作1、定义并初始化二维数组```cint arr234 ={{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}};```2、计算二维数组元素的总和```cint sum2 = 0;for (int i = 0; i < 3; i++){for (int j = 0; j < 4; j++){sum2 += arr2ij;}}printf("二维数组元素的总和为:%d\n", sum2);```3、打印二维数组每一行的元素值```cfor (int i = 0; i < 3; i++){for (int j = 0; j < 4; j++){printf("%d ", arr2ij);}printf("\n");}```(三)字符数组的操作1、定义并初始化字符数组```cchar str100;```2、输入和输出字符串```cprintf("请输入一个字符串:");scanf("%s", str);printf("您输入的字符串是:%s\n", str);3、统计字符串中字符的个数```cint count = 0;for (int i = 0; stri!='\0'; i++){count++;}printf("字符串中字符的个数为:%d\n", count);```五、实验结果(一)一维数组的操作结果1、数组元素的和为:552、数组元素的平均值为:5503、数组元素的输出结果为:1 2 3 4 5 6 7 8 9 10(二)二维数组的操作结果1、二维数组元素的总和为:782、二维数组每一行的元素输出结果为:5 6 7 89 10 11 12(三)字符数组的操作结果1、输入字符串为:hello2、输出字符串为:hello3、字符串中字符的个数为:5六、实验分析(一)一维数组在对一维数组进行操作时,通过循环可以方便地对数组中的每个元素进行访问和处理。
C语言实验五实验报告——数组一、实验目的:1.了解数组的概念和基本使用方法;2.掌握一维数组和二维数组的定义、初始化、赋值及基本运算实现;二、实验内容与方法1.理论部分数组是一些具有相同类型的数据元素按一定顺序排列组合而成的集合,在程序设计中它是一个变量列表,由若干相同数据类型的元素组成。
通常用一个名字和一个下标来表示,下标可理解为数组元素在数组中的位置编号。
数组的特点:数组是根据顺序排列的元素的集合;所有的元素必须是相同类型。
数组的定义方法:1. 定义数组,数组元素类型 + 数组名[元素的个数];2. 元素的个数必须是整型常量或变量,定义时必须明确、指定元素的个数;3. 声明一个数组时,除了要指定数组的类型外,还要指定数组的名称;4. 数组定义完后,需要对其中的每个元素进行初始化。
可以在定义数组时赋初值,也可以通过赋值符号,对数组元素逐个进行赋值。
数组的初始化:1. 元素个数之间用逗号分开,最后1个元素后无逗号;2. 支持部分元素初始化;3. 定义和初始化可以一步完成。
二维数组数组可分为一维和多维数组。
一维数组可以看作是包含多个元素的向量,而二维数组可以看做是包含了多个一维数组的矩阵。
二维数组有行号和列号,因此,它同样需要两个下标。
数组元素类型数组名[行数][列数];数组元素类型数组名[ ][ ] = { {元素1, 元素2, ……}, {元素1, 元素2, ……}, ……{元素1, 元素2, ……}}2.实验代码**问题1:**定义一个一维数组a,包含有5个元素,分别为1,2,3,4,5;**问题2:**定义一个一维数组a,接收用户从键盘输入的5个数值,分别打印存储的各个元素。
三、实验结果与分析结果分析:定义了一个5个元素的一维数组a,并初始化了各个元素的值,其元素分别为1,2,3,4,5.循环遍历一遍数组a,并打印数组元素。
程序执行正常。
3.针对问题3:定义一个二维数组a,由4行3列组成,每个元素初始化为0,打印存储的各个元素;程序运行结果如下:四、实验总结:该实验主要是通过对C语言数组的理论知识和基本操作进行练习,加深了对数组的了解和掌握。
《C语言程序设计》实验报告实验序号:5 实验项目:数组学号姓名Debug 专业、班级实验地点指导教师实验时间一、实验目的及要求1、掌握一维数组和二维数组的定义、赋值、使用和输入输出方法;2、掌握字符数组和字符串的使用;二、实验设备(环境)及要求使用Visual C++ 6.0;windows系列操作系统的环境。
三、实验内容与步骤1.用筛法求1~1000之间的素数。
eratosthenes筛法:1)利用数组存放这1000个数;2)挖掉第一个数1(令该数=0);3)2没被挖掉,挖掉后面所有2的倍数;4)3没被挖掉,挖掉后面所有3的倍数;5)4被挖掉,不执行任何操作;6)5没被挖掉,挖掉后面所有5的倍数;7)····直到最后一个数;8)剩下的非0数就是素数。
运行结构截图:2.编写程序输入一个字符串,删除字符串中的所有数字字符后输出此字符串。
【算法提示】(1)定义一个一维字符数组;(2)输入一串测试字符;(3)依次判断数组中字符是否为数字(即>‘0’且<‘9’);(4)若是则将后面所有字符依次往前移一位;(5)输出整个字符串。
运行结构截图:3.输入若干个整数存放在一维数组中,根据此数组构造两个数组a和b,要求a中存放数组x中所有的正数,b中存放数组中所有的负数,0舍弃,最后分别输出数组a和b 。
运行结构截图:4.10个小孩围成一圈分糖,老师分给第1个孩子10块,第2个孩子2块,第3个孩子8块,第4个孩子22块,第5个孩子16块,第6个孩子4块,第7个孩子10块,第8个孩子6块,第9个孩子14块,第10个孩子20块,然后所有的小孩同时将自己手中的糖分一半给右边的小孩,糖块数为奇数的人可向老师再要一块。
问经过这样几次调整后大家手中的糖的块数都一样?每人各有多少块糖。
(注:第i个小朋友的右边是第i-1个小朋友,第1个小朋友的右边是第10个小朋友)运行结构截图:5.假设在2*10的二维数组中存放了数据,其中各行的元素构成一个整数,如第一行元素构成整数1234507000。
实验五数组一实验目的1 掌握一维数组和二维数组的定义、赋值和输入输出的方法;2 掌握字符数组和字符串函数的使用;3 掌握与数组有关的算法(特别是排序算法)二实验内容1 程序功能:输入12个整数,按每行3个数输出,最后输出它们的平均值。
#include <stdio.h>#define N 12main(){ int i,a[N],av;for(i=0;i<N;i++) scanf("%d",a[i]);for(i=0;i<N;i++){ printf("%d",a[i]);if(i%3==0) printf("\n");}for(i=0;i<N;i++) av+=a[i];printf("av=%f\N",av);}上面给出的程序有错误,请改正并运行,记录输出结果。
【提示】请注意输入提示、变量赋初值、循环结束条件、输出格式等问题。
修改正确的程序如下:#include<stdio.h>#define N 12main(){ int i,a[N],av=0;for(i=0;i<N;i++) scanf("%d",&a[i]);for(i=0;i<N;i++){ printf("%d",a[i]);if((i+1)%3==0) printf("\n");}for(i=0;i<N;i++) av+=a[i];printf("av=%d\n",av/N);}运行结果如下图:2 选择排序(升序):最常用的排序方法除了冒泡排序外,还有选择排序。
【算法】n个数的选择排序的算法:⑴定义变量、输入n及数组a各元素⑵n个数排序要进行n-1遍以下是一遍排序(第i遍)的方法:①设最小数的下标k=i,则最小数为a[k]②从下标j=i+1的元素起,到最后一个元素(j=n-1),将a[j]与最小数a[k]比较,确定最小数的下标k③交换a[i]与最小数a[k]⑶输出已排序的n个数请根据上面的算法编写选择排序程序,并编辑运行、记录输入输出数据。
C语言实验五实验报告——数组实验五:数组实验目的:1.掌握数组的定义和使用;2.熟悉数组在函数中的传递;3.练习编写使用数组的程序。
实验原理:数组是一组相同类型的变量的集合,这些变量称为数组的元素。
数组的名字是一个指针常量,它存放的是数组首个元素的地址。
数组元素在内存中是连续存放的,可以通过下标访问每一个元素。
数组的定义:数组的定义格式为:数据类型数组名[数组长度];数组的初始化:数组可以在定义时进行初始化,也可以在定义之后通过赋值进行初始化。
数组作为函数参数:数组可以作为函数的形参进行传递,可以通过指针传递整个数组,也可以传递数组的部分元素。
实验步骤:1.编写一个程序,实现对学生成绩的管理。
要求如下:-使用一个数组保存学生的成绩;-能够动态添加学生的成绩,并显示添加成功的信息;-能够计算学生的平均成绩,并显示;-能够根据用户输入的学号查找对应学生的成绩,并显示。
2.编写一个程序,实现对一组整数进行排序。
要求如下:-首先自定义一个整数数组,数组元素个数为用户输入;-编写一个函数,实现对数组进行排序,要求使用选择排序算法;-在主函数中调用该函数,对数组进行排序后显示。
实验结果与分析:1.学生成绩管理程序运行结果如下:```-------学生成绩管理系统-------[1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:1请输入成绩:90添加成功![1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:1请输入成绩:85添加成功![1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:2平均成绩为:87.5[1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:3 [1]添加学生成绩[2]计算平均成绩[3]查找学生成绩[4]退出系统请输入选项:4退出系统。
```2.整数排序程序运行结果如下:```-------整数排序-------请输入待排序的整数个数:6请输入第1个整数:5请输入第2个整数:3请输入第3个整数:9请输入第4个整数:2请输入第5个整数:7请输入第6个整数:1排序前的整数序列为:539271排序后的整数序列为:123579 ```实验总结:通过本次实验,我深入理解了数组的原理和用法,并且掌握了数组在函数中的传递。
一、实验项目名称数组二、实验目的1.掌握数组的基本概念,包括:数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出。
2.掌握字符数组与字符串的使用方法。
理解字符数组与其它数组的区别、理解字符串及其特点。
掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。
3.掌握与数组相关的算法,包括排序算法和查找算法等。
三、实验内容进行有关数组的程序设计。
具体内容:1.编程实现:对任意一个一维数组,从中找出数组元素的最大值和最小值。
要求:(1)数组为整型数组(10个元素)。
(2)使用scanf函数实现数组元素的输入。
在输入前给出必要的提示。
(3)输出时给出必要的说明,首先输出原始的10个元素,换行后输出最大值以及最大值在数组中的位置、最小值以及最小值在数组中的位置。
(4)如果现改为20个元素的数组,怎样修改程序?修改程序后,运行程序进行检查。
如果需要数组元素不断改变,应怎样修改程序?2.编程实现:在给定的字符串中查找满足条件的第一个字符。
要求:(1)字符串采用初始化的方式处理。
(2)通过scanf函数读入一个任意字符。
(3)在字符串中查找该字符,如果存在该字符,输出该字符在字符串中的位置以及相应的说明。
如果不存在该字符,则要给出相应的信息。
3.编程实现:首先任意输入一个大于2且小于10的整数n,再输入一个由n决定的二维整型数组(n ⨯n),形成n ⨯n阶矩阵,将矩阵中最大元素所在的行和最小元素所在的行对调后,再输出该矩阵(注意:数组不允许动态定义)。
例如:原始数据:n=4 结果数据:1 2 3 4 8 11 14 163 5 9 10 3 5 9 108 11 14 16 1 2 3 415 2 7 6 15 2 7 6要求:(1)本题中所涉及到的循环都采用for语句。
(2)在输入/输出时进行必要的说明。
(3)对输入的2~10之间的整数(例如4)以n=4的格式输出。
《C程序设计》课程实验报告学院:班级:姓名:学号:实验设备:计算机1台实验日期:2011年3月1日实验项目名称一维数组实验目的掌握一维数组的定义、初始化,以及一维数组元素的下标法引用。
实验要求:掌握一维数组的定义、初始化,以及一维数组元素的下标法引用,并能编写简单程序。
实验内容(包括步骤):1.数组a中存放10个非0整数,编写程序,将数组a中的所有正数存放在数组的前面,负数存放在数组的后面。
要求:(1)数组元素值从键盘输入。
(2)用下标法。
2.将数组a中的10个元素后移m位,移出的m位顺序存放在数组的前位。
要求:(1)数组元素值在程序中初始化。
(2)m的值从键盘输入。
(3)用下标法。
调试与结果测试:代码注释:5-1#include<stdio.h>int main(){int a[10];int i;for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");for(i=0;i<10;i++)if(a[i]>0)printf(" %d",a[i]);for(i=0;i<10;i++)if(a[i]<0)printf(" %d",a[i]);printf("\n");return 0;5-2#include<stdio.h>int main(){ int a[10]={1,2,3,4,5,6,7,8,9,10};int m,n,r,i;printf("please input a number:\n");scanf("%d",&m);for(n=9;n>=0;n--)a[n+m]=a[n];for(r=m-1;r>=0;r--)a[r]=a[10+r];for(i=0;i<10;i++)printf("%d ",a[i]); printf("\n");return 0;}――――――――――――以下内容为教师填写―――――――――――――――教师评阅:成绩:良2011年月日。
c语言数组实验报告C 语言数组实验报告一、实验目的本次实验旨在深入理解和掌握 C 语言中数组的基本概念、使用方法以及常见的操作。
通过实际编程和调试,提高对数组的运用能力,为今后解决更复杂的程序设计问题打下坚实的基础。
二、实验环境操作系统:Windows 10编译器:Visual Studio 2019三、实验内容1、一维数组的定义、初始化和遍历定义一个包含整数的一维数组,如`int arr10;`使用初始化列表为数组赋值,例如`int arr5 ={1, 2, 3, 4, 5};`通过循环遍历数组,输出每个元素的值。
2、一维数组的查找和修改实现线性查找算法,在数组中查找特定的元素。
根据找到的元素位置,修改其值。
3、二维数组的定义、初始化和遍历定义二维数组,如`int arr234;`以不同的方式初始化二维数组,如按行初始化或整体初始化。
使用双重循环遍历二维数组。
4、二维数组的应用:矩阵运算实现两个矩阵的相加和相乘运算。
四、实验步骤1、一维数组的定义、初始化和遍历编写代码如下:```cinclude <stdioh>int main(){int arr10;int i;//初始化数组for (i = 0; i < 10; i++){arri = i + 1;}//遍历数组并输出for (i = 0; i < 10; i++){printf("%d ", arri);}return 0;}```编译并运行代码,观察输出结果,验证数组的初始化和遍历是否正确。
2、一维数组的查找和修改以下是实现线性查找并修改元素值的代码:```cinclude <stdioh>int main(){int arr5 ={10, 20, 30, 40, 50};int target = 30;int found = 0;int i;//查找元素for (i = 0; i < 5; i++){if (arri == target) {found = 1;break;}}if (found) {printf("找到元素%d,位于索引%d\n", target, i);arri = 100; //修改元素值} else {printf("未找到元素%d\n", target);}//输出修改后的数组for (i = 0; i < 5; i++){printf("%d ", arri);}return 0;}```运行程序,输入不同的目标值,查看查找和修改的结果。
淮海工学院计算机科学系实验报告书课程名:《C语言程序设计A 》题目:实验5 数组——一维数组班级:软嵌151学号:2015123349姓名:陈正宁1、实验内容或题目(1)从键盘输入10个整数,输出去掉其中最大的两个数,求剩余数据的平均值。
(2)从键盘输入10个整数,分别用选择和冒泡排序对这10个数进行排序。
(4)输入一个整数,在一个有序数列中使用折半查找法查找是否存在该整数。
(5)有a,b,c,d和e共5个不同的球,准备分给甲、乙、丙、丁和戊5个小朋友。
已知小朋友甲不用a球,小朋友乙不要b球,小朋友丙不用c求。
编写程序求共有多少种不同的分法。
2、实验目的与要求(1)掌握一维数组的定义和输入输出的方法。
(2)掌握与数组有关的算法,如排序、查找。
3、实验步骤与源程序⑴实验步骤(1)、(2)、选择排序:冒泡排序:(4)、(5)、⑵源代码(1)、#include<stdio.h>void main(){int a[10];int i,k,j,temp;double p,sum=0;printf("请输入10个整数:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<9;i++){k=i;for(j=i+1;j<10;j++)if(a[j]<a[k])k=j;if(k!=i){temp=a[i];a[i]=a[k];a[k]=temp;}}printf("去掉其中最大的两个数后余下的整数:\n");for(i=0;i<8;i++){sum+=a[i];printf("%d ",a[i]);}p=sum/8;printf("\n");printf("剩余数据的平均值为:\n%lf\n",p);}(2)、#include<stdio.h>void main(){printf("下面使用选择排序:\n\n");int a[10];int i,j,t,k;printf("请输入10个待排序的整数:\n");for(i=0;i<9;i++)scanf("%d",&a[i]);printf("\n");for(i=0;i<10;i++){k=i;for(j=i+1;j<10;j++)if(a[j]>a[k])k=j;if(k!=i){t=a[i];a[i]=a[k];a[k]=t;}}printf("排序后的整数为:\n");for(i=0;i<10;i++)printf("%d ",a[i]);printf("\n");}#include<stdio.h>void main(){printf("下面使用冒泡排序:\n\n");int a[10];int i,j,t;printf("请输入10个待排序的整数:\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("排序后的整数为:\n");for(i=0;i<10;i++)printf("%d ",a[i]);printf("\n");}(4)、#include<stdio.h>void main(){int a[10]={0,1,2,3,4,5,6,7,8,9};int low=0,high=9;int mid,k;printf("请输入您想查找的数k:");scanf("%d",&k);while(low<=high){mid=(low+high)/2;if(k==a[mid])break;if(k<a[mid])high=mid-1;elselow=mid+1;}printf("\n");if(low<=high)printf("查到这个数!\n\n您想查找的数%d 是数组的第%d个元素\n",k,(low+high)/2+1);elseprintf("查无此数!\n");}(5)、#include<stdio.h>void main(){ int a,b,c,d,e,count=0;int x[6],i;for(i=1;i<=5;i++)x[i]=1;for(a=1;a<=5;a++)if(x[a]==1){ x[a]=0;for(b=1;b<=5;b++)if(x[b]){ x[b]=0;for(c=1;c<=5;c++)if(x[c]){ x[c]=0;for(d=1;d<=5;d++)if(x[d]){ x[d]=0;for(e=1;e<=5;e++)if(x[e]){ x[e]=0;if(a!=1&&b!=2&&c!=3)count++;x[e]=1;}x[d]=1;}x[c]=1;}x[b]=1;}x[a]=1;}printf("有%d种不同的分法。
数组练习1.编写程序,让用户输入N个数(N:常量,值为5),存储到数组中,并求这些数的最大值,最后输出数组各元素的值及最大值。
#include <stdio.h>#define N 5void main(){int a[N],i,max;for(i=0;i<=N-1;i++){printf("\nplease input a[%d]:",i);scanf("%d",&a[i]);}max=a[0];for(i=1;i<=N-1;i++){if(a[i]>max)max=a[i];}for(i=0;i<=N-1;i++){printf("\na[%d]:%d",i,a[i]);}printf("\nmax is:%d",max);}2.修改以上程序,实现让用户输入N个数(N:常量,值为5),存储到数组中,并查找数组元素的最大值,将其删除,输出删除操作前数组元素的值及删除操作之后数组元素的值。
注意:删除某一个数组元素,要将后面的数组元素往前移,以保持数组存储数据的连续性。
#include <stdio.h>#define N 5void main(){int a[N],i,max,k;/*K记录最大值的位置*/for(i=0;i<=N-1;i++)/*输入数组*/{printf("\nplease input a[%d]:",i);scanf("%d",&a[i]);}max=a[0];k=0;for(i=1;i<=N-1;i++) /*找最大值及其位置*/{if(a[i]>max){max=a[i];k=i;}}printf("\nmax is:%d",max);printf("\n删除前数组:");for(i=0;i<=N-1;i++)/*删除前输出数组*/{printf("\na[%d]:%d",i,a[i]);}for(i=k+1;i<=N-1;i++)/*将删除位置后面的元素往前移*/{a[i-1]=a[i];}printf("\n删除后数组:");for(i=0;i<=N-2;i++)/*删除后输出数组*/{printf("\na[%d]:%d",i,a[i]);}}3.修改以上程序,实现让用户输入N-1个数(N:常量,值为5),存储到数组中,在第二个数组元素之前插入一个值为99的数,输出插入操作前数组元素的值及插入操作之后数组元素的值。
实验五一维数组、二维数组一、实验目的与要求1、熟练掌握一维数组、二维数组的定义、赋值和输入输出的方法。
2、掌握与数组有关的算法。
二、实验内容1、(1)输入N个整数,使用冒泡排序,将数据由大到小输出。
2、输入N-1个整数组成一数列,再输入某数x,先将数列排序,根据x的值插入到有序数列中。
3、输入行数n,打印出杨辉三角。
4、青年歌手参加歌曲大奖赛计分系统(1)有N个评委进行打分,求这位选手的平均得分(去掉一个最高分和一个最低分)。
(2)有N个评委进行打分,求M个选手每个人的平均得分(去掉一个最高分和一个最低分),并按平均得分由高到低排序输出。
5、输入N个整数,使用选择排序,将数据由大到小输出。
三、源程序1、#include<stdio.h>void main(){int i,j,t,a[50],n;scanf("%d",&n);printf("输入数据:\n");for(i=0;i<n;i++)scanf("%d",&a[i]);for(j=0;j<(n-1);j++)for(i=0;i<(n-1-j);i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}p rintf("排序后得到的顺序为:\n");f or(i=0;i<n;i++)printf("%d ",a[i]);}2、#include<stdio.h>void main(){int i,j,t,a[50],n,x;scanf("%d",&n);printf("输入数据:\n");for(i=0;i<n;i++)scanf("%d",&a[i]);for(j=0;j<(n-1);j++)for(i=0;i<(n-1-j);i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}p rintf("排序后得到的顺序为:\n");f or(i=0;i<n;i++)printf("%d ",a[i]);p rintf("请输入要插入的数:\n"); s canf("%d",&x);f or(i=n-1;i>=0;i--)if(x<a[i])a[i+1]=a[i];else break;a[i+1]=x;p rintf("插入后数据顺序为:\n");f or(i=0;i<=n;i++)printf("%d ",a[i]);}3、#include<stdio.h>void main(){int a[100][100];int i,j,n;printf("请输入打印行数:\n");scanf("%d",&n);for(i=0;i<n;i++){a[i][0]=1;a[i][i]=1;}for(i=2;i<n;i++)for(j=1;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];printf("杨辉三角为:\n");for(i=0;i<n;i++){for(j=0;j<=i;j++)printf("%5d",a[i][j]);printf("\n");}}4、(1)#include<stdio.h>void main(){int i,j,t,a[50],n;float x=0,y;printf("输入评委人数:\n");scanf("%d",&n);printf("输入各评委分数:\n");for(i=0;i<n;i++)scanf("%d",&a[i]);for(j=0;j<(n-1);j++)for(i=0;i<(n-1-j);i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("排序后得到的顺序为:\n");for(i=0;i<n;i++)printf("%d ",a[i]);for(i=1;i<(n-1);i++){x+=a[i];y=x/(n-2);}printf("该选手平均得分为%f ",y);}(2)#include<stdio.h>void main(){int a[50][50];int s=0,b[50],t;int i,j,x,y,k,l;printf("请输入选手与评委各自的人数:\n");scanf("%d %d",&x,&y);printf("请输入选手各自的得分:\n"); for(i=0;i<x;i++)for(j=0;j<y;j++)scanf("%d",&a[i][j]);for(i=0;i<x;i++){for(k=0;k<y;k++)for(j=0;j<(y-1-k);j++)if(a[i][j]<a[i][j+1]){t=a[i][j];a[i][j]=a[i][j+1];a[i][j+1]=t;}}for (i=0;i<x;i++)for (j=0;j<y;j++)if (j==0||j==y-1)a[i][j]=0;for(i=0;i<x;i++){s=0;for(j=0;j<y;j++){s+=a[i][j];}b[i]=s/(y-2);}for (l=0;l<x-1;l++)for (i=0;i<x-1-l;i++)if (b[i]<b[i+1]){t=b[i];b[i]=b[i+1];b[i+1]=t;}printf("各个选手的平均分由高到低为:\n");for (i=0;i<x;i++)printf("%d ",b[i]);}5、#include<stdio.h>void main(){int a[100],i,j,k,x,n;printf("请输入数据的个数:\n");scanf("%d",&n);printf("请输入数据:\n");for(i=0;i<n;i++)scanf("%d",&a[i]);printf("\n");for(i=0;i<(n-1);i++){k=i;for(j=i+1;j<n;j++)if(a[j]<a[k]) k=j;if(i!=k){x=a[i];a[i]=a[k];a[k]=x;}printf("排序后数据为:\n");for(i=0;i<n;i++)printf("%d ",a[i]);}}四、程序结果1、输入要输入数据的总数:3输入数据:23 555 63排序后得到的顺序为:23 63 5552、输入要输入数据的总数:4输入数据:4 5 9 1排序后得到的顺序为:1 4 5 9请输入要插入的数:3插入后数据顺序为:1 3 4 5 93、请输入打印行数:3杨辉三角为:11 11 2 14、(1)输入评委人数:5输入各评委分数:98 90 91 92 93排序后得到的顺序为:90 91 92 93 98该选手平均得分为92(2)请输入选手与评委各自的人数:3 4请输入选手各自的得分:91 92 99 90 99 89 88 81 92 93 83 88各个选手的平均分由高到低为:91 90 885、请输入数据的个数:4请输入数据:89 7 666 78排序后数据为:7 78 89 666 五、总结。
淮海工学院计算机科学系实验报告书课程名:《 C语言程序设计教程》题目:实验五数组——一维数组班级:学号:姓名:1、实验内容或题目(1)例:编程从键盘输入一个班C语言的成绩,统计其最高分、最低分、平均分及各分数段的人数及所占百分比,并输出统计结果。
[0,60)不及格 [60,75)及格 [75,90)良好 [90,100)优秀要求格式如下:(2)编写一个程序,用冒泡法对数组中的10个数进行排序,尽量用最少的比较次数。
2、实验目的与要求1、目的:(1)进一步学习程序设计的方法和步骤;(2)掌握循环结构程序设计与数组的结合;3、实验步骤与源程序⑴实验步骤1.建立工程,添加C++源文件,编写程序。
2.调试修改语法错误。
3.编译,链接生成可执行程序。
4.运行程序,检查试验结果。
⑵源代码(一)#include<stdio.h>void main(){int score[10],i;float yx=0,lh=0,jg=0,bjg=0,aver=0;int max=0,min=999,maxn,minn;printf("请输入10位学生的成绩:");for(i=0;i<=9;i++){scanf("%d",&score[i]);}for(i=0;i<=9;i++){if(score[i]>max){max=score[i];maxn=i;}if(score[i]<min){min=score[i];minn=i;}aver+=score[i];if(score[i]<=60)bjg=bjg+1;else if(score[i]<75)jg=jg+1;else if(score[i]<90)lh=lh+1;else yx=yx+1;}aver/=10;printf("最高分者:%d\n",score[maxn]);printf("最低分者:%d\n",score[minn]);printf("平均分为%.2f\n",aver);printf("优秀%.0f人,占比为%.0f%%\n",yx,yx*10);printf("良好%.0f人,占比为%.0f%%\n",lh,lh*10);printf("及格%.0f人,占比为%.0f%%\n",jg,jg*10);printf("不及格%.0f人,占比为%.0f%%\n",bjg,bjg*10); }法二#include<stdio.h>void main(){int i,a[10],max=0,min=100,n1=0,n2=0,n3=0,n4=0;float z=0.0;printf("请输入10位学生的成绩:");for(i=0;i<=9;i++)scanf("%d",&a[i]);for(i=0;i<=9;i++){if(a[i]>max) max=a[i];if(a[i]<min) min=a[i];}printf("最高分者:%d\n",max);printf("最低分:%d\n",min);for(i=0;i<=9;i++){z=z+a[i];}printf("平均分为%f\n",z/10);for(i=0;i<=9;i++){if(a[i]>=90&&a[i]<100) n1++;if(a[i]>=75&&a[i]<90) n2++;if(a[i]>=60&&a[i]<75) n3++;if(a[i]<60) n4++;}printf("优秀%d人,占比为%d%%\n",n1,n1*10);printf("良好%d人,占比为%d%%\n",n2,n2*10);printf("及格%d人,占比为%d%%\n",n3,n3*10);printf("不及格%d人,占比为%d%%\n",n4,n4*10); }(二)#include<stdio.h>void main(){int r[]={3,5,4,2,1,7,8,10,9,6};int i,j,tmp,exchange;printf("排序前:");for(i=0;i<10;i++){printf("%d",r[i]);}printf("\n");for(i=0;i<9;i++){for(j=8;j>=i;j--)if(r[j+1]<r[j]){tmp=r[j+1];r[j+1]=r[j];r[j]=tmp;}}printf("排序后:");for(i=0;i<10;i++){printf("%d",r[i]);}printf("\n");}4、测试数据与实验结果(可以抓图粘贴)5、结果分析与实验体会现在往后需要敲打的代码越来越多,很容易出错,要注意不能丢括号,分号等,这次学习了一堆数组,冒泡法,对c语言也越来越熟悉了,没了刚开始学的茫然。
C语言实验五实验报告-数组C 语言实验五实验报告数组一、实验目的本次实验旨在深入理解和掌握 C 语言中数组的概念、声明、初始化以及基本操作。
通过实际编写代码,熟练运用数组解决实际问题,提高编程能力和逻辑思维能力。
二、实验环境操作系统:Windows 10开发工具:Visual Studio 2019三、实验内容1、数组的声明和初始化声明一维数组,如`int arr10;`。
初始化一维数组,包括全部初始化,如`int arr5 ={1, 2, 3, 4, 5};`,以及部分初始化,如`int arr5 ={1, 2};`。
声明二维数组,如`int arr34;`。
初始化二维数组,如`int arr23 ={{1, 2, 3},{4, 5, 6}};`。
2、数组元素的访问和操作使用下标访问数组元素,如`arr0` 。
对数组元素进行赋值和修改操作。
遍历数组,使用循环打印数组元素。
3、数组的应用实现数组元素的排序,如冒泡排序、选择排序等。
查找数组中的特定元素,如顺序查找、二分查找等。
四、实验步骤1、数组的声明和初始化打开 Visual Studio 2019,创建一个新的 C 语言项目。
在源文件中,编写以下代码来声明和初始化一维数组:```cinclude <stdioh>int main(){int arr110;int arr25 ={1, 2, 3, 4, 5};int arr35 ={1, 2};printf("未初始化的数组 arr1 的元素:\n");for (int i = 0; i < 10; i++){printf("%d ", arr1i);}printf("\n");printf("全部初始化的数组 arr2 的元素:\n");for (int i = 0; i < 5; i++){printf("%d ", arr2i);}printf("\n");printf("部分初始化的数组 arr3 的元素:\n");for (int i = 0; i < 5; i++){printf("%d ", arr3i);}printf("\n");return 0;}```编译并运行代码,观察输出结果,理解数组的声明和初始化方式。
实验五 一维数组和二维数组一、实验目的(1)熟练掌握一维、二维数组定义和数组元素引用, 并熟练运用数组解决实际问题。
(2)了解数组在内存中的存储方式。
二、实验内容1. 数组循环右移(C5_1.cpp )已知有n 个数组元素的一维数组a[n], 将数组a 各元素循环右移1个位置, 最后一个元素存到首位。
【输入】输入2行数据, 第一行是一个整数n, 为数组的长度。
第二行有n 个整数, 为数组元素。
【输出】输出一行, 包括n 个整数, 循环右移后的数组, 整数之间用空格隔开。
【输入输出样例1】2. 木材干燥率的计算(C5_2.CPP )输入n 批木材的干燥率 , 试计算平均含水率 和含水率的标准差s :22221)(....)()(w w w w w w s n -++-+-=。
【输入】输入2行数据, 第1行有1个整数表示木材的批数n ;第2行有n 个整数表示数组w中的各个含水率(%), 整数之间用空格隔开。
【输出】输出包含2个浮点数, 即平均含水率(%)和标准差, 要求小数点后保留2位精度。
3. 二维数组最大值求解(C5_3.cpp)输入维度为m*n的二维数组a[m][n], 输出a数组元素中的最大值。
【输入】输入m+1行数据, 第一行为两个整数, 用空格间隔, 为数组的行长和列长, 剩下的m 行为数组元素值, 每行n列, 数据间用空格间隔。
【输出】输出一个整数, 为该二维数组中的最大值。
4. 数组合并(C5_4.cpp)已知有两个排好序(升序)的一维数组a[10]和b[10], 现要求将它们合并成一个新的数组c[20], 仍保持有序。
【输入】输入2行数据, 每行都是10个升序排列的整数, 整数之间用空格隔开。
【输出】输出1行, 包含20个整数, 整数间用空格间隔。
【输入输出样例1】a,b都是整型数组。
实验五一维的数组的定义及使用一、实验目的1.掌握一维数组的定义及赋值操作;2.掌握一维数组元素的引用方法;3.掌握一维数组的输入/输出方法;4.掌握与数组有关的基本算法(尤其是排序算法).5.学会调试程序.二、实验内容(实验报告中第一题只要写出结果即可,其余2题要求写程序代码及调试结果)1、上机运行程序,写出程序的运行结果.(要求先自己分析程序写出结果,再上机调试,写出调试得到的结果)main(){int a[]={1,2,3,4},i,j,s=0;j=1;for(i=3;i>=0;i--){s=s+a[i]*j;j=j*10;}printf(“s %d \n”,s);2、输入10个学生的成绩,统计最高分和最低分及平均分,并输出。
3、用冒泡法对给定的10个数按降序排序。
程序参见教材P136三、仪器、设备、材料微机四、实验准备1.理论知识预习及要求①数组定义及数组元素的书写规范;②一维数组的定义及元素的引用方法;③一维数组的输入/输出实现方法;④一维数组的基本算法及实现。
2.实验指导书预习及要求对程序执行流程不清楚时,请先画出程序的流程图.上机前先思考编出程序,并分析结果,上机时调试,并写出实验结果。
3.其他准备无五、实验原理或操作要点简介利用循环语句实现数组的输入/输出的方法;数组元素的引用方法;一维数组的常用算法—尤其是排序算法。
六、注意事项及时保存文件,避免死机或断电造成的文件丢失。
调试程序过程中,出现问题找不出来时,请保存源程序,请老师解答。
不要删除错误程序后,口头描述错误。
调试过程中,若出现问题,请仔细观察TC编辑器给出的错误提示,逐步学会程序调试.七、实验过程与指导1.进入TC2.0环境。
2.Alt+F激活“File”菜单项,方向键下移选择“New”菜单项,回车,新建一个文件。
3.输入源程序。
4.Alt+C激活“Compile”菜单项,选择“Compile to OBJ”,回车,编译成目标文件。
《C程序设计》课程实验报告
学院:班级:姓名:学号:
实验设备:计算机1台实验日期:2011年3月1日
实验项目名称一维数组
实验目的
掌握一维数组的定义、初始化,以及一维数组元素的下标法引用。
实验要求:
掌握一维数组的定义、初始化,以及一维数组元素的下标法引用,并能编写简单程序。
实验内容(包括步骤):
1.数组a中存放10个非0整数,编写程序,将数组a中的所有正数存放在数组的前面,负数存放在数组的后面。
要求:(1)数组元素值从键盘输入。
(2)用下标法。
2.将数组a中的10个元素后移m位,移出的m位顺序存放在数组的前位。
要求:(1)数组元素值在程序中初始化。
(2)m的值从键盘输入。
(3)用下标法。
调试与结果测试:
代码注释:
5-1
#include<stdio.h>
int main()
{
int a[10];
int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=0;i<10;i++)
if(a[i]>0)
printf(" %d",a[i]);
for(i=0;i<10;i++)
if(a[i]<0)
printf(" %d",a[i]);
printf("\n");
return 0;
5-2
#include<stdio.h>
int main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10};
int m,n,r,i;
printf("please input a number:\n");
scanf("%d",&m);
for(n=9;n>=0;n--)
a[n+m]=a[n];
for(r=m-1;r>=0;r--)
a[r]=a[10+r];
for(i=0;i<10;i++)
printf("%d ",a[i]); printf("\n");
return 0;
}
――――――――――――以下内容为教师填写―――――――――――――――教师评阅:
成绩:良
2011年月日。