第7章 数组1

第7章 数组1
第7章 数组1

实验7数组1

C语言程序设计与应用 实验报告 实验项目名称: ___数组 ____ ______ 专业:______网络1602_______________ 班级:_______1602______________ 学号:_______201658080213______________ 报告人:_______蔡序兵______________ 指导老师:__________易禹___________ 实验时间:_____________________

实验目的: 1. 掌握一维数组的定义、赋值和输入输出的方法; 2.掌握字符数组的使用; 3.掌握与数组有关的算法(例如排序算法)。 实验题1: 1.实验内容与要求: 已有一个已排好序的数组(int a[10]={3,5,7,9,11,13}),今输入一个数,要求按原来排序的规律将它插入数组中。 输入:1 输出:1,3,5,7,9,11,13 输入:8 输出:3,5,7,8,9,11,13 2.程序设计过程分析(自然语言或伪代码或流程图或N-S图): 3.程序源代码(含注释): /*已有一个已排好序的数组(int a[10]={3,5,7,9,11,13}) 今输入一个数,要求按原来排序的规律将它插入数组中。*/ #include main() { int a[11]={3,5,7,9,11,13},i,k,n; printf("插入的数字为:"); scanf("%d",&n); if(n0;i--) a[i]=a[i-1]; a[0]=n;

} else{ for(i=0;i<6;i++){ if(n>=a[i]){ k=i+1; } } for(i=6;i>k;i--){ a[i]=a[i-1]; } a[k]=n;} for(i=0;i<7;i++) printf("%d ",a[i]); printf("\n"); } 4.实验结论(截图)及心得: 实验题2: 1.实验内容与要求: 设计一个程序,从键盘输入指定个数的数据,按选择排序方法,将其

程序设计基础(C)第七章数组习题

学号:姓名:成绩: 程序设计基础(C)第七章数组习题 一、选择题 1.下列叙述中错误的是()。 A)对于double 类型数组,不可以直接用数组名对数组进行整体输入或输出 B)数组名代表的是数组所占存储区的首地址,其值不可改变 C)在程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息D)可以通过赋初值的方式确定数组元素的个数 2.下列关于字符串的叙述中正确的是()。 A)C 语言中有字符串类型的常量和变量 B)两个字符串中的字符个数相同时才能进行字符串大小的比较 C)可以用关系运算符对字符串的大小进行比较 D)空串一定比空格打头的字符串小 3.当用户要求输入的字符串中含有空格时,应使用的输入函数是()。 A)scanf( ) B)getchar( ) C)gets( ) D)getc( ) 4.若有定义语句:int a[3][6];,按在内存中的存放顺序,a 数组的第10 个元素是()。 A)a[0][4] B)a[1][3] C)a[0][3] D)a[1][4] 5.已有定义:char a[ ]="xyz",b[ ]={'x', 'y', 'z'};,下列叙述中正确的是()。 A)数组a 和b 的长度相同 B)a 数组长度小于b 数组长度 C)a 数组长度大于b 数组长度 D)上述说法都不对 6.下列程序的输出结果是()。 main( ) { char a[7]="a0\0a0\ 0"; int i,j; i=sizeof(a); j=strlen(a); printf("%d %d\n",i,j); } A)2 2 B)7 6 C)7 2 D)6 2 7.下列能正确定义一维数组的选项是()。 A)int a[5]={0,1,2,3,4,5}; B)char a[ ]={0,1,2,3,4,5}; C)char a={'A', 'B', 'C'}; D)int a[5]="0123"; 8.有以下程序 #include main() { int a[]={2,3,5,4},i; for(i=0;i<4;i++) switch(i%2) { case 0:

_实验1分治法

实验一分治法 一、实验目的 1.理解分治法的方法; 2. 掌握使用分治法解决一般问题的步骤; 3. 掌握分治算法求解数组的最大值和最小值的方法。 二、实验原理 在一个给定数组中查找最大值和最小值是一类常见的问题,也是解决其他一些算法的基础。 假设给定数组为a,数组中含有n个元素,一般的算法是在数组中进行直接查找,算法伪代码如下: 1. x←a[0]; y←a[0] 2. for i←2 to n 3. if a[i]y then y←a[i] 5. end for 6. return (x,y) 上述代码在第3行和第4行涉及到元素的比较,每次循环进行2次比较,而循环的次数在算法第2行给出,为(n-2)+1=n-1次,因此,算法元素比较总次数为2(n-1)次。 现在采用分治的思想,假设数组的长度为2的整数幂,将数组分割成两半,分别为a[0…(n/2)-1]和a[n/2…n-1],在每一半中分别查找最大值和最小值,并返回这两个最小值中的最小值以及两个最大值中的最大值。 假设给定数组为a,数组的下标上界和下界分别为low和high,则其算法伪代码如下: minmax(a,low,high) 1. if high-low=1 then 2. if a[low]

