文档视界 最新最全的文档下载
当前位置:文档视界 › 实验4数组(答案解析)

实验4数组(答案解析)

实验4数组(答案解析)
实验4数组(答案解析)

实验四数组

实验课程名:高级语言程序设计4 数组

专业班级:学号:姓名:实验时间:2016年4月27日实验地点:K4 指导教师:

(3)结果分析:当i能被3整除时,就换一次行。

(二)实验任务2

(1)程序代码:#include

void main( )

{

int i,a[5],sum=0;

for(i=0;i<=4;i++)

scanf("%d",&a[i]);

for(i=0;i<=4;i++)

sum+=a[i];

printf("sum=%d\n",sum);

}

(2)程序运行结果:

(3)程序分析:使用for循环依次输入5个数,并使5个数相加。

(三)实验任务3

(1)程序代码:#include

int main( )

{ int i,j,row=0,colum=0,max;

int a[3][4] = {{1,2,3,4}, {9,8,7,6}, {-10,10,-5,2}};

max=a[0][0];

for(i=0;i<=2;i++)

for (j=0;j<=3;j++)

if(a[i][j]>max)

{max=a[i][j];

row=i;

colum=j;

}

printf(" Max=%d, Row=%d, Colum=%d\n", max, row, colum);

return 0;

}

(2)程序运行结果:

(3)程序分析:分别将这12个元素同max相比较,当某个元素的值大于max时,则将此元素的值赋值给max,最后输出max及最大值的下标。

(四)实验任务4

(1)程序代码:#include

void main( )

{ int i, x, a[10]={1,2,3,4,5,6,7,8,9,10};

scanf("%d",&x); /*输入x变量的值*/

for ( i=0; i<10; i++ )

printf("%4d",a[i]);

printf("\n");

for(i=0;i<10;i++) /* 循环查找与x相等的元素*/

if ( x==a[i] )

printf("%d\n",i); /* 输出查找结论,输出下标值*/

else printf("Not found %d\n",x);

}

(2)运行结果:

(3)程序分析:通过for循环查找与x相等地元素。

(五)实验任务5

(1)程序代码:# include

#define N 11

(3)程序分析:使用起泡算法将这10个数由大到小的顺序排列出来,后使用for循环语句把插入元素后的数组由大到小的顺序排列。

(六)实验任务6

(1)程序代码:#include

int main()

