实验5 数组1答案
C语言实验五实验报告——数组

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语言数组的理论知识和基本操作进行练习,加深了对数组的了解和掌握。
5 实验五 数组(一)

for (i=0; i<5; i++) {
scanf("%d",&a[i]); /*输入数组元素*/
sum=sum+a[i];
}
aver=sum/5; /*计算平均分*/
printf("\nThe average score is:%f", aver);
s=(a[0][0]*a[1][1]*a[2][2]);
printf ("%d\n",s);
}
4.输出以下图案:
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
{
Int char diamond[5][9];
Char diamond[5][9]={{‘*’,‘*’,’*’,’*’,’*’}{‘’,’*’,’*’,’*’,’*’,’*’}{‘’,’’,’*’,’*’,’*’,’*’
a(i-1)=x;
printf(“%d\n”,a[i]);
}
3.求一个3×3的整型矩阵对角线元素之和。
#include <stdio.h>
void main()
{
int i,j;
int a[3][3],s;
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
scanf ("%d",&a[i][j]);
# include <stdio.h>
void main ()
数据结构实验报告答案

数据结构实验报告答案数据结构实验报告答案引言:数据结构是计算机科学中的重要概念,它涉及组织和管理数据的方法和技术。
在本次实验中,我们将研究和实践几种常见的数据结构,包括数组、链表、栈和队列。
通过这些实验,我们将深入理解数据结构的原理和应用。
一、数组数组是一种线性数据结构,它由一系列相同类型的元素组成。
数组的特点是可以通过索引来访问和修改元素,具有随机访问的能力。
在本次实验中,我们将实现一个简单的数组类,并进行一些基本操作,如插入、删除和查找。
首先,我们定义一个数组类,包含以下成员变量和方法:- size:数组的大小- elements:存储元素的数组- insert(index, element):在指定位置插入元素- remove(index):删除指定位置的元素- get(index):获取指定位置的元素- search(element):查找元素在数组中的位置通过实现上述方法,我们可以对数组进行各种操作。
例如,我们可以在数组的末尾插入一个元素,然后在指定位置删除一个元素。
我们还可以通过元素的值来查找其在数组中的位置。
二、链表链表是另一种常见的线性数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。
链表的特点是插入和删除操作的效率较高,但随机访问的效率较低。
在本次实验中,我们将实现一个简单的单向链表,并进行一些基本操作。
首先,我们定义一个节点类,包含以下成员变量和方法:- data:节点的数据元素- next:指向下一个节点的指针然后,我们定义一个链表类,包含以下成员变量和方法:- head:链表的头节点- insert(element):在链表的末尾插入一个节点- remove(element):删除链表中指定的节点- search(element):查找链表中指定元素的节点通过实现上述方法,我们可以对链表进行各种操作。
例如,我们可以在链表的末尾插入一个节点,然后删除链表中指定的节点。
实验8+数组(一)(参考答案)

实验8 数组(一)
☞知识点
1.整型、0、数组的大小-1、常量表达式1*常量表达式2
2.行
3.定义数组的同时为其元素赋值、0、0或’\0’、初始化的元素个数
4.下标、循环
☞课前练习题
1.B
2.96、8
3.AB
4.D
5.后两条
6.cin>>x;
☞分析
题1
1.计算数组a中奇数之和、21
2.计算数组a中偶数之和、24
3.s的初值不确定,不能得到正确的s终值
4.6、i==6
5.i为数组a的元素下标、数组元素下标i
题2
1.All right!
2.”i<4”或”i<=j”均会出现重复比较
3.对角线左右两边的元素是否对称,对称则flag为1,否则flag为0
4.不会,因为continue会立即结束本次循环,即使循环体内还有其它语句,这些语句在本次循环内也不会被执行。
如果不使用cotinue语句而使用break语句,则i循环的循环体应修改为:
if(a[j][i]!=a[i][j])
{
flag=0; break;
}
5.就a[j][i]而言,外层j循环控制行,内层i循环控制列、数组元素下标i,j
☞课后练习题
1.D
2.D
3.16
4.i<9、j<9-i、a[j]=a[j+1]、a[j+1]=temp。
实验5-数组答案

VB程序设计实验五实验目的●掌握一维数组和二维数组的操作●学习跟数组相关的控件:列表框和组合框复习1.列表框列表框(ListBox)控件允许用户查看和选择列表中的多个元素。
表5-11 列表框的常用属性和事件2.组合列表框(ComboBox)整合了列表框和文本框的功能,以一个文本框控件(TextBox)右边加上一个向下箭头的样式显示。
有Simple(简单组合框)、DropDown(下拉组合框)和DropDownList(下拉列表框)。
其中,Simple选项不显示下拉箭头,而是在控件的旁边显示一个滚动条;DropDown风格(默认值)在单击向下箭头时显示一个下拉列表,且在ComboBox中输入一个值;DropDownList显示一个下拉列表,但不允许用户在ComboBox中输入。
表5-13 组合列表框的常用属性和事件(1) Items.Count属性:列表框或组合框中项目数量。
最后一项的序号为Items.Count-1,该属性只能在程序中设置或引用。
(2) Text属性:被选定的选项的文本内容。
该属性只能在程序中设置或引用。
注意:ListBox1.Items(ListBox1.SelectedIndex)等于ListBox1.Text。
(3) Items.Add方法把一个选项加入列表框,格式:对象.Items.Add(选项);如:ListBox1.Items.Add("周海涛")(4) Insert方法在指定位置插入一个项目。
格式:对象.Items.Insert(序号, 添加项内容)(5)Items.Remove方法从列表框中删除指定的项。
格式:对象. Items.Remove (选项)。
例如:ListBox1.Items.Remove ("华成")(6)Items.RemoveAt方法格式:对象.RemoveAt(Index)从列表框中删除指定的项。
Index表示被删除项目在列表框中的位置,从0开始。
实验5参考答案

实验5参考答案实验5参考答案5-1.c:求具有10个元素的一维数组中正数、负数和零的个数。
#includestdio.hvoidmain(){inti,m,n,z,num[10];/*m、n、z为三个计数器*/m=n=z=0;for(i=0;ii++){scanf(%d,num[i]);if(num[i]0)m++;elseif(num[i] 0)n++;elsez++;}printf(m=%d,n=%d,z=%d\n,m,n,z);}5-2.c:输入10个数,用选择排序法由小到大排序并输出。
#includestdio.hvoidmain(){inti,j,p,q,s,a[10];printf(\ninput10numb ers:\nfor(i=0;ii++)scanf(%d,a[i]);for(i=0;ii++){p=i;q=a[i];for(j=i+1; jj++)if(qa[j]){p=j;q=a[j];}if(i!=p){s=a[i];a[i]=a[p];a[p]=s;}printf(% d,a[i]);}}5-3.c:输入10个数,用冒泡排序法由小到大排序并输出。
#includestdio.hvoidmain(){inta[10];inti,j,t;printf(input10numbers:\nfor(i=0;ii++)scanf(%d,a[i]);for(j=0;jj++) /*一共9趟,j为0~8*/for(i=0;ii++)/*i为0~8-j*/if(a[i]a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf(thesortednu mbers:\nfor(i=0;ii++)printf(%d,a[i]);printf(\n}5-4.c:教材P88第3题:从键盘上输入5行5列整型数组,并找出主对角线上元素的最大值及其所在行号。
#includestdio.hvoidmain(){inta[5][5],i,j,max,hh;/*hh用于存放最大值的行号*/for(i=0;ii++)for(j=0;jj++)scanf(%d,a[i][j]);max=a[0][0];hh=0;for(i= 1;ii++)if(maxa[i][i]){max=a[i][i];hh=i;}printf(最大值为:%d,行号为:%d\n,max,hh);}5-5.c:教材P88第5题:一个数如果恰好等于它的因子之和,这个数就称为完数,例如6=1+2+3。
山东大学汇编语言上机实验——实验五

子程序设计2.6显示学生名次表rank编制一个程序,要求接受键盘输入的一个班的学生成绩,并存放于一个50字的grade数组中,其中grade+i保存学号为I+1的学生成绩。
然后根据grade中的学生成绩,把学生成绩依次填入50字的rank数组中,其中rank+i的内容是学号为i+1的学生的名次。
再按学号顺序把名次从终端上显示出来。
本题要做的主要工作和例2.2的内容是完全一样的,只是增加了由用户键入学生成绩及输出学生名次两个部分的内容,因此这三个部分可以用子程序结构来完成。
子程序结构划分的层次图如图2.17所示,可以看出,main为主要模块,其下一层的三个模块为程序的三大部分。
现将各模块说明如下:1.模块名:main 为总模块输入:从键盘输入一个班的学生成绩输出:显示一个班的学生成绩功能:根据输入的学生成绩,计算并显示学生名次。
算法如下:一个学生名次等于成绩高于该学生的人数+1.2.模块名:input输入:以学号为序型键盘输入一个班的学生成绩。
各个成绩之间用逗号隔开,最后以回车符号结束。
输出:把一个班的学生成绩存入grade数组。
功能:接受一个班的学生成绩。
调用子模块decibin把键盘输入的一个十进制数转换为二进制数。
调用子模块crlf完成回车,换行功能。
3.模块名:rankp输入:从grade数组取得一个班的学生成绩。
输出:以学号为序计算出该班每个学生的名次存入rank数组。
功能:计算一个班的学生成绩。
算法为:一个学生的名次等于成绩高于该生的学生人数加1.4,。
模块名;output输入:把rank数组取得一个班的学生名次。
输出:把一个班的学生名次以学号为序在总端上显示出来。
功能:先是一个班的学生名次。
调用子模块decibin把键盘输入的一个十进制数转换为二进制数。
调用子模块crlf完成回车,换行功能。
5:模块名:decilin输入:从键盘输入一个十进制数。
输出:把该数转换成二进制数并存入BX寄存器中。
实验五 数组实验

实验五数组的使用一实验目的要求1 掌握数组的概念和使用方法。
2 掌握数组初始化的方法。
3学会字符数组和字符串的应用。
4 学会用数组名作函数的参数。
二有关概念1 只有静态数组和外部数组才能初始化。
2 引用数组时,对下标是否越界不作检查。
如定义int a[5];在引用时出现a[5],不给出错信息,而是引a[4]下面一个单元的值。
3 字符串放在字符数组中,一个字符串以‘/o’结束,有一些字符串函数如strcpy,strcmp,strlen等可以方便一进行字符串运算。
4 如有如下定义:char *str=“I love china”;表示 str是一个字符型指针变量,它的值是一个字符数据的地址。
不要认为str是字符串变量,在其中存放一个字串“I love china”。
5 用数组名作函数实参时,传到形参的是数组的首地址。
三实验内容和步骤1 定义三个数组int a[5];int b[2][2];char c[10];(1)分别在函数体外和函数体内对它们进行初始化,然后输出它们的值。
(2)在程序中再加一语句,输出a[5],b[2][2] ,分析结果。
(3)对C数组改为用赋值语句给各元素赋初值:c[0] ~ c[9]各元素分别为:…I‟, …‟, …a‟, …m‟, …‟, …b‟, …o‟, …y‟。
然后用printf(“%s”,c)输出字符串,分析结果。
参考程序如下:(1)main(){ int i,x,y;static int a[5]={1,2,3,4,5};static int b[3][2]={{3,4},{6,7},{9,5}}static char c[10]={ …i‟, …l‟, …p‟, …q‟, …k‟, …s‟, …d‟, …e‟, …a‟};for(i=0;i<5;i++)printf( “%5d”,a[i]);for(x=0;x<3;x++)for(y=0;y<2;y++)printf(“%5d”,b[x][y]);for(i=0;i<10;i++)printf(“%3c”,c[i]);}(2)结果无此值,在上面程序中要输出a数组第5个元素,和b数组的第3行第2例元素,应加此程序行:Printf(“%d”,a[4]);Printf(“%d”,b[2][1]);2 有一数组,内放10个整数,要求找出最小的数和它的下标。
实验五--数组--实验报告

实验五--数组--实验报告计算机科学与工程学院天津理工大学计算机科学与工程学院实验报告2018至2019学年第一学期课程名称程序设计(C语言)学号学生姓名班级级专业计算机科学与技术(合作)实验地点7-21实验项目数组实验时间批改意见成绩教师签字:实验(一))实验名称数组开发环境PC机,windows7操作系统开发工具VC6.0实验目的(11)掌握CC语言中一维数组、二维数组的定义方法;(22)掌握字符数组与常用字符串处理函数的使用;(33)掌握与数组有关的算法(如数组元素的排序);(44)进一步熟悉0VisualC++6.0开发环境下调试程序的基本步骤。
实验要求认真完成实验内容,编写程序代码;要求程序正确无误,并输出合理的实验结果;书写并提交实验报告。
实验内容(应包括实验题目、代码实现、编译、运行结果等,也可给出程序的算法描述、重点程序语句的注释等。
))(3)定义1个一维数组:intarr[20],然后从键盘输入20个整数,使用冒泡法编程将该数组从小到大进行排序,并将排序后结果打印在屏幕上。
提示:利用一个二重循环体实现冒泡排序(算法的基本思想参见教材P134)。
测试实例:10010-125-90907060300-250-7239482283159142-129-2453 9输出:-250-129-125-72-24-90102239486070839010014215930053 9实验代码:#includestdio.hvoidmain(){inta[20];inti,j,t;pri ntf(请输入20个数字:\nfor(i=0;ii++)scanf(%d,a[i]);printf(\nfor(j=0;j j++)for(i=0;i20-j;i++)if(a[i]a[i+1]){t=a[i];a[i]=a[ i+1];a[i+1]=t;}printf(\nfor(i=0;ii++)printf(%d,a[i]);printf(\n}编译结果:--------------------Configuration:06263-Win32De bug--------------------Linking...06263.exe-0error(s ),0warning(s)运行结果:经测试,该程序可以正常运行,没有错误。
实验五 参考答案

实验五字符数组(参考答案)1、设计程序sy5-1.c,编写程序实现对4个字符串的升序排序。
算法分析:4个字符串的升序排序,和4个整数的排序一样,可以用冒泡法,唯一不同的是在两两比较时要用字符串的比较函数,而在条件满足时,交换的三条赋值语句,同样需要用字符串的赋值函数。
参考答案:# include <stdio.h># include <string.h>void main(){char str[20],s[4][20];int i,j;printf("Input 4 strings:\n");for(i=0;i<4;i++)//输入字符串gets(s[i]); //gets函数的参数s[i],表示第i行的首地址,即给第i行赋值for(j=0;j<3;j++) //用冒泡法处理字符串的排序for(i=0;i<3-j;i++)if(strcmp(s[i],s[i+1])>0) //strcmp字符串的比较函数{ strcpy(str,s[i]); //strcmp字符串的比较函数strcpy(s[i],s[i+1]);strcpy(s[i+1],str);}printf("The sorted string:\n");for(i=0;i<4;i++)printf("%s\n",s[i]); //可以用puts(s[i])代替}运行结果:2、设计程序sy5-2.c,写一程序,要求将字符串a的第n个字符之后的内容由字符串b替代,a,b,n由运行时输入。
算法分析:要将字符串a的第n个字符之后的内容由字符串b替代,这时把字符串看成数组来处理,a的第n个字符之后即字符数组下标为i=n开始用字符数组b[0],b[1]------b[j]---来替代,直到b数组的‘\0’结束,注意这个循环没有写入b数组的’\0’,所以赋值结束后,还得给字符数组a[i]赋值为’\0’。
实验5数组--习题及答案

实验5 数组班级:学号:姓名:日期:一、实验目的(1)掌握一维数组和二维数组的定义、赋值和输入输出方法;(2)掌握字符数组和字符串函数的使用;(3)掌握与数组有关的算法(特别是排序算法)。
二、实验内容1.阅读下面程序,写出程序运行结果,并且上机进行验证。
(1) #include "stdio.h"void main(){int i,n[4]={0,0,0,0};for(i=1;i<4;i++){if (i==3) break;n[i]=n[i-1]+1;}printf("n[i-1]=%d n[i]=%d\n",n[i-1],n[i]);}(2)#include "stdio.h"void main(){char ch[]={'0','1','2','3','4','5','6','7','8','9'};int i=0,m=2,r,x=42; char b[80];while(x){r=x%m; x/=m;b[i++]=ch[r];}for(--i;i>=0;i--)printf("%c",b[i]);printf("\n");}(3)#include "stdio.h"void main(){int a[][3]={9,7,5,3,1,2,4,6,8};int i,j,s1=0,s2=0;for(i=0;i<3;i++)for(j=0;j<3;j++){if(i==j) s1=s1+a[i][j];if(i+j==2) s2=s2+a[i][j];}printf("s1=%d s2=%d",s1,s2);}(4)#include "stdio.h"void main(){int r[5]={1,2,3,4,5};int i,j,a[5][5];for(i=0;i<=4;i++){ for(j=i;j<=4;j++)a[i][j]=r[j-i];for(j=0;j<i;j++)a[i][j]=r[i-j];}for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%2d",a[i][j]);printf("\n");}}2.程序填空(根据题意在空白处填入适当的内容,使程序变得完整。
实验4、数组(有答案)

实验4、数组【实验目的】1 .掌握数组的定义、赋值和输人输出的方法;2 .学习用数组实现相关算法(如排序、求最大和最小值、有序数组的插入等)【实验内容】1 .程序填空(1)下面程序的功能为:输入10个数字到数组中,统计其中正数的个数并求和,完成以下的程序并运行出正确结果。
#i nclude <stdio.h>void main(){ int i,a[20],sum,co unt;sum=0;coun t=0;for(i=0;i<10;i++)/**************fo un d**************/sca nf( “ %d :' & a[i] );for(i=0;i<10;i++)if(a[i]>0) {co un t++;/**************fo un d**************/ sum+= a[i] ;} printf(} 完成以下的程序并运行出正确结果。
#i nclude <stdio.h>void mai n(){i nt a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int b[4][3],i,j;for(i=0;iv=2;i++)/**************fo un d**************/for( i=0;iv=3;i++ )/**************fo un d**************/ b[i][i]=a[i][j] ;prin tf( “ array b: \n “;for(i=0;i<=3;i++) n ”,sum,count);A= F 面程序的功能为:将 3行4列的矩阵转置,如:6 107 111 5 9A '2 6 103 7 114 8 124 8 12{for(j=0;j<=2;j++) printf( printf(}}2.程序改错(l) 阅读下面的程序,修改以下程序中的错误并上机运行。
实验五教案(含答案)

第五课教学内容:一维字符数组删除及统计类算法教学目的:掌握一维字符数组删除及统计类算法的考题教学内容:一、一维字符数组删除及统计类算法的考题特点此类算法多以填空题和程序设计题为考试形式。
常见考点1、在一维字符数组中删除指定的单个字符,删除符合某条件的多个字符。
2、统计一维字符数组中某个字符出现的次数,子串出现的次数。
二、课堂练习第一套1、程序填空题下列给定程序中,函数fun()的功能是:从字符串s 中,删除所有小写字母‟c‟。
试题程序:__1__<stdio.h> //# includevoid fun(char *s){ int i, j;for(i=j=0;__2__;i++) //s[i]!= '\0'if(s[i]!= 'c')__3__; //s[j++]=s[i];s[j]='\0';}main(){ char s[80];printf("\nEnter a string: "); gets(s);printf("The original string: "); puts(s);fun(s);printf("The string after deleted: ");puts(s);printf("\n\n ");}2、程序改错题给定程序modi.c 中函数fun 的功能是:删除字符串s 中的所有空白字符(包括Tab 字符、回车符及换行符)。
输入字符串时用'#'结束输入。
请改正程序中的错误,使它能输出正确的结果。
注意:不要改动main 函数,#include < string.h >#include < stdio.h >#include < ctype.h >fun ( char *p){ int i,t; char c[80];/************found************/For(i = 0,t = 0; p[i] ; i++) //forif(!isspace(*(p+i))) c[t++]=p[i];/************found************/c[t]="\0"; // c[t]= '\0';strcpy(p,c);}main( ){ char c,s[80];int i=0;printf("Input a string:");c=getchar();while(c!='#'){ s[i]=c;i++;c=getchar(); }s[i]='\0';fun(s);puts(s);}3、程序设计题1)规定输入的字符串中只包含字母和*号。
实验五 参考答案 计算机C语言

实验四参考答案(参考答案)(1) 设计程序sy5-1.c,从键盘上输入一个3行3列矩阵各个元素的值,输出其主对角线元素和反向对角线元素之和。
算法分析:对角线上的元素,1维和2维下标相同,反对角线元素,如果行下标为i,列下标就为2-i;参考答案:#include<stdio.h>int main(){int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};int i,j,sum=0;for(i=0;i<3;i++)sum=sum+a[i][i]+a[i][2-i]; //a[i][i]当前行的主对角线元素//a[i][2-i]当前行的反对角线元素printf("矩阵的正、反对角线元素之和为:%d\n",sum);return 0;}运行结果:(2) 设计程序sy5-2.c,找出一个3×4的矩阵中的最小值及其位置。
算法分析:首先把二维数组中的第一个数即a[0][0]看成最小值,然后逐行逐列的去遍历每个元素,逐一判断每一个元素是否比最小值还好小,如果是,就改写最小值,并记录他的下标。
参考答案:#include<stdio.h>#include<math.h>int main(){int a[3][4]={{10,21,41,5},{12,15,46,35},{40,21,26,30}};int i,j,row,colum,min;printf("数组a:\n");for(i=0;i<3;i++){ for(j=0;j<4;j++)printf("%5d",a[i][j]);printf("\n");}min=a[0][0];row=0;colum=0; //首先把第一个数a[0][0]看成最小数for(i=0;i<3;i++) //双重循环逐一遍历每个元素a[i][j]for(j=0;j<4;j++)if(min>a[i][j]) //如果当前值a[i][j]比最小值还要小{min=a[i][j];row=i;colum=j;} //用a[i][j]改写最小值,并记下他们的下标printf("矩阵中最小元素是:%d,行下标是:%d,列下标是%d\n",min,row,colum);return 0;}运行结果:(3) 设计程序sy5-3.c,定义一个3×3的二维数组,通过随机函数自动赋值。
实验5数组答案

实验5数组答案C语⾔程序设计实验报告实验五使⽤数组的程序设计班级学号姓名⼀、实验⽬的(1)掌握⼀维数组和⼆维数组的定义、赋值和输⼊输出⽅法。
(2)掌握字符数组的使⽤。
(3)掌握与数组有关的算法。
⼆、实验内容及步骤1、验证性实验输⼊已编好的源程序,然后进⾏编辑、编译、连接和运⾏,观察运⾏结果。
(1)某数列前两项为0,1,以后各项均为前相邻两项之和,输出该数列前20项。
#includemain(){long i,x[20];x[0]=0;x[1]=1;for(i=2;i<20;i++)x[i] =x[i-1]+x[i-2];for(i=0;i<20;i++)printf("% ld\t",x[i]);}输出结果:(2)从键盘输⼊N个⾃然数,然后按升序进⾏排列。
⽤“⽐较法”#include#define N 10main(){int a[N],t,i,j;for(i=0;iscanf ("%d", &a[i]);for(i=0;ifor(j=i+1;jif (a[j]for(i=0;iprintf(" %d",a[i]);}输出结果:2、完成以下程序,并进⾏调试(1)从键盘输⼊⼀个班(全班最多不超过30⼈)学⽣某门课的成绩,当输⼊成绩为负值时,输⼊结束,分别统计下列内容:a)统计不及格⼈数并打印不及格学⽣名单;b)统计成绩在全班平均分及平均分之上的学⽣⼈数并打印其学⽣名单;c)统计各分数段的学⽣⼈数及所占的百分⽐程序代码:#includeint F1(int i,int sum,int *a,int *counter){int j;printf("不及格学⽣名单:");for(j=1;j{sum+=a[j];if(a[j]<60){printf("%3d",j);counter[0]++;}}return sum;}F2(int i,float average,int *a,int *counter){int j;printf("average=%f,成绩⼤于等于平均分的学⽣名单:",average);for(j=1;j{if(a[j]>=average){printf("%3d",j);counter[11]++;}}}F3(int i,int *a,int *counter){int j;for(j=1;j{if(a[j]<=10) counter[1]++;else if(a[j]>10&&a[j]<=20) counter[2]++;else if(a[j]>20&&a[j]<=30) counter[3]++;else if(a[j]>30&&a[j]<=40) counter[4]++;else if(a[j]>40&&a[j]<=50) counter[5]++;else if(a[j]>50&&a[j]<=60) counter[6]++;else if(a[j]>60&&a[j]<=70) counter[7]++;else if(a[j]>70&&a[j]<=80) counter[8]++;else if(a[j]>80&&a[j]<=90) counter[9]++;else if(a[j]>90&&a[j]<=100) counter[10]++;}printf("各分数段⼈数: 百分⽐:\n");for(j=1;j<=10;j++)printf("%d %f\n",counter[j],(float)(counter[j])/(i-2)); } main(){static int a[31],counter[12],flag;int i=1,j=1,sum=0;float average;printf("请输⼊学⽣成绩并以负值结束: ");do{scanf("%d",&a[i]);if(a[i]<0)flag=1;i++;}while(flag==0);sum=F1(i,sum,a,counter);printf("不及格⼈数=%d\n",counter[0]);average=(float)sum/(i-2);F2(i,average,a,counter);printf("⼤于等于平均分⼈数=%d\n",counter[11]);F3(i,a,counter);}运⾏结果:(2)编写⼀个程序,利⽤字符数组实现两个字符串的⽐较。
C语言实验报告实验五参考答案

C语言实验报告实验五参考答案实验五一维数值数组(参考答案)1、设计程序sy5-1.c,计算n门课程的平均分。
例如:若有5门课程的成绩是:90.5.72.80.61.5.55,则平均分是:71.80.算法分析:先求n门课的成绩总和,(累加求和),再用累和除以课程数。
参考答案:includevoid main()double score[30]。
sum=0,aver;int n,i;printf("Inputn:");scanf("%d",&n);printf("请依次输入%d门课程的成绩",n);for(i=0;i<n;i++)scanf("%lf",&score[i]);sum=sum+score[i];aver=sum/n;printf( "\nAverage scoreis: %5.2f\n"。
aver);运行结果:2、设计步伐sy5-2.c,对输入的10个整数按倒序寄存后输出成效。
算法阐发:利用“半数交流”算法,最前面的元素和末了面的元素交流,逐步向中央挨近。
可利用两个下标变量i和XXX。
参考答案:includeint main()int a[10]={1,2,3,4,5,6,7,8,9,10};int i,j,t;for( i=0,j=9.i<j。
i++,j--)//逐一向中,交换。
直到已没有元素没交换t=a[i]。
a[i]=a[j]。
a[j]=t;}// a[i]-数组前端的数,a[j]-数组后端的数printf("交流后数组元素是:");for(i=0;i<10;i++)printf("%5d",a[i]);//%5d,5透露表现宽度printf("\n");//输出完所有的数后换行return 0;运行结果:3、设计程序sy5-3.c,输入10个整数,找出其中的最大数及其所在的下标。
实验5数组1答案