数组

数组 1、下列程序执行后的输出结果是________。 main() { int i,j,a[3][3]; for(i=0;i<3;i++) for(j=0;j<3;j++) a[i][j]=i*j+1; printf("%d,%d\n",a[1][2],a[2][1]); } A) 3,3 B) 3,不定值 C) 3 D) 3,1 正确答案是: A 你选择的答案是:未选× 2、以下程序的输出结果是________。 main() { char st[20]="hello\0\t\'\\"; printf("%d\n",strlen(st)); } A) 9 B) 5 C) 13 D) 20 正确答案是: B 你选择的答案是:未选× 3、以下程序执行时输入Language Programming<回车>,输出结果是________。 #include main( ) { char str[30]; gets(str); printf("str=%s\n",str); } A) Language Programming B) Language C) str=Language D) str=Language Programming 正确答案是: D 你选择的答案是:未选× 4、以下程序执行后的输出结果是________ 。 #include main( ) { int a[4][5]={1,2,4,8,10,-1,-2,-4,-8,-10,3,5,7,9,11}; int i,j,n=9; i=n/5; j=n-i*5-1; printf("%d\n",a[i][j]); } A) -8 B) -10 C) 9 D) 11 正确答案是: A 你选择的答案是:未选×

实验7 数组

实验7 数组 一、实验目的: 1、理解数组的作用、特点; 2、掌握一维数组、二维的定义、引用、初始化,能够与循环结合实现批量数据处理(如输入、输出,比较大小,交换等); 3、掌握字符数组、字符串的使用; 4、熟悉打擂台等典型算法。 二、实验内容 1、(基础题)有一个数列,它的第一项为1,第二项为2,第三项为3,以后每一项都等于它的前三项之和。使用一维数组编程实现功能:计算该数列的前20项并赋值给数组,然后以逆序方式输出,每一行5个数据。如下图所示: 2、(基础题)青年歌手大奖赛,有7名评委进行打分,分数取值范围:0.0~10.0,试编程实现如下功能:从键盘输入7位评委给某一选手的评分,之后计算、输出该选手的平均得分(计算规则:去掉一个最高分和一个最低分,求出剩余5个得分的平均值)。如下图所示: (提示:使用一维数组来保存7位评委的给分,先计算所有评委给分总和,并找到最高分、最低分,然后用给分总和-最高分-最低分,再除5得到选手的平均得分,最后输出。)

3、(基础题)计算矩阵之和: 先输出这两个矩阵,再输出求和后矩阵。 (提示:(1)可第定义两个二维数组分别存储两个矩阵中的元素;(2)矩阵之和是对应元素相加,如c[0][0]=a[0][0]+b[0][0],c[2][1]=a[2][1]+b[2][1],可用一个二维数组保存两矩阵对应元素的和)。程序运行效果如下图所示: 4、(基础题)输入一个字符串,请编程统计其中的字母、数字、空格(含制表符)、标点符号的个数并输出。如下图所示: (提示:在教材的p221中有字符和字符串函数,可以直接引用。如isalpha()判断字母函数、isdigit()判断数字函数、isspace()判断空格函数、ispunct()判断标点函数等) 5、(提高题)已知学生成绩如下表,要求用二维数组保存学生成绩,并计算每个学生的平均成绩以及各门课程的平均成绩。 (提示:(1)可定义一个二维数组存储学生成绩;(2)定义两个一维数组分别存储学生的平均成绩和课程的平均成绩;(3)某个学生的平均成绩是二维数组中某行元素的平均值;某门课程的平均成绩是二维数组中某列元素的平均值) 程序运行效果如下图所示:

第7章 数组1

第7章数组 一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。) 7.1 若有说明 int a[3][4];则a数组元素的非法引用是 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] 正确答案:D 7.2 在C语言中,引用数组元素时,其数组下标的数据类型允许是 A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 正确答案:C 7.3 执行下面的程序段后,变量k中的值为 int k=3, s[2]; s[0]=k; k=s[1]*10; A)不定值B)33 C)30 D)10 正确答案:A 7.4 定义如下变量和数组: int k; int a[3][3]={9,8,7,6,5,4,3,2,1}; 则下面语句的输出结果是 for(k=0;k<3;k++)printf("%d",a[k][k]); A)7 5 3 B)9 5 1 C)9 6 3 D)7 4 1 正确答案:B 7.5 下列程序执行后的输出结果是 main() {char arr[2][4]; strcpy(arr[0],"you"); strcpy(arr[1],"me"); arr[0][3]=‘&’; printf("%s\n",arr[0]); } A)you&me B)you C)me D)err 正确答案:A 7.6 设有数组定义: char array[]="China"; 则数组 array所占的空间为 A)4个字节B)5个字节C)6个字节D)7个字节