{

int a[10];

int i,k;

printf("请输入10个整数:");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

k=0;

for(i=1;i<10;i++)

if(a[k]

k=i;

for(i=k;i<9;i++)

a[i]=a[i+1];

for(i=0;i<9;i++)

printf("%d ",a[i]);

printf("\n");

}

(2)运行结果:

(3)程序分析:该程序先将输入的10个数有小到大的顺序列出来,最后输出前9个数。

(七)实验任务7

(1)程序代码:#include

void main()

{ float x[1000], sum=0.0, ave, a;

int n=0, i;

printf ("Enter mark : \n");

scanf("%f", &a);

while (a>=0.0 && n<1000)

{ sum+=a;

x[n]= a ;

n++;

scanf("%f", &a);

}

ave= sum/n ;

printf ("Output : \n");

printf ("ave = %f\n", ave);

for (i=0; i

if ( x[i]

printf("%f\n", x[i]);

}

(2)运行结果:

(3)程序分析:输入若干个数,以负数为结束标志。使用while选择语句,求出输入的整数的平均值。

(八)实验任务8

(1)程序代码:#include

void main()

{

int i,j,a[6][6];

for(i=0;i<6;i++)

{

a[i][0]=1;

a[i][i]=1;

}

for(i=2;i<6;i++)

{

for(j=1;j<=i-1;j++)

a[i][j]=a[i-1][j-1]+a[i-1][j];

}

for(i=0;i<6;i++)

{

for(j=0;j<=i;j++)

printf("%d ",a[i][j]);

printf("\n");

}

}

(2)运行结果:

(3)程序分析:这可以看做一个6*6的矩阵,通过使用数组级for循环语句将杨辉三角表示出来。

(九)实验任务9

(1)程序代码:#include #include

void main()

{ char a[10],b[10];

int c,d,k,ch;

scanf("%s",&a);

scanf("%s",&b);

printf("a=%s,b=%s\n",a,b);

c=strlen(a);

d=strlen(b);

if(c>d)

{printf("a=%s\n",b);

printf("b=%s\n",a);}

else

{printf("a=%s\n",a);

printf("b=%s\n",b);}

}

(2)运行结果:

(3)程序分析:运行程序的时候先输入country,再输入side,经过程序的运行,实现了将side连接到country的后面形成新的单词countryside,即实现了将第二个字符串连接到第一个字符串的后面从而·形成一个新的字符串的功能。

(十一)实验任务11

(1)程序代码:#include "stdio.h"

void main ()

{

char str1[100],str2[100];

int i,s;

printf("\n Input string 1:\n");gets(str1);

printf("\n Input string 2:\n");gets(str2);

i=0;

while((str1[i]==str2[i])&&(str1[i]!=" "))

i++;

s=str1[i]-str2[i];

printf("%d\n",s);

0020}

(2)运行结果:

(3)程序分析:先输入abcdefg,后输入abceef,让后求出两个字符数组中第一个不同元素的ASCII码之差。

(十二)实验任务12

(1)程序代码:#include

#include

void main()

{

int num[26],i;

char c;

for(i=0;i<26;i++)

num[i]=0;

while ((c=getchar())!='#') /* 统计从终端输入的大写字母个数*/

if (isupper(c)) num[c-65]+=1; //检查ch是否为大写字母//

for (i=0;i<26;i++) /* 输出大写字母和该字母的个数*/

if (num[i])

printf("%c:%d\n",i+65,num[i]);

}

(2)运行结果:

(3)程序分析:

(十三)实验任务13

(1)程序代码:#include

#include

void main()

{

char a[50][100]; //字符数组a[50][100]//

int i=0,max=0,k;

printf("请输入字符串,每次输入完成后请按一次“Enter”:\n");

while(gets(a[i])&&strcmp(a[i],"stop")) //比较两个字符串//

{

if(strlen(a[i])>max) //统计字符数组中字符的个数//

{max=strlen(a[i]);k=i;}

i++;}

printf("最长的字符串是:\n%s\n",a[k]);

}

(2)运行结果:

(3)程序分析:运用while循环及if条件语句,测出每次输入字符串的长度,并比较他们的大小,最后输出最长的字符串。

(十四)实验任务14

(1)程序代码:#include

#include

void insert(char *p1,char *p2,char pos)

{

int m,n,i;

char temp[20];

m=strlen(p1);

n=strlen(p2);

for(i=0;i

{

if(pos==*(p1+i))

{

strcpy(temp,p1+i+1);

*(p1+i+1)='\0';

strcat(p1,p2);

strcat(p1,temp);

puts(p1);

break;

}

}

}

void main()

{

char s1[20], s2[20];

char pos;

printf("Please input s1:");

gets(s1);

printf("Please input s2:");

gets(s2);

printf("Please input pos:");

pos=getchar();

putchar(pos);

insert(s1,s2,pos);

}

(2)运行结果:

(3)程序分析:通过使用strcpy函数把str2指向的字符串复制到str1中1去。使用strcat 函数把字符串str2接到str1后面,str1后面的’\0’被取消。

三、实验小结

知道strcat、strcpy及strlen等函数的意义及用法。

指导教师批阅及成绩

实验4 数组答案

实验四数组 实验课程名: 高级语言程序设计4 数组 专业班级:学号:姓名: 实验时间:2016年4月27日实验地点:K4 指导教师: 一、实验目的及要求 1.掌握一维数组与二维数组的定义、赋值与输入输出的方法; 2.掌握字符数组与字符串函数的使用; 3.掌握与数组有关的算法(特别就是排序算法)。 二、实验任务: (一)(1)程序代码:#include #define N 10 void main( ) { int i,a[N]; float av=0; for(i=0;i

(3)结果分析:当i能被3整除时,就换一次行。 (二)实验任务2 (1)程序代码:#include void main( ) { int i,a[5],sum=0; for(i=0;i<=4;i++) scanf("%d",&a[i]); for(i=0;i<=4;i++) sum+=a[i]; printf("sum=%d\n",sum); } (2)程序运行结果: (3)程序分析:使用for循环依次输入5个数,并使5个数相加。 (三)实验任务3 (1)程序代码:#include int main( ) { int i,j,row=0,colum=0,max; int a[3][4] = {{1,2,3,4}, {9,8,7,6}, {-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for (j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf(" Max=%d, Row=%d, Colum=%d\n", max, row, colum); return 0; }

Java语言程序设计实验四 方法及数组实验报告

**大学 Java语言程序设计实验报告

四、实验步骤: 1: import java.util.Scanner; public class sy41 { public static void main(String[] args) { // TODO Auto-generated method stub int t,bbk=0; int []a; a=new int[10]; Scanner chm=new Scanner(System.in); System.out.println("请输入十个数"); for(int i=0;i<10;i++) { a[i]=chm.nextInt(); } System.out.println("请输入要找的数"); t=chm.nextInt(); for(int j=0;j<10;j++) { if(t==a[j]) bbk=1; } if(bbk==1) System.out.println("有"); else System.out.println("无"); } } 2: package syyyy; import java.util.*; class first {

System.out.println("输出排序前"); f.printarray(a); f.sort(a); System.out.println("输出排序后"); f.printarray(a); f.delelement(a, 2); System.out.println("输出删除第2个数后"); f.printarray(a); } } 3): import java.util.Scanner; public class syyyyyyyy43 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner bbk=new Scanner(System.in); System.out.println("请输入一个十进制数:"); int a=bbk.nextInt(); int pok=a/2; int shu[]=new int [pok+1]; if(pok<3000){ if(a%2==0){ shu[0]=1; System.out.print(shu[0]); for(int i=1;i

C++上机实验报告实验四

实验四数组、指针与字符串 1.实验目的 1.学习使用数组 2.学习字符串数据的组织和处理 3.学习标准C++库的使用 4.掌握指针的使用方法 5.练习通过Debug观察指针的内容及其所指的对象的内容 6.联系通过动态内存分配实现动态数组,并体会指针在其中的作用 7.分别使用字符数组和标准C++库练习处理字符串的方法 2.实验要求 1.编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。 2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。 3.编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。 4.使用string类定义字符串对象,重新实现上一小题。 5.定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。实现并测试这个类。 6.定义包含5个元素的对象数组,每个元素都是Employee类型的对

象。 7. (选做)修改实验4中的选做实验中的people(人员)类。具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。其中“出生日期”定义为一个“日期”类内嵌对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中定义people类的对象数组,录入数据并显示。 3.实验内容及实验步骤 1.编写矩阵转置函数,输入参数为3*3整形数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。程序名:lab6_1.cpp。 2.改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。通过Debug观察指针的内容及其所指的对象中的内容。程序名:lab6_2.cpp。 3.编程实现两字符串的连接。定义字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。程序名:lab6_3.cpp。用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。

实验4-数组

数组 一维数组 1. 用Array函数生成一个包含10个整数的一维数组,并在窗体上输出,然后分别统计其中正数之和与负数之和,运行效果如图所示。 2. 随机生成10个两位正整数,求其中的最大值和平均值,并将结果显示出来,运行效果如图所示。 3. 实现以下程序功能:程序运行后,在四个文本框中各输入一个整数。然后单击命令按钮,即可使数组按升序排序,并在文本框中显示出来。提示:可用array函数生成数组。

二维数组 1. 设有一个二维数组A(5,5),给所有数组元素赋值为1-9之间的随机整数,试计算: ●所有元素之和。 ●所有靠边元素之和。 ●正对角线上元素之和。 2. 设有一个二维数组A(5,5),试计算矩阵第三行各项的和,并在窗体上显示出来。 3. 设有一个二维数组A(5,5),试找出正对角线上最大的值。 4.产生一个二维数组A(5,5),要求中心位置值为9,对角线位置值为1,其余位置值为0。 5.设有一个二维数组A(4,4),请交换其中的第二列和第四列,并显示。

6. 实现以下程序功能:运行程序时,随机产生一个4行4列的二维数组,单击“计算”命令按钮时,将统计矩阵两个对角线的元素中能被3整除的个数,统计结果显示在标签lblfirst中;同时计算矩阵主对角线的元素之和,计算结果显示在标签lblSecond中。

列表框和组合框 1. 设在窗体中有一个名称为List1的列表框,其中有若干项目。要求选中一项后单击Command1按钮,就删除选中的项,运行效果如图所示。 点击前选中”北京”点击按钮后删除 2. 窗体上有一个组合框,其中已输入了若干项目。程序运行时,单击其中一项,即可以把该项与上面的一项交换,运行效果如图所示。 点击前选中”重庆”点击后交换 3.有10位同学的VB课程的期末成绩,信息如下:82、75、91、65、57、44、78、64、95、62,请将他们的信息保存到数组中,显示在列表框中,在“优秀”、“通过”和“不通过”三个分数段的人数进行统计。其中85分以上(含85分)为“优秀”,60-85分之间(含60分)为“通过”, 60分以下的为“不通过”。 4. 实现以下程序功能:单击“生成”按钮,随机生成一个由100个2位正整数组成的数组a,同时显示在Text1文本框中;单击“分组”按钮,则将数组a中所有3的倍数的元素存入数组b中,并对数组b中的元素从小到大排序后显示在文本框Text2中。

C语言程序设计C语言实验4_知识点综合应用

实 验 报 告 四 (四学时) 一【实验目的】 (1)综合运用顺序结构、选择结构、循环结构进行程序设计 (2)运用控制结构解决实际问题 (3)综合应用数组、函数等知识。 (4)编程求解常用算法。 二【实验内容】 【实验1】 要求:编写程序,其功能是:计算 6210! !!21)(-<++++=n x n x x x x f n n 直到 。若x=2.5,则输出s=12.182494。 实验代码及结果: 【实验2】 要求:36块砖,36人搬,男搬4,女搬3,两个小孩抬1砖,要求一次搬完,问男、女和小孩各若干? 提示:运用穷举法解决问题(循环嵌套是穷举法解决问题的常用方法) 实验代码及结果:

【实验3】 要求:定义一个N行N列的二维整型数组,使数组左下三角元素中的值乘以n 。例如:若n的值为3,a数 组中的值为 ? ? ? ? ? ? ? 6 5 4 8 3 2 7 9 1 则返回主程序后a数组中的值为 ? ? ? ? ? ? ? 18 15 12 8 9 6 7 9 3 算法分析: 1、定义N行N列的二维数组,并手动为数组元素赋值 注意:注意数组维数不能为变量,但可以用宏定义的方式来进行数组维数的定义,例如:在头文件前进行宏定义#define N 3,程序中定义二维数组 int num[N][N]; 2、选择二维数组中的左下三角元素,并改变三角元素的值 3、以N行N列的形式输出二维数组,要求每输出N个数据,输出一个回车换行符 实验代码及结果: 【实验4】 掌握字符串操作,编写函数,完成以下功能: 将s所指字符串中下标为偶数的字符去掉,串中剩余字符形成的新串放在t所指数组中。例如,当s所指字符串中的内容为:"ABCDEFGHIJK",在t所指数组中的内容应是:"BDFHJ"。 算法分析: (1)输入字符串 (2)定义存放新字符串的变量t,字符串长度至少为s长度的一半; (3)把字符串s对应位置上的字符赋值给变量t (4)运用循环结构为字符串t赋值,考虑t数组的下标应从0开始,到s长度的一半(可通过调用strlen 函数获取字符串s的长度); (5)输出字符串t 实验结果:

实验4-循环与数组

VB程序设计实验四 实验目的 ●掌握循环嵌套 ●掌握一维数组和二维数组的操作 实验内容 一、单选题(答案填写在“”实验4答题卡.xlsx文件中) 1.数组具有相同的_____________。 A.下标 B.类型 C.数值 D.存放地址 2.重定义数组大小的语句是______________。 A.Dim语句 B.ReDim语句 C.Static语句 D.Public语句 3.使用Dim A(100) As Integer 语句声明了数组A,其下标的取值范围为____________。 A.0~100 B.1~100 C.0~99 D.1~99 4.若使用Dim A(100) As Integer 语句声明了数组A,下列引用错误的是___________。 A.A(0)=2 B.A(1)= -28 C.A(56)= A(-56) D.A(100)=A(0)+A(55) 5.如果要对已经声明的数组重新定义大小,并保留原有数据,可使用语句___________。 A.Dim B.ReDim C.Dim Preserve D.ReDim Preserve 6.对于Integer 类型的数组,如果没有赋值,则所有元素的值为____________。 A.空 B.0 C.1 D.最大数 7.执行重定义数组大小语句ReDim A(UBound(B))后,A数组的上界为______________。 A.B数组的上界 B.B数组的上界+1 C.B数组的上界- 1 D.不确定 8.下列数组声明语句中正确的是______________。 A.Dim A(9) As Single ={1,2,3,4,5,6,7,8,9,10} B.Dim A() As Single ={1,2,3,4,5,6,7,8,9,10} C.DimA() As Single ={1,”abc”,”ccc”,4,5,6,7,8,9,10} D.Dim A( , ) As Single ={1,2,3,4,5,6,7,8,9,10} 9.若有声明Dim a(2 ,3) as Integer,则数组a共有元素个。 A.12 B.30 C.16 D.4 10.下列程序的输出结果是______________。 Dim A() As Integer ={1,2,3,4,5,6,7} For i=0 to UBound(A) A(i)= A(i)* A(i) Next i MsgBox (A(i)) A.49 B.0 C.不确定 D.程序出错 11.关于数组的声明,正确的是__________。 A.Dim a(5) As Integer = {1,2,3,4,5,6} B.Dim a(1,6) As Integer = {1,2,3,4,5,6} C.Dim a( ) As Integer = {1,2,3,4,5,6} D.Dim a(1 to 6) As Integer = {1,2,3,4,5,6}

实验四 数组及其字符串的处理

实验四数组及其字符串的处理 1.输入一串英文字母,统计每个字母(不区分大小写)出现的次数。(输 出统计结果时一律显示为小写字母) 如输入:Good 则输出:字母d有1个 字母g有1个 字母o有2个 请根据提示填空,使程序实现相应功能。 #include main() { char ch[10000]; //用于保存输入的字母串 int nnum[26]=【1】;/* 赋初值,使各元素值为0 nnum用于存储各字母出现的次数, 因字母表共有26个字母,因此元素个数为26 */ int i,j; printf("请输入一串字母\n"); scanf("%s",【2】);//读取字符串 i=0;//变量i用于遍历整个字符串各元素,初值为0,表示从字符数组首元素开始 while(【3】) //依次读取各元素,直至遇到字符串结束符’\0’ { j=(ch[i]>=65&&ch[i]<=90)?ch[i]-65:ch[i]-97; /*若输入为字母,则用j 保存其在字母表中的位 次*/ if (【4】)nnum[j]++;//若j值不超限,则将该字母累计数加1 【5】;// 改变i值,换至下一个元素 } for(i=0;i<26;i++) if(nnum[i]!=0) printf("字母%c有%d个\n",97+i,【6】); //按题目要求输出结果 return; } 编程题 2.输入10个整数存入数组,找出其中的最大数及其位置。 (位置从0开始编号)

3.求裴波那契数列(1 1 2 3 5 8 13 21 34……)的前18项。 4.求字符串长度(实现strlen 函数的功能) 提示:可参考第1题。 5.输入一个5*5的矩阵(#define N 5),求 (1)所有元素的和 (2)主对角线元素之和 (3)最大值及最小值所在位置 #include main() { double mat[5][5]; int i,j; 【此处补充定义其它所需变量】 for(i=0;i<5;i++) for (j=0;j<5;j++) scanf("%lf",&mat[i][j]); 【完成其余代码,实现该题(1)(2)(3)的功能】 return; }

实验四 动态显示与矩阵键盘的编程和综合应用设计(学生版)

实验四综合应用设计——数码管动态显示与矩阵键盘的编程 一、实验目的: 1、掌握单片机I/O技术和程序设计等综合知识。 2、了解矩阵式键盘的内部结构和数码管显示的基本原理,掌握至少一种常用的按键识别方法。 3、熟练掌握数码管动态显示和矩阵键盘识别的综合应用。 二、实验内容: 设计一个矩阵键盘的识别和动态显示综合的系统,控制8个8段数码管动态扫描显示4*4矩阵键盘上按下的按键所对应的值。 三、实验要求: 给定一个4*4的矩阵键盘,16个按键对应显示0123456789ABCDE,第1次按下某按键在第一个8段数码管上显示对应的值,第2次在第二个数码管上显示,以此类推,第9次又在第一个数码管上显示,以此循环下去。其中ABCDE在数码管上无法表达,可以用其它代替,例如:B用8表示,D用0表示,E用H表示等。 四、实验设备及实验耗材: 计算机一台,W A VE6000软件模拟器,完成ISP下载的XLISP软件,XL1000单片机综合仿真实验仪一台(8个8段数码管,4*4矩阵键盘一个,89C51一片,9针对9针的串口线一条,USB电缆一条) 五、实验基本原理与方法: 查阅相关资料掌握矩阵式键盘的内部结构,8段数码管动态显示原理和常用的按键识别方法,建议使用按键识别方法中最常用的“行扫描法”编写程序。结合动态显示技术和矩阵键盘识别技术。 六、实验方案设计: 1、采用哪些I/O口完成通信,采用何种按键识别的方法,如何综合动态显示技术和矩 阵键盘识别技术。 2、说明该程序的功能。 3、硬件连接原理图。 七、实验步骤: 1.弄清实验内容和实验要求。 2.学习相关理论知识,提出实验方案,画出程序流程图。

实验4数组的应用

(1)有一列乱序的字符,‘a’、‘d’、‘m’、‘z’、‘h’、‘c’、‘o’,排序并按照英文字母表的逆序输出。 解:按照字母表排序也就是按照ASCLL码值进行排序,只需要定义一个String 型数组应用Arrays.sort函数进行排序,然后进行输出就可以了。 package test4; import java.util.Arrays; public class test4_a { public static void main(String[] args) { // TODO Auto-generated method stub String[] sores={"a","d","m","z","h","c","o"}; int i,j; j=sores.length; Arrays.sort(sores); for(i=j-1;i>=0;i--) System.out.print(sores[i]+" "); } } (2)编写一个程序,提示用户输入学生数量、各自的姓名和他们的成绩,并按照成绩的降序来打印学生的姓名。 package test4; import java.util.Scanner; class Student{ private String name; private double score; public void setName(String name){ https://www.docsj.com/doc/2316401642.html,=name; } public String getName(){ return https://www.docsj.com/doc/2316401642.html,; } public void setScore(double score){ this.score=score; } public double getScore(){ return score; } }

实验4数组(答案解析)

实验四数组 实验课程名:高级语言程序设计4 数组 专业班级:学号:姓名:实验时间:2016年4月27日实验地点:K4 指导教师:

(3)结果分析:当i能被3整除时,就换一次行。 (二)实验任务2 (1)程序代码:#include void main( ) { int i,a[5],sum=0; for(i=0;i<=4;i++) scanf("%d",&a[i]); for(i=0;i<=4;i++) sum+=a[i]; printf("sum=%d\n",sum); } (2)程序运行结果:

(3)程序分析:使用for循环依次输入5个数,并使5个数相加。 (三)实验任务3 (1)程序代码:#include int main( ) { int i,j,row=0,colum=0,max; int a[3][4] = {{1,2,3,4}, {9,8,7,6}, {-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for (j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf(" Max=%d, Row=%d, Colum=%d\n", max, row, colum); return 0; } (2)程序运行结果:

(3)程序分析:分别将这12个元素同max相比较,当某个元素的值大于max时,则将此元素的值赋值给max,最后输出max及最大值的下标。 (四)实验任务4 (1)程序代码:#include void main( ) { int i, x, a[10]={1,2,3,4,5,6,7,8,9,10}; scanf("%d",&x); /*输入x变量的值*/ for ( i=0; i<10; i++ ) printf("%4d",a[i]); printf("\n"); for(i=0;i<10;i++) /* 循环查找与x相等的元素*/ if ( x==a[i] ) printf("%d\n",i); /* 输出查找结论,输出下标值*/ else printf("Not found %d\n",x); } (2)运行结果:

实验4使用数组的程序设计

C语言程序设计实验报告 实验4 使用数组的程序设计 一、实验目的 (1)掌握一维数组和二维数组的定义、赋值和输入输出方法。 (2)掌握字符数组的使用。 (3)掌握与数组有关的算法。 二、实验内容及步骤 1、检验并打印幻方矩阵 在下面的5*5阶幻方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些幻方矩阵中的元素读到一个二维整型数组中,然后检验其是否为幻方矩阵,并将其按如下格式显示到屏幕上。 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 程序代码: #include main() { int a[5][5],i,j,sr,sc,st1=0,p=0,st2=0; printf("请输入一个方阵:\n"); for(i=0;i<5;i++) {for(j=0;j<5;j++) scanf("%d",&a[i][j]); } for(i=0;i<5;i++) {st1=st1+a[i][i];//主对角线的和 st2=st2+a[i][4-i];}//次对角线的和 if(st1==st2) p++; for(i=0,sr=0;i<5;i++) {for(j=0,sc=0;j<5;j++) {sr=sr+a[i][j];//行的和 if(sr!=st1)break; sc=sc+a[j][i];//列的和 if(sc!=st1)break;} } if(p==1&&i==5) {printf("这是一个幻方矩阵\n");

for(i=0;i<5;i++) {for(j=0;j<5;j++) printf("%d\t",a[i][j]); printf("\n"); }} else printf("这不是一个幻方矩阵\n"); } 运行结果 2、完成以下程序,并进行调试 某班期末考试科目为数学、英语和计算机,有最多不超过30人参加考试,考试后要求:1)计算每个学生的总分和平均分; 2)按总分成绩由高到低排出成绩的名次; 3)打印出名次表,表格内包括学生学号、各科分数、总分和平均分; 4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。 【提示】:用二维数组score存放每个学生各门课程的成绩,用一维数组num存放每个学生的学号,用一维数组sum存放每个学生的总分,用一维数组aver存放每个学生的平均分。 程序代码: #include main() { double score[5][3],sum[5],aver[5]; int i,j,num[5],t; printf("请输入每位同学的学号和各科成绩,用Tab键隔开:\n"); printf("学号\t数学\t英语\t计算机\n"); for(i=0;i<5;i++) { scanf("%d",&num[i]); for(j=0;j<3;j++) scanf("%lf",&score[i][j]);

C语言程序设计实验4 数组 周信东

实验4 数组 姓名:XXX 学号:XXX实验日期:XXX 1.实验目的和要求 (1)掌握一维数组与二维数组的定义、使用及初始化方法。 (2)学习数组作为函数参数的用法。 (3)掌握字符数组和字符串函数的使用方法。 (4)掌握与数组有关的常用排序算法,进一步理解模块化程序设计的方法。(5)掌握字符、字符串的输入/输出方法。 (6)掌握字符数组的使用。 (7)学会使用字符串的指针和指向字符串的指针变量。 2.实验内容:实验指导书中的实验六、实验七 3.实验步骤 实验六数组部分: 6-1:我使用的算法: 先使投票初始化为0 int vote[6]; int i,number; for (i=1;i<=5;++i) vote[i]=0; 之后用一个循环进行投票进行叠加 printf ("Enter your number\n") ; for (i=1; i<=20;++i) { scanf (" %d",&number) ; if (!number) break; ++vote[number]; } printf (" \n\nResalt of vote\n") ; printf (" --------------------------\n") ; for (i=1;i<=5;++i) printf (" %4d %d\n",i,vote[i]) 程序的运行测试结果如下图所示(考虑各种情况下的运行结果):

6-2:该程序的功能是: 用循环,先把数组的第一个元素暂存起来,为了实现数组的前移,把j赋给j-1;再将暂存的第一个元素赋给最后一个元素;再用循环输出数组。 程序运行结果如下图所示: 6-3 :该程序的功能是: 对a数组中n种商品价格进行分段统计,商品各段价格的数目存放到b数组中。 程序运行结果如下图所示: 6-4.:我使用的算法为: 先对11个元素进行定义,在对10个元素进行排序,之后读入一个待插入的数,与排好的

Vb实验五数组的应用

《Visual Basic 6.0程序设计》实验报告(五) 一、实验名称:数组的应用(4学时) 二、实验目的: 1.掌握数组的声明和数组元素的引用; 2.掌握静态数组和动态数组的声明和使用; 3.学会应用数组解决与数组有关的常用算法问题; 4.掌握控件数组的建立和应用。 三、实验环境 多媒体计算机WindowsXP操作系统Visual Basic 6.0 四、实验内容及实验步骤(或记录) 1.输入10名同学的成绩,求平均分、最高分和最低分。 设计步骤如下: ①在窗体上添加3个标签(Label1、Label2和Label3)和3个文本框(Text1、Text2和Text3),设计界面如图7.2所示。各控件的主要属性和作用如表1所示。 控件的属性和作用 ②编写程序代码如下: Private Sub Command1_Click() Dim Score(1 To 10) As Integer '声明存放成绩的数组Score Dim i As Integer,Max As Integer,Min As Integer,Average As Single For i = 1 To 10 '逐一输入每个同学的成绩 Score (i) = Val (InputBox ("输入第" & Str(i)& "个学生的成绩","成绩统计","")) Next i End Sub Private Sub Command2_Click() Dim i As Integer Dim sum As Single, aver As Single sum = Score (1) ' sum 用于存放总成绩,初值为数组中的第一个元素 Max = Score (1) ' 设变量Max的初值为数组中的第一个元素 Min = Score (1) ' 设变量Min的初值为数组中的第一个元素 For i = 2 To 10 ' 通过循环依次比较,求最大、最小值;求总和 If Score(i) > Max Then Max = Score(i) If Score(i) < Min Then Min = Score(i) sum = sum + Score(i) Next i aver = sum / 10 ' 求平均值 Text1.Text = Format (Average, "0.00 " ) ' 以两位小数显示平均值 Text2.Text = Max

C上机实验报告 实验四

精品文档 实验四数组、指针与字符串 1.实验目的 1.学习使用数组 2.学习字符串数据的组织和处理 3.学习标准C++库的使用 4.掌握指针的使用方法 5.练习通过Debug观察指针的内容及其所指的对象的内容 6.联系通过动态内存分配实现动态数组,并体会指针在其中的作用 7.分别使用字符数组和标准C++库练习处理字符串的方法 2.实验要求 1.编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。 2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。 3.编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。 4.使用string类定义字符串对象,重新实现上一小题。 5.定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。实现并测试这个类。 6.定义包含5个元素的对象数组,每个元素都是Employee类型的对象。 7. (选做)修改实验4中的选做实验中的people(人员)类。具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。其中“出生日期”定义为一个“日期”类内嵌对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中定义people类的对象数组,录入数据并显示。 3.实验内容及实验步骤 1.编写矩阵转置函数,输入参数为3*3整形数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。程序名:lab6_1.cpp。 2.改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。通过Debug观察指针的内容及其所指的对象中的内容。程序名:lab6_2.cpp。 3.编程实现两字符串的连接。定义字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。程序名:lab6_3.cpp。用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。

数组的应用实验报告

数组的应用 电力实10 郝毅(201001000707)上机时间:周二上午 一实验目的 1 掌握数值型一维数组及二维数组的定义,初始化,以及输入输出的方法。 2 掌握用一维数组及二维数组实现的算法。 3 掌握字符型数组的定义,初始化,以及输入输出的方法。 4 掌握用字符型数组解决字符串问题的方法。 5 掌握常用字符串处理函数。 6 掌握用数组作为函数形参的相关语法规则和编程技巧。 7 掌握在VisualC++集成环境中调试与数组相关程序的方法。 二程序分析 1 Step1:定义数值型一维数组,及变量n,max,min,I,c; Step2:输入n的值,利用for语句,从键盘输入n个数据,存放在数组中。 Step3;利用for语句遍历n个数组元素,利用max存放最大值,利用min存放最小值; Step4:利用变量c将最大值与a[n-1]交换位置,并将min与a[0]交换位置; Step5;;利用for语句输出数组的前n个元素。 2题 Step1:定义数值型一维数组,整型变量s;

Step2:利用while语句输入一组数并存放在数组中,同时对该组数求和。 Step3:求出数组预案数的平均值,利用for语句遍历数组元素,并利用计数器计数其中大于等于平均值的实数个数。 Step4:输出计数器的值; 3题 Step1:定义数值型一维数组,及变量i; Step2:利用for语句遍历从1到100,将所有能被7或11整除的整数存放在数组中。 Step3:利用for语句输出数组元素十个数一行。 4题 Step1:定义数值型一维数组,数组长度为50;变量s,i,c=51;Step2:利用while语句将一组互不相同且非0的整数存放在数组中,Step3:输入s的值。 Step4:利用for语句遍历数组元素,找出与s相同的元素,并记录其位置c=I,若不存在,则c=51; Step5:判断c的值,若小于51,则输出i的值,否则输出该数不存在; 5题 Step1,定义两个一维数组a[8],b[8],并初始化a[20]为{1,2,5, 1,1,3,7,0},及变量c,i,j; Step2:输入变量c的值。

实验4数组1

南昌大学实验报告 学生姓名:学号:专业班级: 实验类型:□验证□综合□√设计□创新实验日期:实验成绩:一、实验名称 实验4 数组 二、实验目的 1.掌握数组的基本概念,包括:数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出。 2.掌握字符数组与字符串的使用方法。理解字符数组与其它数组的区别、理解字符串及其特点。掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。 3.掌握与数组相关的算法,包括排序算法和查找算法等。 三、实验内容 有关数组的程序设计 四、实验环境 PC微机 DOS操作系统或Windows 操作系统 Turbo C 程序集成环境 五、实验步骤 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 16 3 5 9 10 3 5 9 10 8 11 14 16 1 2 3 4 15 2 7 6 15 2 7 6 要求: (1)本题中所涉及到的循环都采用for语句。 (2)在输入/输出时进行必要的说明。 (3)对输入的2~10之间的整数(例如4)以n=4的格式输出。 (4)输入一个n ?n矩阵(假定最大值与最小值不在同一行上),输出原始矩阵数据(按上述矩阵形式)。 (5)查找最大值与最小值,将矩阵中最大元素所在的行和最小元素所在的行对调,输出对调后的矩阵数据。 (6)修改程序,对最大值与最小值可能出现在一行上的情况做出说明。 (7)对n为3,4,5时,输入数组元素是要注意哪些问题?执行程序,检查程序的正确性。 4.编程实现“折半查找”的过程。折半查找的处理过程是:在一个数据已排好序的数组中,首先比较关键字与数组中间的元素,如果两者相等,则查找结束;如果前者比后者小,则要查找的数据必然在数组的前半部,此后只需在数组的前半部中继续折半查找;如果前者的数值比后者大,则要查找的数据必然在数组的后半部,此后只需在数组的后半部继续进行折半查找。 要求: (1)设定一个数组存放20个数据,用赋初值的方法在程序中给出(假设这些数据已排序)。 (2)用scanf函数输入一个要找的数。 (3)对查找的结果给出相应的说明,如果找到该数,则给出该数是数组中第几个元素。如果该数不在数组中,则输出“无此数”信息。 (4)任意输入一些数据,检查程序的正确性。

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");

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; }

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

实验四 数组(1)

实验四数组 一、实验目的 1.掌握一维数组和二维数组的定义、初始化、引用; 2.掌握字符数组与字符串的关系以及使用; 3.熟练字符串处理函数的应用; 4.掌握与数组有关的算法(如排序、排序)。 二、实验要求 1.结合上课内容,独立完成程序设计,并调试程序,要给出测试数据和实验结果。 2.整理上机步骤,总结经验和体会。 3.完成实验报告和上交程序。 三、实验内容 1)水仙花数 问题: 水仙花数是指一个n 位数( n≥3 ),它的每个位上的数字的n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153) 解决方案: 首先计算这是个几位数,然后将各个位上的数分离,计算是否它的每个位上的数字的n 次幂之和等于它本身,判断水仙数。

2)选择排序 问题: 输入6个实数,要求用选择法进行升序排序并输出排序后的结果。解决方案:采用冒泡排序或者选择排序法排序。

3)判断鞍点 问题: 找出一个4行5列二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能没有鞍点)。 解决方案: 先在每一列中找,再在每一行中找。 4)折半查找 解决方案: 有15个数按由小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的下标,如果该数不在数组中,则输出“No”。 解决方案: 每次拿中间的数与要找的数比较,缩小查找范围,依次找下去。

5)成绩统计 问题: 定义一个二维数组存放5个学生的姓名,再定义一个二维数组存储5位学生4科考试的成绩,编写程序计算并输出每个同学的平均成绩和平均成绩最高的学生姓名和成绩。 输入:5位学生姓名以及每人4科考试成绩 输出:每个同学的平均成绩和平均成绩最高的学生姓名和成绩 解决方案: 用一个二维数组存放5个学生的姓名,再定义一个二维数组存储5位学生4科考试的成绩,编写程序计算并输出每个同学的平均成绩和平均成绩最高的学生姓名和成绩。更好的方法是使用结构体。

相关文档