实验5数组1答案实验数组1实验目的:1、进一步掌握循环结构的程序设计2、掌握在循环结构里面使用break、continue3、掌握一维数组的定义与使用实验内容:一、观察下列代码(有语法问题自己解决)1、利用无限循环输入数据,直到条件满足利用break跳出循环:#includeusing namespace std;int main( ){int x,sum=0;while(1){cin >> x;if(x <= 0)break;sum += x;}return 0;}2、利用continue语句实现输出1-100之间的偶数:#includeusing namespace std;int main(){for (int i = 0;i <= 100; i++){if (i % 2 != 0)continue;cout << i << ' ';}return 0;}二、编码训练1、利用break语句写一程序:循环从键盘输入数据并累加起来,直到输入的数为零时结束循环,打印累加结果。
(参考前面第1题) #includeusing namespace std;int main( ){int x,sum=0;while(1){cin >> x;sum += x;if(x == 0) break;}cout << "The sum is " << sum << endl;return 0;}2、利用continue语句写一程序:输出1-20之间不能被3整除的数。
(参考前面第2题)#includeusing namespace std;int main(){for (int i = 1;i <= 20; i++){if (i % 3 == 0)continue;cout << i << ' ';}return 0;}3、实现求6位学生c++的平均成绩。
实验(6)-数组-参考答案