正确答案:C 7.7 以下不正确的定义语句是 A)double x[5]={2.0,4.0,6.0,8.0,10.0}; B)int y[5]={0,1,3,5,7,9}; C)char c1[]={‘1’,’2’,’3’,’4’,’5’}; D)char c2[]={‘\x10’,’\xa’,’\x8’}; 正确答案:B 7.8 若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是 A)2 B)3 C)4 D)无确定值 正确答案:B 7.9 对以下说明语句的正确理解是 int a[10]={6,7,8,9,10}; A)将5个初值依次赋给a[1]至a[5] B)将5个初值依次赋给a[0]至a[4] C)将5个初值依次赋给a[6]至a[10] D)因为数组长度与初值的个数不相同,所以此语句不正确 正确答案:B 7.10 若有说明:int a[][4]={0,0};则下面不正确的叙述是 A)数组a的每个元素都可得到初值0 B)二维数组a的第一维大小为1 C)当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小 D)只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值 正确答案:D 7.11 有以下程序 main() {char a[]={‘a’, ‘b’, ‘c’,’d’, ‘e’, ‘f’, ‘g’,’h’,’\0’}; int i,j; i=sizeof(a); j=strlen(a); printf("%d,%d\b",i,j); } 程序运行后的输出结果是 A)9,9 B)8,9 C)1,8 D)9,8 正确答案:D 7.12 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存

读取1000个十进制整数到数组

★83.函数ReadDat( )实现从文件IN83.DA T中读取1000个十进制整数到数组xx中。请编制函数Compute( )分别计算出xx中偶数的个数even、奇数的平均值ave1、偶数的平均值ave2及所有偶数的方差totfc的值,最后调用函数WriteDat( )把结果输出到OUT83.DAT文件中。计算方差的公式如下:totfc=----(--ave2)-/N 设N为偶数的个数,xx[i]为偶数,ave2为偶数的平均值。 原始数据的存放格式是:每行存放10个数,并用逗号隔开(每个数均大于0且小于等于2000)。 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 试题程序: #include #include #include #define MAX 1000 int xx[MAX],odd=0,even=0; double ave1=0.0,ave2=0.0,totfc=0.0; void WriteDat(void); int ReadDat(void) { FILE *fp; int i,j; if((fp=fopen("IN83.DAT","r"))==NULL) return 1; for(i=0;i<100;i++) { for(j=0;j<10;j++) fscanf(fp,"%d,",&xx[i*10+j]); fscanf(fp,"\n"); if(feof(fp)) break; } fclose(fp); return 0; } void Compute(void) { int i,tt[MAX]; /*定义数组tt计算总和*/ for(i=0;i<1000;i++) if(xx[i]%2!=0) /*判断当前数的奇偶性*/ { odd++; /*统计奇数的个数*/

第七章字符数组与指针练习题参考答案(2)

第七章字符数组与字符串 【题7.29】下面是对s的初始化,其中不正确的是。 A)char s[5]={“abc”};B)char s[5]={‘a’,‘b’,‘c’}; C)char s[5]=“”;D)char s[5]=“abcdef”; 【题7.30】下面程序段的运行结果是。 char c[5]={‘a’,‘b’,‘\0’,‘c’,‘\0’}; printf(“%s”,c); A)‘a’‘b’ B)ab C)ab c 【题7.31】对两个数组a和b进行如下初始化 char a[]=“ABCDEF”; char b[]={‘A’, ‘B’,‘C’,‘D’,‘E’,‘F’}; 则以下叙述正确的是。 A)a与b数组完全相同B)a与b长度相同 C)a和b中都存放字符串D)a数组比b数组长度长 提示:‘\0’是字符串结束的标志 【题7.32】有两个字符数组a、b,则以下正确的输入格式是。 A)gets(a,b); B)scanf(“%s %s”,a,b); C)scanf(“%s %s”,&a,&b);D)gets(“a”),get(“b”); 【题7.33】有字符数组a[80]和b[80],则正确的输出形式是。 A)puts(a,b); B)printf(“%s %s”,a[],b[]); C)putchar(a,b); D)puts(a),puts(b); 【题7.34】下面程序段的运行结果是。 char a[7]=“abcdef”; char b[4]=“ABC”; strcpy(a,b); printf(“%c”,a[5]); A)空格B)\0 C)e D)f 提示:复制后a[0]=‘A’,a[1]=‘B’,a[2]=‘C’,a[3]=‘\0’, a[4]=‘e’,a[5]=‘f’, a[6]=‘\0’,

第7章数组课后作业

1、依次输入五句话,然后将它逆序输出。运行结果如图所示。 提示: 创建一个字符串数组,每句话作为字符串数組的一个元素,然后从该数组的末尾开 始循环输出。 2、某百货商场当日消费积分最高的八名顾客.他们的积分是:18、25、7、36、1 3、2、89、63。编写程序找出最低的积分及它在数组中的原始位置(下标)。 提示: > 创建数组points[],存储八名顾客的积分。 > 定义变量min存储最低枳分,定义变量index存储最低积分下标。 > 假设第一个元素为最低积分,下标为0。 > 遍历数组,将数组元素和min的值进行比较。 3、从键盘输入10个整数,合法值为1、2或3,不是这三个数则为非法数字。试编程统计每个整数和非法数字的个数。运行结果如图所示。

提示: ?创建数组nums[],长度为10,存储用户输入的数字。 ?创建数组count[],长度为4、存储三个合法数字和非法数字的个数。 ?循环输入数字,利用switch判断数字的值、根据不同的值对数组count[]中的不同元素进行累加。 4、假设有一个长度为5的数组,如下所示: int [] array = new int []{1,3,-1,5,2}; 现要创建一个新数组newArray[],要求新数组中的元素与原数组中的元素逆序,并且如果 原数组中的元素值小于0,在新数组中按0存储。试编程输出新数组中的元素,程序运行结果如图: 提示: ?利用循环从原数组最后一个元素(下标为array.length-1)开始处理,如杲该元素的值小于0,利用continue退出本次循环(整型数组中元素默认值为0)。 ?如果该元素值大于0,则将该元素复制到新数组 ?合适的位置。对于原数组下标为i的元素.在新数组中的下标为arrayJength-i-1。 ?处理完成,利用循环输出新数组中的元素 5、有一数列:8, 4, 2, 1, 23, 344, 12。编写程序,让用户输入一个整数,判断该整数在不在该数列中。运行效果如下图所示:

第七章 数组

第七章数组 数组是程序设计语言中最基本,最重要的组成部分,本章的习题将从C语言数组的基本概念出发,讨论C 语言数组的特点和使用方法,并通过典型的例题和常见算法研究数组的一般应用,本章的主要内容包括: ●数组基本概念。包括:数组的定义,数组的类型,数组维数,体积,数组元素和数组下标的概念,数组 说明,对数组进行初始化的方法,多维数组中元素的排列次序及初始化等问题。 ●字符型数组。包括:字符型数组与其它数组的区别,字符串及其特点,对字符型数组进行初始化,使用 不同的库函数输入输出字符串,对字符串的简单处理(求串长,串复制,串连接,串比较,串反向等) 等。 ●数组与函数之间的关系。包括:将数组作为组与函数之间进行传递等。 ●常见的使用数组的算法。包括:排序算法,查找算法等。 7.1 选择题 【7.1】错误的说明语句是。 A)static char word[ ]={‘T’,’u’,’r’,’b’,’o’,’\0’}; B)static char word[ ]={“Turbo\0”}; C)static char word[ ]=”Turbo\0”; D)static char word[ ]=‘Turbo\0’; 【7.2】已知:char s[5],c;register int b;则调用函数scanf的正确语句是。 A)scanf(“%s%c”,s,c); B)scanf(“%d%c,&b,&c); C)scanf(“%d%c”,b,&c); D)scanf(“%s%c”,s,&c); 【7.3】要说明一个有10个int元素的数组,应当选择语句 。 A) int a [10]; B) int a[2,5]; C) int a [ ]; D) int *a[10]; 【7.4】合法的数组说明语句是。 A)int a[ ]=”string”; B)int a[5]={0,1,2,3,4,5,}; C)char a=”string”; D)char a[]={0,1,2,3,4,5,}; 【7.5】在下述对C语言字符数组的描述中错误的是。 A)字符数组可以存放字符串 B)字符数组中的字符串可以进行整体输入输出 C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D)字符数组的下标从0开始

数组及其应用(详细教案)