实验(6)-数组-参考答案C语⾔程序设计实验教学(6)【实验⽬的】数组的应⽤是很重要的⼀章。
通过实验掌握⼀维数组的主要应⽤,并理解数组的存储。
对⼆维数组的处理要⽐较熟悉。
【实验要求】⼀维数组的题⽬要求全⾯掌握,应⽤循环结构完成⼀维数组的输⼊、处理和输出。
⼆维数组能够完成简单的数据处理和应⽤。
【实验课时】8.0【实验内容】⼀维数组:1、定义⼀个可以存放10个元素的int数组a,输⼊10个数,并逆序输出。
#include#includevoid main( ){int a[10], i; clrscr();printf("Please input array a :");for(i=0;i<10;i++)scanf("%d", &a[i]);/* 由键盘逐次输⼊值赋予数组各元素*/for(i=9;i>=0;i--) /* 变量i递减控制着数组元素倒序输出*/ printf("%5d", a[i]);}2、⽤数组来保存Fibonacci数列前20项数值,以每5个数据为⼀⾏进⾏输出。
#include#includevoid main( ){int i; long f[20]; clrscr();f[0]=1;f[1]=1;for(i=2;i<20;i++)f[i]=f[i-1]+f[i-2];for(i=0;i<20;i++){if(i%5==0) printf("\n");printf("%10ld",f[i]);}}3、统计具有10个元素的⾃然数数组num中的奇数个数。
#include#includevoid main( ){int i,num[10],count=0; clrscr();for(i=0;i<10;i++){printf("enter NO %d : ",i+1);/*给予输⼊提⽰*/scanf("%d",&num[i]);if(num[i]%2!=0) count++;}printf("Count is:%d\n",count );}4、计算整数数组a中的最⼤值及其所在的下标。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验数组1
实验目的:
1、进一步掌握循环结构的程序设计
2、掌握在循环结构里面使用break、continue
3、掌握一维数组的定义与使用
实验内容:
一、观察下列代码(有语法问题自己解决)
1、利用无限循环输入数据,直到条件满足利用break跳出循环:
#include <iostream>
using namespace std;
int main( )
{
int x,sum=0;
while(1)
{
cin >> x;
if(x <= 0)
break;
sum += x;
}
return 0;
}
2、利用continue语句实现输出1-100之间的偶数:
#include <iostream>
using namespace std;
int main()
{
for (int i = 0;i <= 100; i++)
{
if (i % 2 != 0)
continue;
cout << i << ' ';
}
return 0;
}
二、编码训练
1、利用break语句写一程序:循环从键盘输入数据并累加起来,直到输入的数为零时结束循环,打印累加结果。
(参考前面第1题)
#include<iostream>
using namespace std;
int main( )
{
int x,sum=0;
while(1)
{
cin >> x;
sum += x;
if(x == 0) break;
}
cout << "The sum is " << sum << endl;
return 0;
}
2、利用continue语句写一程序:输出1-20之间不能被3整除的数。
(参考前面第2题)
#include<iostream>
using namespace std;
int main()
{
for (int i = 1;i <= 20; i++)
{
if (i % 3 == 0)
continue;
cout << i << ' ';
}
return 0;
}
3、实现求6位学生c++的平均成绩。
(参考案例书的P47案例1)
#include<iostream>
using namespace std;
int main()
{
double score[6];
double avg = 0,sum = 0;
for (int i = 0;i <= 5; i++)
{
cin >> score[i];
sum = sum + score[i];
}
avg = sum/6;
cout << "平均成绩是:" << avg;
return 0;
}
4、利用一维数组编写一个程序:从键盘上输入10个float类型的数据,找出它们的最大值和最小值,并输出(定义两个变量分别保存最大值和最小值)。
(参考案例书的P47案例1)#include<iostream>
using namespace std;
int main()
{
float numb[10];
float min = 0.0,max = 0.0;
int i;
for (i = 0;i <= 9; i++)
{
cin >> numb[i];
}
min = numb[0];
max = numb[0];
for (i = 1;i <= 9; i++)
{
if (numb[i] >= max ) max = numb[i];
if (numb[i] < min ) min = numb[i];
}
cout << "最大值是:" << max << endl;
cout << "最小值是:" << min << endl;
return 0;
}
三、案例训练
1、案例书的P49案例2
2、案例书的P53案例4
3、实现n个数(可以是整数或实数)由大到小进行排序
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
const int N = 10;
int a[N] ;
int t = 0;
cout<<"请输入10个数:\n";
for(int i = 0 ; i < N ; i++)
cin>>a[i];
cout<<"\n";
for(int i = 1;i <= N-1;i++)
{
for(int j = 0;j < N-i;j++)
{
if(a[j] < a[j+1])
{ t = a[j];
a[j] = a[j+1];
a[j+1]=t;
}
}
}
cout << "\n排序后为:\n";
for(int i = 0; i < N; i++)
cout << setw(4) << a[i];
cout << "\n";
return 0;
}
4、(谁是小偷)警察局抓了a、b、c、d四名偷窃嫌疑嫌疑犯,其中有一人是小偷。
审问中:
a说:“我不是小偷。
”
b说:“c是小偷。
”
c说:“小偷肯定是d。
”
d说:“c冤枉人。
”
现在已经知道四个人中有三人说了真话,一人说的是假话。
问到底谁是小偷?,
分析:设1表示是小偷,0表示不是小偷,显然a、b、c、d的取值是0或1,可以用四重循环穷举所有可能。
条件:(1)四人中只有一个为小偷,即a+b+c+d==1;(2)四人说的话,可以用关系表达式表示,关系表达式的值为1表示说真话,0表示说假话,四个人中三人说了真话,即四个关系表达式的和为3。
同时满足这两个条件的即为解。
#include<iostream>
using namespace std;
int main()
{
int a,b,c,d;
for (a=0; a<=1; a++)
for (b=0; b<=1; b++)
for (c=0; c<=1; c++)
for (d=0;d<=1;d++)
//三人说真话,只有一个人是小偷
if (((a!=1)+(c==1)+(d==1)+(d!=1))==3 && (a+b+c+d==1))
{
if (a==1) cout<<"a是小偷"<<endl;
if (b==1) cout<<"b是小偷"<<endl;
if (c==1) cout<<"c是小偷"<<endl;
if (d==1) cout<<"d是小偷"<<endl;
}
}。