提问:给一组数排序,这组数该如何存 放呢? 8 2 9 4 5 6 3 7 1 6 这就是本节课要解决的问题。 ?一个班学生的学习成绩 ?一行文字 ?一个矩阵 这些数据的特点是: 1.具有相同的数据类型 2.使用过程中需要保留原始数据 C语言为这些数据,提供了一种型:数组。所谓数组就是一组具有相数据的有序集合。 提出学习要求: 1 一维数组的定义和应用

2 二维数组的定义和应用 3 字符数组的应用 第七章数组 7.1一维数组及应用 7.1.1一维数组的定义方式 在C语言中使用数组必须先定义、后使用,定义数组也就确定了数组的首地址、数组元素的类型和个数(数组长度)。 一维数组的定义方式为: 类型说明符数组名[常量表达式]; 例如: 1) int a[5]; 说明整型数组a,a是数组名,有5个元素。但

是其下标从0开始计算。因此5个元素分别为a[0],a[1],a[2],a[3],a[4]。注意不能使用数组元素a[5]。 float b[10],c[20]; 说明实型数组b,b是数组名,有10个元素,实型数组c,有20个元素。 char ch[20]; 说明字符数组ch,有20个元素。 对于数组类型说明应注意以下几点:2) 数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。 3) 数组名的书写规则应符合标识符的书写规定。 4) 数组名不能与其它变量名相同。 例如:

main() { int a; /*a为整型变量*/ float a[10]; /* 数组名a与上面的变量名a相同,错误!*/ …… } 是错误的。 5) 不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。 例如: #define FD 5 /* FD是符号常数*/ main() {

信息学奥赛第三十五课-多维数组7

江西省南昌市2015-2016学年度第一学期期末试卷 (江西师大附中使用)高三理科数学分析 一、整体解读 试卷紧扣教材和考试说明,从考生熟悉的基础知识入手,多角度、多层次地考查了学生的数学理性思维能力及对数学本质的理解能力,立足基础,先易后难,难易适中,强调应用,不偏不怪,达到了“考基础、考能力、考素质”的目标。试卷所涉及的知识内容都在考试大纲的范围内,几乎覆盖了高中所学知识的全部重要内容,体现了“重点知识重点考查”的原则。 1.回归教材,注重基础 试卷遵循了考查基础知识为主体的原则,尤其是考试说明中的大部分知识点均有涉及,其中应用题与抗战胜利70周年为背景,把爱国主义教育渗透到试题当中,使学生感受到了数学的育才价值,所有这些题目的设计都回归教材和中学教学实际,操作性强。 2.适当设置题目难度与区分度 选择题第12题和填空题第16题以及解答题的第21题,都是综合性问题,难度较大,学生不仅要有较强的分析问题和解决问题的能力,以及扎实深厚的数学基本功,而且还要掌握必须的数学思想与方法,否则在有限的时间内,很难完成。 3.布局合理,考查全面,着重数学方法和数学思想的考察 在选择题,填空题,解答题和三选一问题中,试卷均对高中数学中的重点内容进行了反复考查。包括函数,三角函数,数列、立体几何、概率统计、解析几何、导数等几大版块问题。这些问题都是以知识为载体,立意于能力,让数学思想方法和数学思维方式贯穿于整个试题的解答过程之中。 二、亮点试题分析 1.【试卷原题】11.已知,,A B C 是单位圆上互不相同的三点,且满足AB AC → → =,则A BA C →→ ?的最小值为( ) A .1 4- B .12- C .34- D .1-

C语言复习题及答案-第七章-数组

C语言复习题及答案-第七章-数组

第七章数组 (8学时) 学习目的与要求: 1 、重点掌握一维数组的定义和引用; 2 、基本掌握二维数组的定义和引用; 3 、重点掌握字符型数组的定义与引用; 4 、能正确使用字符串处理函数; 5 、学会使用数组解决实际问题。 重点: 1 、一维数组的定义与引用; 2 、二维数组的定义与引用; 3 、字符数组的定义与引用; 第1讲 知识归纳: 1、一维数组的定义:类型说明符数组名[ 常量表达式] ; (1) (1)数组名后必须用方括弧[ ] ,用其他括 弧均错误; (2) 方括弧中的常量表达式表示数组的元素个数; (3) 方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量; 2、一维数组的引用: 数组名[ 下标] //下标从0开始,可以是整型常量或整型表达式; (1) 注意:数组元素引用时,不要超出数组范围; 如int a[10] ;

二、填空题 1、构成数组的各个元素必须具有相同的类型。C语言中数组的下标必须是整正数、0或整型表达式。如果一维数组的长度为n ,则数组下标的最小值为0,最大值为n-1。 2、在C语言中,一维数组的定义方式为:类型说说明符数组名[常量表达式]。 3、已知数组b定义为int b[ ]={9,6,3};,则b的各元素的值分别是, 最小下标是,最大下标的。9,6,3 0 ,2 4、在C语言中数组名是一个常量,不能对其进行加、减及赋值操作。 5、已知数组T为一有10个单元的整型数组,正序输出T中的10个元素的值的语句为: for (j=0;j<10;j++) printf(“%d”,T[j]); 下面的语句试图按相反的顺序显示输出T中的10个元素的相反数;请补充完整下面的语句:for(j=9;j>=0;j- -)printf(“%d”,T[j]); 三、综合题 1、下面程序(每行程序前面的数字表示行号),请指出存在错误的行号(3) 1 main() 2 { 3 int a[3]={3*0}; 4 int i; 5 for(i=0;i<3;i++) scanf("%d",&a[i]);

[第1题-60题汇总]微软数据结构+算法面试100题

精选微软等公司数据结构 精选微软等公司数据结构++算法面试100题 -----[第1题-60题总] 资源说明: 此份,是为微软等公司数据结构+算法面试100题,之前60题的汇总。 总结整理了前第1题-第60题。特此并作此一份上传。以飨各位。:)。 -------------------------------- 相关资源,包括答案,下载地址: [答案V0.2版]精选微软数据结构+算法面试100题[前20题]--答案修正 https://www.360docs.net/doc/6017262921.html,/source/2813890 //此份答案是针对最初的V0.1版本,进行的校正与修正。 [答案V0.1版]精选微软数据结构+算法面试100题[前25题] https://www.360docs.net/doc/6017262921.html,/source/2796735 [第二部分]精选微软等公司结构+算法面试100题[前41-60题]: https://www.360docs.net/doc/6017262921.html,/source/2811703 [第一部分]精选微软等公司数据结构+算法经典面试100题[1-40题] https://www.360docs.net/doc/6017262921.html,/source/2778852 更多资源,下载地址: http://v_july_https://www.360docs.net/doc/6017262921.html,/ 很快,我将公布第21-40题的答案,敬请期待。:).. 如果你对以下的前第1-60题,有好的思路,和算法,欢迎跟帖回复, 或者,联系我,发至我的邮箱, zhoulei0907@https://www.360docs.net/doc/6017262921.html,。 My CSDN Blog:https://www.360docs.net/doc/6017262921.html,/v_JULY_v My sina Blog:https://www.360docs.net/doc/6017262921.html,/shitou009 帖子维护地址: [整理]算法面试:精选微软经典的算法面试100题[前1-60题] https://www.360docs.net/doc/6017262921.html,/u/20101023/20/5652ccd7-d510-4c10-9671-307a56006e6d.html -------------------------------------- July、2010、/11.12.请享用。:)。 1

第七章数组上机作业

第七章数组 通过本章实验作业应达目标 1.学习并掌握一维数组与二维数组的定义、使用及初始化方法。 2.熟练掌握字符数组和字符串的使用方法。 3.掌握数组的一种排序算法。 4.学会用数组保存多个相关的同类数据,并对这一组数据进行各类操作。 本章上交作业 程序7_1.c、7_3.c、7_5.c、7_7.c上传至211.64.135.121/casp。 实验一一维数组的定义和简单应用 【实验目的】 学会定义一维数组,掌握一维数组的遍历操作,掌握在一组数组中求最大值、最小值的方法。 【实验内容】 从键盘读入5个成绩到一个数组中,求其中的最大值,最小值和平均成绩。在屏幕上显示输入成绩的提示信息,用键盘输入一个成绩,接着提示输入下一个,直到结束。以7_1.c命名本程序并上交。 程序运行界面 【实验提示】 求最大(小)值通常用“打擂台”的方法。首先设计两个变量,如max和min分别用来存放最大值和最小值,并将数组的首元素赋给这两个变量,这就是到目前为止的最大(小)值,然后利用循环依次比较其他的元素,总是将当前最大(小)值赋给max和min,直至比较到最后,max和min中的数据就是最大值和最小值。 求平均值还要设置一个变量sum,用来累加各元素的值。 实验二一维数组的排序 【实验目的】 熟练掌握一维数组三种基本排序方法:选择法,冒泡法,比较法。 【实验内容】

从键盘上接收10个成绩,存放到一个一维数组score中,分别利用三种排序方法,将数组从小到大排序并在屏幕上显示排序结果。分别以7_2_1.c、7_2_2.c和7_2_3.c命名三个程序。 【实验提示】 所谓排序是指把一组杂乱无章的数据按照大小顺序排列。 将被排序的n个数据存放在一个数组中, 假如按升序排列。我们将数组定义为a[n],数据存放在a[0] 到 a[n-1] 中。 1.比较排序法 将a[0]与a[1]比较,若a[1]a[1],则二者交换,否则不变,a[1]再与a[2]比较,前者大就交换,…,依次两两比较至到a[n-2]与a[n-1]比较,经过一轮以后,最大者“沉”到了最后,小数往上“冒”,所以得名“冒泡法”。第二轮比较数组的前n-1个,即a[0]~a[n-2] 。重复此过程,直到所有的元素比较完毕。 实验三一维数组元素的调换 【实验目的】 进一步加强对数组的应用。 【实验内容】 找出数组中的最小数和次小数,并把最小数和a[0]中的数对调、次小数和a[1]中的数对调,其余数据位置不变。 例如,程序运行时若输入:2 4 6 11 3 9 7 0 5 8,则输出:0 2 6 11 3 9 7 4 5 8。以7_3.c 命名本程序并上交,部分程序如下。 #define N 10 main()

答案 实验报告_实验7_数组(学号_姓名)

实验报告_实验7_数组(学号_姓名) 一、实验目的: 1、理解数组的作用、特点; 2、掌握一维数组、二维的定义、引用、初始化,能够与循环结合实现批量数据处理(如输入、输出,比较大小,交换等); 3、掌握字符数组、字符串的使用; 4、熟悉打擂台等典型算法。 二、实验内容 1、(基础题)有一个数列,它的第一项为1,第二项为2,第三项为3,以后每一项都等于它的前三项之和。使用一维数组编程实现功能:计算该数列的前20项并赋值给数组,然后以逆序方式输出,每一行5个数据。如下图所示: 程序代码: #include 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 #define N7 int main() { double score[N]; double max,min,sum,aver; int i; printf("请输入%d位评委的给分:\n",N); for(i=0;iscore[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、(基础题)计算矩阵之和:

-实验1分治法

一、实验目的 1.理解分治法的方法; 2. 掌握使用分治法解决一般问题的步骤; 3. 掌握分治算法求解数组的最大值和最小值的方法。 二、实验原理 在一个给定数组中查找最大值和最小值是一类常见的问题,也是解决其他一些算法的基础。 假设给定数组为a,数组中含有n个元素,一般的算法是在数组中进行直接 循环的次数在算法第2行给出,为(n-2)+1=n-1次,因此,算法元素比较总次数为2(n-1)次。 现在采用分治的思想,假设数组的长度为2的整数幂,将数组分割成两半,分别为a[0…(n/2)-1]和a[n/2…n-1],在每一半中分别查找最大值和最小值,并返回这两个最小值中的最小值以及两个最大值中的最大值。 假设给定数组为a,数组的下标上界和下界分别为low和high,则其算法伪 接比较数组的两个元素,选出最大值和最小值,此为函数的递归终止条件;代码第7行和第8行是两个递归调用,分别在数组的下标范围[low,mid]和 [mid+1,high]查找最小值和最大值,第9行比较两个最大值取其中较大者,第10行比较两个最小值取较大者。

代码的第2、9和10行涉及到元素的比较,第7、8行由于递归也产生元素比较,因此令算法总的元素比较次数为C(n),则有 ???>+==2 2)2/(221)(n n C n n C 若若 对递推式进行求解 2 2/3 2 2)2/( 2)2(2 2 2...22)2/(2 ... 2 48)8/(824)2)8/(2(4 2 4)4/(42)2)4/(2(22)2/(2)(1 1122111-=-+=+=+++++==+++=+++=++=++=+=∑-=-----n n C n C n C n C n C n C n C n C k k j j k k k k k 得到minmax 算法的元素比较总次数为3n/2-2,优于直接比较的性能。 三、实验内容及要求 1. 编写程序使用分治算法MINMAX 求解数组的最小值和最大值,并用实际数组对算法进行测试。 2. 要求算法中元素比较的次数为3n/2-2,在程序中元素比较的地方进行记录,并在程序末尾输出数组最大值和最小值以及元素比较次数。 四、实验步骤 1. 定义结构体类型或类,用以在函数的返回值同时返回数组的最大值和最小值。

数组

一、选择题 1. 设有定义:char s[12]="harmonious";,则printf("%d", strlen(s));的输出结果是 A. 9 B. 10 C. 11 D. 12 2. 错误的说明语句是____。 A) char word[ ]={ 'T', 'u', 'r','b', 'o', '\0' }; B) char word[ ]={ "Turbo\0" }; C) char word[ ]="Turbo\0"; D) char word[ ]='Turbo\0"; 3. 已知:chars[5], c; int b;则调用函数scanf的正确语句是______。 A) scanf( "%s%c", s, C); B) scanf( "%d%c", &b, &C); C) scanf( "%d%c", b, &C); D) scanf( "%s%c", s, &C); 4. 合法的数组说明语句是____。 A) int[ ]="string"; B) int a[5]={ 0, l, 2, 3, 4, 5 }; C) char a="string"; D) char a[ ]={ 0, l, 2, 3, 4, 5 }; 5. 在下述对C语言字符数组的描述中错误的是____。 A) 字符数组可以存放字符串 B) 字符数组中的字符串可以进行整体输入/输出 C) 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值 D)字符数组的下标从0开始 6. 调用str1en( "abcd\0ef\0g" )的返回值为____。 A) 4 B) 5 C) 8 D) 9 7. 已知:char str1[10], str2[10]={ "books" };则在程序中能够将字符串"book"赋给数组str1的正 确语句是____。 A) str1={ "books" }; B) strcpy( str1, str2 ); C) str1=str2; D) strcpy( str2, str1 ); 8. 已知:char str1[20]="abcde", str2[20]="xyz"; 则执行语句; printf( "%d", str1en( strcpy( str1, str2 ) ) ); 输出结果是____。 A) 9 B) 3 C) 5 D) 8 9. 下面字符串的说明错误的是____。 A) char str[7]="FORTRAN"; B) char str[ ]="FORTRAN"; C) char *str="FORTRAN"; D) char str[ ]={'F','O','R',T,'R','A','N','\0'}; 10. 已知:int i, x[3][3]={ l, 2, 3, 4, 5, 6, 7, 8, 9 };则下面语句的输出结果是____。 for( i=0; i<3; i++ ) printf( "%d", x[i][2-i] ); A) 159 B) 147 C) 357 D) 369 11. 已知:char str[ ]="ab\n\012\\\"";则执行语句:printf( "%d", str1en(str) );的结果是____。 A) 3 B) 4 C) 6 D) 12

C语言复习题及答案 第七章 数组

第七章数组 (8学时) 学习目的与要求: 1 、重点掌握一维数组的定义和引用; 2 、基本掌握二维数组的定义和引用; 3 、重点掌握字符型数组的定义与引用; 4 、能正确使用字符串处理函数; 5 、学会使用数组解决实际问题。 重点: 1 、一维数组的定义与引用; 2 、二维数组的定义与引用; 3 、字符数组的定义与引用; 第1讲 知识归纳: 1、一维数组的定义:类型说明符数组名[ 常量表达式] ; (1) (1)数组名后必须用方括弧[ ] ,用其他括弧均错误; (2) 方括弧中的常量表达式表示数组的元素个数; (3) 方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量; 2、一维数组的引用: 数组名[ 下标] //下标从0开始,可以是整型常量或整型表达式; (1) 注意:数组元素引用时,不要超出数组范围; 如int a[10] ; //可以引用的数组元素为a[0]……a[9] , a[10] 不是本数组元素; 3、一维数组的初始化: (1) (1)可以在定义数组后,立刻赋值;如int a [3] = { 1,3, 5} ; 但下面这样是错误的: int a[3] ; a = { 1,3, 5} ; (2) (2)可以给数组的部分元素赋值,不赋值的元素,默认值为int 0, char, …?, float 0.0 ; 如int a [3]= {1,3 } ; //a[0] =1 ; a[1]= 3 ; a[2]= 0 ; (3) 在对数组全部元素赋初值时,可以不指定元素个数; (4) 可以在循环控制下,给数组各元素赋值; 如:int a[10] ; for ( i=0 ; i <10 ;i ++ ) a [ i ] = i ; 基础训练(A) 一、选择题 1、在c语言中,引用数组元素时,其数组下标的数据类型允许是()。 A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 2、要说明一个有10个int元素的数组,应当选择语句()。 A) int a[10]; B) int a(10); C) int a[9] D) int a[11] 3、以下对数组的正确定义是:()。 A) float b[5.0] B) float b[5] C) float b(5) D) float b[] 4、对以下说明语句的正确理解是()。 int a[10]={6,7,8,9,10}; A)将5个初值依次赋给a[1]至a[5]

相关文档
最新文档