数组和过程习题(有)
数据结构练习题第三章栈、队列和数组习题及答案
第三章栈、队列和数组一、名词解释:1.栈、栈顶、栈底、栈顶元素、空栈2.顺序栈3.链栈4.递归5.队列、队尾、队头6.顺序队7.循环队8.队满9.链队10.随机存储结构11.特殊矩阵12.稀疏矩阵13.对称方阵14.上(下)三角矩阵二、填空题:1.栈修改的原则是_________或称________,因此,栈又称为________线性表。
在栈顶进行插入运算,被称为________或________,在栈顶进行删除运算,被称为________或________。
2.栈的基本运算至少应包括________、________、________、________、________五种。
3.对于顺序栈,若栈顶下标值top=0,此时,如果作退栈运算,则产生“________”。
4.对于顺序栈而言,在栈满状态下,如果此时在作进栈运算,则会发生“________”。
5.一般地,栈和线性表类似有两种实现方法,即________实现和________实现。
6.top=0表示________,此时作退栈运算,则产生“________”;top=sqstack_maxsize-1表示________,此时作进栈运算,则产生“________”。
7.以下运算实现在顺序栈上的初始化,请在________处用适当的句子予以填充。
int InitStack(SqStackTp *sq){ ________;return(1);}8.以下运算实现在顺序栈上的进栈,请在________处用适当的语句予以填充。
Int Push(SqStackTp *sq,DataType x){ if(sp->top==sqstack_maxsize-1}{error(“栈满”);return(0);}else{________________:________________=x;return(1);}}9.以下运算实现在顺序栈上的退栈,请在________________用适当句子予以填充。
C语言程序设计第六章数组习题及答案
1.以下对一维整型数组a的定义,正确的是_。
(2分)A.int a(10) ;B.int n = 10 , a[n] ;C.int n ;scanf( "%d" , &n ) ;int a[n] ;D.int a[10] ;2.若有定义:int a[10] ;,则对a数组元素的正确引用是_。
(2分)A.a[10]B.a[3.5]C.a(5)D.a[10-10]3.对定义int a[10] = {6 , 7 , 8 , 9 , 10} ; 的正确理解是_。
(2分)A.将5个初值依次赋给a[1]--a[5]B.将5个初值依次赋给a[0]--a[4]C.将5个初值依次赋给a[6]--a[10]D.因为数组长度与初值个数不相同,所以此语句不正确4..若有定义:int a[3][4]; , 则对a数组元素的正确引用是_。
(2分)A.a[3][4]B.a[1,3]C.a[1+1][0]D.a(2)(1)5.以下对二维数组a初始化正确的语句是_。
(2分)A.int a[2][ ]={{0 , 1 , 2}, {3 , 4 , 5}};B.int a[ ][3]={{0, 1, 2}, {3, 4, 5}};C.int a[2][4]={{0, 1 , 2}, {3 , 4}, {5}};D.int a[ ][3]={{0, 1, 2}, { }, {3, 4}};6.对二维数组a进行如下初始化:int a[ ][3]={0 , 1 , 2 , 3 , 4 , 5};则a[1][1]的值是_。
(2分)A.0B.3C.4D.17.下面程序段的运行结果是_。
(2分)#include<stdio.h>int main( ){int i , x[3][3] = {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9} ;for( i = 0 ; i < 3 ; i++ )printf( "%2d" , x[i][2-i] ) ;return 0 ;}A.1 5 9B.1 4 7C.3 5 7D.3 6 98.以下对数组s的初始化,错误的是_。
数组练习题及答案
第五章数组练习题及答案一、选择题1、判断字符串a和b是否相等,应当使用()A、if(a==b)B、if(a=b)C、if(strcpy(a,b))D、if(strcmp(a,b))2、以下正确的定义语句是()A、int a[1][4]={1,2,3,4,5};B、float x[3][]={{1},{2},{3}};C、long b[2][3]={{1},{1,2},{1,2,3}};D、double y[][3]={0};3、以下各组选项中,均能正确定义二维实型数组a的选项是()A、float a[3][4]; float a[ ][4]; float a[3][ ]={{1},{0}};B、float a(3,4); float a[3][4]; float a[ ][ ]={{0},{0}};C、float a[3][4]; static float a[ ][4]={{0},{0}}; auto float a[ ][4]={{0},{0},{0}};D、float a[3][4]; float a[3][ ]; float a[ ][4];4、下面程序的运行结果是()1—5 DDCBA 6—10 BDABB 11—15 CCCBC 16—20 DDCBB 21—25 BBAAA 26—30 DBDDB#include "stdio.h"main(){ char str[]="SSSWLIA",c;int k;for(k=2;(c=str[k]!='\0');k++){ switch(c){case 'I':++k;break;case 'L':continue;default:putchar(c);continue;}putchar('*');}}A、SSW*B、SW*C、SW*AD、SW5、下面程序段是输出两个字符串中对应相等的字符。
Java数组练习题(带答案)
一填空题1)数组的元素通过下标来访问,数组Array的长度为Array.length 。
2)数组复制时,"="将一个数组的引用传递给另一个数组。
3)JVM将数组存储在栈(堆或栈)中。
4)数组的二分查找法运用的前提条件是数组已经排序。
5)Java中数组的下标的数据类型是整型。
6)数组最小的下标是0 。
7)arraycopy()的最后一个参数指明复制元素的个数。
8)向方法传递数组参数时,传递的是数组的引用。
9)数组初始化包括数组的申明,创建和初始化。
10)数组下标访问超出索引范围时抛出数组越界异常11)浮点型数组的默认值是0.0f 。
12)数组创建后其大小不能改变。
二选择题1.下面错误的初始化语句是_ABD__A. char str[]="hello";B. char str[100]="hello";C. char str[]={'h','e','l','l','o'};D. char str[]={'hello'};2.定义了一维int型数组a[10]后,下面错误的引用是_B__A. a[0]=1;B. a[10]=2;C. a[0]=5*2;D. a[1]=a[2]*a[0];3.下面的二维数组初始化语句中,正确的是____A. float b[2][2]={0.1,0.2,0.3,0.4};B. int a[][]={{1,2},{3,4}};C. int a[2][]= {{1,2},{3,4}};D. float a[2][2]={0};4.引用数组元素时,数组下标可以是_D___A. 整型常量B. 整型变量C. 整型表达式D. 以上均可5.定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为____A. 24B. 25C. 18D. 176.下列初始化字符数组的语句中,正确的是__B__A. char str[5]="hello";B. char str[]={'h','e','l','l','o','\0'};C. char str[5]={"hi"};D. char str[100]="";7.数组在Java中储存在 C 中A. 栈B. 队列C. 堆D. 链表8.下面程序的运行结果是____main() {int a[][]={{1,2,3},{4,5,6}};System.out.printf("%d", a[1][1]);}A. 3B. 4C. 5D. 69.下面程序的运行结果是_C___main() {int x=30;int[] numbers=new int[x];x=60;System.out.println(numbers.length);}A. 60B. 20C. 30D. 5010.下面程序的运行结果是__BDF__main() {char s1[]="ABCDEF".toCharArray();int i=0;while(s1[i++]!='\0')System.out.println(s1[i++]);}A. ABCDEFB. BDFC. ABCDED. BCDE11.下面不是创建数组的正确语句CA.float f[][]=new float[6][6];B.float f[]=new float[6];C.float f[][]=new float[][6];D.float [][]f=new float[6][];12.下面不是数组复制方法的是(C)A. 用循环语句逐个复制数组B. 用方法arraycopyC. 用"="进行复制D. 用clone方法13.数组a的第三个元素表示为DA. a(3)B. a[3]C.a(2)D. a[2]14.当访问无效的数组下标时,会发生BA. 中止程序B. 抛出异常C. 系统崩溃D. 直接跳过15.使用arraycopy()方法将数组a复制到b正确的是AA. arraycopy(a,0,b,0,a.length)B. arraycopy(a,0,b,0,b.length)C.. arraycopy(b,0,a,0,a.length)D. arraycopy(a,1,b,1,a.length)16.关于数组默认值,错误的是BA. char--'"u0000'B. Boolean--trueC. float--0.0fD. int-- 017.关于数组作为方法的参数时,向方法传递的是AA. 数组的引用B. 数组的栈地址C. 数组自身D. 数组的元素18.关于数组复制,下列说法错误的是ACA. "="可以实现数组复制B. 运用循环语句进行数组复制必须两个数组长度相同C. arraycopy()方法没有给目标数组分配内存空间D. 数组复制是数组引用的传递19.下列语句会造成数组new int[10]越界是DA. a[0] += 9;B. a[9]=10;C. —a[9]D. for(int i=0;i<=10;i++) a[i]++;20.在JDK环境下编译JAVA源程序使用的命令是(B )A.javaB.javacC.jvmD.tomcatD. 子类不能使用父类的构造方法21.main方法是java Application 程序执行的入口点。
数据结构练习题 第三章 栈、队列和数组 习题及答案
第三章栈、队列和数组一、名词解释:1.栈、栈顶、栈底、栈顶元素、空栈2.顺序栈3.链栈4.递归5.队列、队尾、队头6.顺序队7.循环队8.队满9.链队10.随机存储结构11.特殊矩阵12.稀疏矩阵13.对称方阵14.上(下)三角矩阵二、填空题:1.栈修改的原则是_________或称________,因此,栈又称为________线性表。
在栈顶进行插入运算,被称为________或________,在栈顶进行删除运算,被称为________或________。
2.栈的基本运算至少应包括________、________、________、________、________五种。
3.对于顺序栈,若栈顶下标值top=0,此时,如果作退栈运算,则产生“________”。
4.对于顺序栈而言,在栈满状态下,如果此时在作进栈运算,则会发生“________”。
5.一般地,栈和线性表类似有两种实现方法,即________实现和________实现。
6.top=0表示________,此时作退栈运算,则产生“________”;top=sqstack_maxsize-1表示________,此时作进栈运算,则产生“________”。
7.以下运算实现在顺序栈上的初始化,请在________处用适当的句子予以填充。
int InitStack(SqStackTp *sq){ ________;return(1);}8.以下运算实现在顺序栈上的进栈,请在________处用适当的语句予以填充。
Int Push(SqStackTp *sq,DataType x){ if(sp->top==sqstack_maxsize-1}{error(“栈满”);return(0);}else{________________:________________=x;return(1);}}9.以下运算实现在顺序栈上的退栈,请在________________用适当句子予以填充。
习题五--数组
习题五--数组⼀、A类程序设计题1、求⼀个4x4矩阵对⾓线元素之和。
2、⽤数组的⽅法求Fibonacci数列的值(要求输出前20个数)。
3、将⼀个3x4矩阵转置(⾏列互换)存放。
4、将⼀个数组中的数按逆序存放,例如原来的顺序为8,7,6,4,2,要求改为2,4,6,7,8。
5、⽤选择法对10个整数进⾏降序排序。
6、⽤冒泡法对10个整数进⾏升序排序。
7、编写⼀个简单程序,要求:(1)从键盘上输⼊8个整数放⼊数组a[8]中(⽤for循环实现);(2)求出数组元素的最⼤值及数组的平均值。
8、求3×4矩阵中每⼀列元素的最⼤值并输出。
9、求4×4矩阵中每⼀⾏元素的最⼩值并输出。
10、某班有30个学⽣,进⾏了数学考试,编写程序将考试成绩输⼊⼀维数组,并求数学的平均成绩及不及格学⽣的⼈数。
11、有⼀个3x4矩阵,求出最⼤元素,以及其所在的⾏号和列号。
12、从键盘上输⼊10个实数,然后按输⼊顺序的逆序输出这10个数。
13、从键盘输⼊10个整数,找出其中最⼤值和最⼩值。
14、输⼊10个学⽣的姓名、学号和成绩,将其中不及格者的姓名、学号和成绩输出。
15、输⼊字符串 s,统计出 s 中共出现了多少个数字字符。
⼆、B类程序设计题1、对⼀个已按由⼩到⼤排好顺序的整型数组,若从键盘输⼊⼀个数x,现要查询该数是否在此整型数组中,若存在则删除该数,否则显⽰“不存在”信息。
2、对⼀个已按由⼩到⼤排好顺序的整型数组,若从键盘输⼊⼀个数x,现要将该数插⼊到该数组中,使其插⼊后整个数组排序规律不变。
3、编写⼀程序,要求从键盘上输⼊10个整数放⼊⼀个数组中(⽤for循环实现),并编写求最⼤值的函数max,在主程序调⽤这个函数实现输出数组中10个整数的最⼤值,要求⽤数组名作为函数参数。
4、输⼊⼀个4⾏4列的⼆维数组,编程实现:(1) 求出其中的最⼤值和最⼩值及其对应的⾏列位置;(2) 求出对⾓线上各元素之和。
5、⽤筛选法求100之内的素数。
c语言一维数组上机考试题目
c语言一维数组上机考试题目
以下是一些关于C语言一维数组的常见上机考试题目:
1. 编写一个程序,输入一个整数n,求出1到n之间所有偶数的和。
2. 编写一个程序,输入一个整数n,求出1到n之间所有数字的阶乘之和。
3. 编写一个程序,输入一个整数n,求出1到n之间所有数字的立方之和。
4. 编写一个程序,输入一个整数n,求出1到n之间所有数字的平方之和。
5. 编写一个程序,输入一个整数n,求出1到n之间所有数字的倒数之和。
6. 编写一个程序,输入一个整数n,求出1到n之间所有数字的绝对值之和。
7. 编写一个程序,输入一个整数n,求出1到n之间所有数字的因子之和。
8. 编写一个程序,输入一个整数n,求出1到n之间所有数字的质因子之和。
9. 编写一个程序,输入一个整数n,求出1到n之间所有数字的奇数因子之和。
10. 编写一个程序,输入一个整数n,求出1到n之间所有数字的因子个数之和。
以上题目只是示例,实际上关于C语言一维数组的上机考试题目还有很多其他类型。
考生应该掌握一维数组的基本概念和操作,并且能够灵活运用数组来解决问题。
数据结构第五章数组习题
第五章数组习题1、假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=()。
A、808B、818C、1010D、10202、数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是( )。
A、1175B、1180C、1205D、12103、若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在B中确定a ij(i<j)的位置k的关系为( )。
A、i*(i-1)/2+jB、j*(j-1)/2+iC、i*(i+1)/2+jD、j*(j+1)/2+i4、对稀疏矩阵进行压缩存储目的是()。
A、便于进行矩阵运算B、便于输入和输出C、节省存储空间D、降低运算的时间复杂度5、已知广义表L=((x,y,z), a, (u,t,w)),从L表中取出原子项t的运算是()。
A、head(tail(tail(L)))B、tail(head(head(tail(L))))C、head(tail(head(tail(L))))D、head(tail(head(tail(tail(L)))))6、已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是( )。
A、head(tail(LS))B、tail(head(LS))C、head(tail(head(tail(LS)))D、head(tail(tail(head(LS))))7、多维数组之所以有行优先顺序和列优先顺序两种存储方式是因为()。
A、数组的元素处在行和列两个关系中B、数组的元素必须从左到右顺序排列C、数组的元素之间存在次序关系D、数组是多维结构,内存是一维结构8、二维数组M[0..7,0..9]的元素是由4个字符组成的串(每个字符占用1个存储单元),存放M需要存储单元数为()。
java数组习题答案
java数组习题答案Java数组习题答案在学习Java编程语言的过程中,数组是一个非常重要的概念。
它是一种用来存储相同类型数据的数据结构,可以帮助我们更有效地管理和操作数据。
在学习数组的过程中,我们经常会遇到一些习题,通过解答这些习题可以加深对数组的理解,提高编程能力。
下面我们来看一些常见的Java数组习题及其答案:1. 如何声明一个数组?答:可以使用以下语法来声明一个数组:```javaint[] arr = new int[5];```2. 如何初始化一个数组?答:可以使用以下语法来初始化一个数组:```javaint[] arr = {1, 2, 3, 4, 5};```3. 如何访问数组中的元素?答:可以使用以下语法来访问数组中的元素:```javaint[] arr = {1, 2, 3, 4, 5};System.out.println(arr[2]); // 输出3```4. 如何计算数组中元素的和?答:可以使用以下代码来计算数组中元素的和:```javaint[] arr = {1, 2, 3, 4, 5};int sum = 0;for (int i = 0; i < arr.length; i++) {sum += arr[i];}System.out.println("数组元素的和为:" + sum);```5. 如何找出数组中的最大值和最小值?答:可以使用以下代码来找出数组中的最大值和最小值:```javaint[] arr = {1, 2, 3, 4, 5};int max = arr[0];int min = arr[0];for (int i = 1; i < arr.length; i++) {if (arr[i] > max) {max = arr[i];}if (arr[i] < min) {min = arr[i];}}System.out.println("数组中的最大值为:" + max);System.out.println("数组中的最小值为:" + min);```通过解答这些习题,我们可以更加深入地理解和掌握Java数组的相关知识,提高自己的编程能力。
C数组习题
一、选择题:1.若有以下数组说明,则数值最小的和最大的元素下标分别是(b )。
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};A.1,12B.0,11C.1,11D.0,122.若有以下数组说明,则i=10;a[a[i]]元素数值是(c)。
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};A.10B.9C.6D.53.若有以下说明,则数值为4的表达式是( d)。
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a’,d,g;A.a[g-c]B.a[4]C.a[‘d’-‘c’]D.a[‘d’-c]4.下列语句中,正确的是(d )。
A.char a[3][]={‘abc’,‘l’};B.char a[][3]={‘abc’,‘l’};C.char a[3][]={‘a’,“l”};D.char a[][3]={“a”,“l”};5.下列定义的字符数组中,“printf(“%s\n”,str[2]);”的是输出是(c )。
static str[3][20]={“basic”,“foxpro”,“windows”};A.basicB.foxproC.windowsD.输出语句出错6.合法的数组定义是(d)。
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.语句“printf((“%d\n”,strlen(“ats\no12\1\\”));”的输出结果是(c )。
A.11B.10C.9D.88.设有如下字符数组定义,则合法的函数调用是(a )。
char a[]={“I am a student”},b[]={“techer”};A.strcmp(a,b);B.strcpy(a,b[0]);C.strcpy(a[7],b);D.strcat(a[7],b);9.设有如下定义,则正确的叙述为( c )。
C语言(数组)习题与答案
一、单选题1、下列描述中不正确的是()A.字符串的结束符是'\0'。
B.可以对字符型数组进行整体输入、输出。
C.字符型数组中能存放字符串。
D.字符串函数声明在ctype.h中。
正确答案:D2、下面是有关C语言字符数组的描述,其中错误的是()A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组只能存放字符串D.字符数组中的内容不一定是字符串正确答案:C3、下面是对数组s的初始化操作,其中不正确的是()A.char s[5]= " ";B.char s[5]={'a'};C.char s[5]={"a"};D.char s[5]= "abcdef";正确答案:D4、下面叙述正确的是()A.字符串"123 "与"123"相等。
B.字符串"123"小于字符串"2"。
C.两个字符串所包含的字符个数不相同时,才能进行大小比较。
D.字符个数多的字符串比字符个数少的字符串大。
正确答案:B5、下面程序段的输出结果是()char a[7]=“123456”;char b[4]=”ABC”;strcpy(a,b);printf(“%c”,a[5]);A.\0B.C.5D.6正确答案:D6、以下对二维数组a的正确说明是__。
A.double a[1][4];B.float a(3)(4);C. floatf a(3,4);D. int a[3][];正确答案:A7、以下能对二维数组a进行正确初始化的语句是__。
A. int a[][3]={{1,2,3},{4,5,6}};B.int a[2][]={{1,0,1},{5,2,3}};C.int a [2][4]={{1,2,3},{4,5},{6}};D. int a[][3={{1,0,1},{},{1,1}};正确答案:A8、若有说明: int a[3][4]={0};则下面正确的叙述是__。
第4章数组习题(C语言程序设计)
puts(strcpy(a[0],a[2]);的输出结果是__2_3____
第4章 数组
三、写出程序运行结果
第4章 数组
1. main() { int a[]={2,4,6,8,10};
int y=1,j;
y
j
1
0
for(j=0;j<3;j++)
1
y+=a[j+1];
2
y=y+a[1]+a[2]+a[3]
第4章 数组
程序设计基础—C语言
第4章 数组
第4章 数组
一、单项选择题 (第107页)
第4章 数组
1、定义数组时,表示数组长度的不能是 (A )
存储类型 数据类型 数组名[ 数组长度 ]
√A. 整型变量 int x=6 ; int a[x];
B. 符号常量 #define N 5 C. 整型常量 char b[ 5];
}
1 2 34 5678 9 13 15
则字符串s所占的字节数是(
)
字符串s的字节数=长度+1 sizeof(s)= strlen(s)+1
A. 19 C. 15
B. 18
√D. 16
第4章 数组
二、填空题
第4章 数组
1.若定义int a[10]={1,2,3};则a[2]的值__3___;
2.若定义char string[] =“You are a student!”;
s=10*6+’5’-’0’=65
s=10*65+’2’-’0’=652
s=10*652+’1’-’0’=6521
printf(“%d\n”,s); }
第3章 数组(习题答案及解析)
习题3 参考答案一、选择题3.1 C 分析:本题考查程序和数组的基本概念。
3.2 A 分析:字符串比较大小是以第1个不相同字符的大小为标准的,跟长度没有关系,B选项不正确;字符串比较大小除了使用库函数strcn3()以外,就只能靠自己写代码来实现了,而不能通过关系运算符来比较大小。
因为字符串在表达式中相当于const char*,即常字符指针,代表的是字符串的首地址,关系运算符会将两个字符串的首地址值比较大小,这是毫无意义的。
C选项不正确。
C语言中只有字符串常量而没有字符串变量,D选项描述不正确;空串的长度为0,而以空格打头的字符串的长度至少为1,因此A选项是正确。
3.3 A 分析:如果第一维的长度没有指定,则定义的同时需要完成初始化,否则不知道分配多大的内存空间给它,所以选项B、C错误;二维数组a[2][3]中只有两个元素,都是一维数组,一维下标最大只能是a[1],所以选项D错误;若完成初始化的二维数组,第一维的长度没有指定,则第一维的大小按如下规则确定:若初值个数能被第二维大小整除,所得的商就是第一维的大小,若不能整除,则所得的商加1作为第一维的大小,所以选项A相当于:double a[1][3] = {6};其中a[0][0]=6,其他元素赋值0,选项A正确,答案为A。
3.4 D 分析:本题考察的知识点是:字符串常量。
在C语言中,字符串常量是以双引号括起来的字符序列。
因此B选项和C选项不正确。
字符序列中可包含一些转义字符,转义字符都是以"\"开头的。
A选项中包含了三个"\",前两个(\\)代表了一个"\"字符,后面一个和"""一起(\")被看作一个""",所以该字符串缺少一个结束的""",因此不正确。
D选项的两个"""之间没有任何字符,代表的是一个空串,是合法的字符串常量,因此D选项正确。
数组练习题及答案
数组练习题及答案问题1:数组的基本操作题目:编写一个程序,实现以下功能:1. 初始化一个整型数组,大小为10,所有元素初始化为0。
2. 将数组中的元素依次设置为1到10。
3. 输出数组中的所有元素。
答案:```c#include <stdio.h>int main() {int arr[10] = {0};for (int i = 0; i < 10; i++) {arr[i] = i + 1;}for (int i = 0; i < 10; i++) {printf("%d ", arr[i]);}return 0;}```问题2:数组的反转题目:编写一个函数,实现对整数数组的反转。
答案:```cvoid reverseArray(int arr[], int size) {int start = 0;int end = size - 1;while (start < end) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}}```问题3:数组的查找题目:编写一个函数,实现在数组中查找特定元素的索引,如果找到返回该元素的索引,如果未找到返回-1。
答案:```cint findElement(int arr[], int size, int element) {for (int i = 0; i < size; i++) {if (arr[i] == element) {return i;}return -1;}```问题4:数组的排序题目:使用冒泡排序算法对整数数组进行排序。
答案:```cvoid bubbleSort(int arr[], int size) {for (int i = 0; i < size - 1; i++) {for (int j = 0; j < size - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}```问题5:数组的动态扩展题目:编写一个函数,实现对数组的动态扩展,使其能够存储更多的答案:```cvoid dynamicArrayExpansion(int *arr, int *size, int capacity, int newElement) {if (*size >= capacity) {int newCapacity = capacity * 2;int *newArr = (int *)malloc(newCapacity *sizeof(int));for (int i = 0; i < *size; i++) {newArr[i] = arr[i];}free(arr);arr = newArr;capacity = newCapacity;}arr[(*size)++] = newElement;}```结束语:这些练习题涵盖了数组的基本操作、查找、排序和动态扩展等常见问题,希望能够帮助您更好地理解和掌握数组的使用。
一维、二维数组及应用程序设计习题
一维、二维数组及应用程序设计习题1、 【字符统计问题】题目描述:试统计用户键盘输入的一串英文字符中每种英文字符个数。
题目要求:⑴相同英文字符的大小写形式视为同一种统计对象;⑵遇到任意非英文字符时统计终止;⑶输出数据时每行仅输出10个数据。
输入数据:abcdeABCDElKlhmn2输出数据:A(2) B(2) C(2) D(2) E(2) F(0) G(0) H(1) I(0) J(0)K(1) L(0) M(1) N(1) O(0) P(0) Q(0) R(0) S(0) T(0) U(0) V(0) W(0) X(0) Y(0) Z(0)2、 【约瑟夫(猴子选大王)问题】题目描述:有M(1000以内)个猴子围成一圈,每个有一个编号,编号从1到M 。
打算从中选出一个大王。
经过协商,决定选大王的规则如下:从第一个开始,每隔N(任意正整数)个,数到的猴子出圈,最后剩下来的就是大王。
题目要求:从键盘输入M 、N(均为正整数),试编程计算哪一个编号的猴子将成为大王。
输入数据:15 3 输出数据:5 200 55 93 3、 【行列互换问题】题目描述:试编程将一个二维数组行和列元素互换,存到另一个二维数组中。
例如:A =B = 4、 【矩阵初始化问题】题目描述:矩阵是线性代数中的重要概念及研究工具,在计算机算法设计中,我们常常选用二维数组之类的数据结构来描述矩阵。
下图是两个4×4的下三角方阵(即行列相等)初始化后的状态,请编程输出任意方阵(用户从键盘输入方阵的行列值)的这类初始化状态。
A 4×4 =B 4×4 =5、 【杨辉三角问题】题目描述:杨辉三角(出自其1261年所著的《详解九章算法》,也叫贾宪三角或帕斯卡三角),它可以简单解释为由两个未知数和的幂次方运算后按某个未知数的降幂排列(或另一未知数的升幂排列)后的系数表(二项式定理)。
比如(x+y)0=1,系数为(1);(x+y)1=x+y ,系数为(1、1);(x+y)2=x 2+2xy+y 2,系数为(1、2、1);(x+y)3=x 3+3x 2y+3xy 2+y 3,系数为(1、3、3、1)以及四次、五次、……等运算后所得的系数表,如下图(仅举5行):题目要求:⑴利用一维数组试求用户给定行数的杨辉三角形;⑵利用二维数组试求用户给定行数的杨辉三角形(请尽力严格按照上图要求的输出格式)。
数组习题及答案
构造数据对象——数组一、填空题1.数组是一组相同的集合。
2.数组名代表数组的。
3.数组元素在数组中的位置序号称为它是从开始整数。
4.有int a[ ]={4,6,2,12,435,-9,76,0,0};该数组元素值最大的下标为。
5.定义数组tw,其能存储23个长整形数的语句为。
6.有说明语句int a[10]={1,2,3,4,5,6};则元素a[9]的值为。
7.数组char c[ ]=”abcd”中有个元素,最后一个元素是。
8.”a”在内存中占个存储单元。
9.定义一个能存放下字符串Vocation的字符数组enm的语句为。
10.定义一个可保存100个整型数的数组pn,并把每个元素初值设为0的语句是。
11.与puts(ss)等价的printf函数调用是。
二、选择题1.下面关于数组的说法,不正确的是()A.数组总为一个整体,可以参加算术运算B.数组中的数组元素相当于一个简单变量C.数组可以用来保存字符串D.数组是一组连续的,类型相同的数据集合2.下列说法不是数组特性的是()A.数组元素类型相同B.数组长度固定C.数组占用连续的内存空间D.数组可作为一个整体参与运算3.定义一个具有8个元素的整形数组,应使用语句()A.int a[8]; B.int a[2,4];C.int a[ ]; D.int *a[8];4. 以下能正确定义一维数组的选项是()A.int num[ ];B.#define N 100 int num[N];C.int num[0..100];D.int N=100;5.下面对s的初始化,不正确的是()A.char s[5]={“abcd”};B.char s[5]={‘a’,’b’,’c’};C.char s[5]=””;D.char s[5]=”abcd”;6.对以下说明语句正确的理解是()int a[10]={6,7,8,9,10,12};A.将6个初值依次赋值给a[1]至a[5];B.将6个初值依次赋值给a[0]至a[5];C.将6个初值依次赋值给a[5]至a[10];D.因数组长度和初值的个数不同,所以此语句不正确7.用scanf语句为数组a中的第二个数组元素输入数据,格式正确的是()A.scanf(“%d”,a[2]);B.scanf(“%d”,&a[2]);C.scanf(“%d”,&a[1]);D.scanf(“%d”,a(1));三、判断题1.数组在内存中占用的空间是不连续的。
C语言习题六(数组部分)习题及答案
C语言习题六(数组部分)习题及答案习题六一.选择题1.在C语言中,引用数组元素时,其数组下标的数据类型允许是c 。
A)整型常量B)整型表达式C)整型常量或整型表达式C)任何类型的表达式2.以下对一维整型数组a的正确说明是DA)int a(10) ; B)int n=10,a[n];C)int n; D)#define SIZE 10scanf(“%d”,&n);int a[SIZE];int a[n];3.若有定义:int a[10],则对数组a元素的正确引用是 D 。
A)a[10] B)a[3.5] C)a(5) D)a[10-10]4.以下不能对一维数组a进行正确初始化的语句是B 。
A)int a[10]={0,0,0,0,0}; B)int a[10]={} ;C)int a[ ] = {0} ; D)int a[10]={10*1} ;5.若有定义:int a[3][4],则对数组a元素的正确引用是。
AA)a[2][3] B)a[1,3] C)a(5) D)a[10-10]6.以下能对二维数组a进行正确初始化的语句是B。
A)int a[2][]={{1,0,1},{5,2,3}} ;B)int a[][3]={{1,2,3},{4,5,6}} ;C)int a[2][4]={{1,2,3},{4,5},{6}} ;D)int a[][3]={{1,0,1},{},{1,1}} ;7.以下不能对二维数组a进行正确初始化的语句是。
CA)int a[2][3]={0} ;B)int a[][3]={{1,2},{0}} ;C)int a[2][3]={{1,2},{3,4},{5,6}} ;D)int a[][3]={1,2,3,4,5,6} ;8.若有说明:int a[3][4]={0};则下面正确的叙述是D。
A)只有元素a[0][0]可得到初值0B)此说明语句不正确C)数组a中各元素都可得到初值,但其值不一定为0D)数组a中每个元素均可得到初值09.若有说明:int a[][4]={0,0};则下面不正确的叙述是D。
小学数组练习题
小学数组练习题1. 基础练习(1) 请将下列数字按从小到大的顺序排列:9, 4, 12, 7, 2(2) 小华一共有8个苹果,他每天吃掉2个。
请问了几天后他会吃完所有的苹果?(3) 某小组有12个学生,老师让他们分成3个小组,每个小组有几个学生?(4) 请列举出2的前5个倍数。
(5) 小明有14元,他买了一本书花了6元,还剩下多少钱?(6) 小林用一个带有10个亮灯的电路板制作了一个街景模型,其中4个灯坏了。
那么街景模型上亮灯的数量是多少?2. 进阶练习(1) 将下列数字按从大到小的顺序排列:15, 9, 21, 18(2) 小华一共有15个橙子,他每天吃掉3个。
请问了几天后他会吃完所有的橙子?(3) 某小组有28个学生,老师让他们分成7个小组,每个小组有几个学生?(4) 请列举出3的前5个倍数。
(5) 小明有25元,他买了一支笔花了7元,还剩下多少钱?(6) 小林用一个带有15个亮灯的电路板制作了一个太阳系模型,其中6个灯坏了。
那么太阳系模型上亮灯的数量是多少?3. 挑战练习(1) 将下列数字按从小到大的顺序排列:23, 16, 32, 19, 27(2) 小华一共有30个水果,他每天吃掉4个。
请问了几天后他会吃完所有的水果?(3) 某小组有42个学生,老师让他们分成6个小组,每个小组有几个学生?(4) 请列举出4的前5个倍数。
(5) 小明有38元,他买了一本画册花了12元,还剩下多少钱?(6) 小林用一个带有20个亮灯的电路板制作了一个城市模型,其中8个灯坏了。
那么城市模型上亮灯的数量是多少?以上是小学数组练习题,分为基础练习、进阶练习和挑战练习三个部分。
希望这些练习能够帮助你更好地理解和掌握数组的概念和基本运算。
加油!。
第四章 数组习题集答案
20.若已有定义char s[10]; int i;下列输入函数调用中错误的是【】。
A)for (i=0; i<10; ++i) s[i]=getchar( ) ;
B)for (i=0; i<10; i++) scanf("%c",s[i] );
C)scanf("%s",s);
#include <stdio.h>
main()
{
int i=0,x=0;
int a[][4]={0,2,0,3,0,3,4,0,4,5,6,7,6,5,0,0};
while (i<4)
{
x+=【】;
i++;
}
printf("%d\n",x);
}
A)a[3-i][3-j]B)a[i][3-i]C)a[i][i]D)a[3-i][4]
printf ("%d\n",strlen(s1));
A)5B)2C)6D)7
37.定义如下变量和数组:
int i;
int x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句输出结果是【】
for(i=0;i<3;i++) printf("%d",x[i][0]);
A)1 4 7B)3 57C)3 6 9D)1 5 9
第四
一、选择题
1.如果char型变量占两个字节的存储单元,则按照如下方式定义的数组x占用的字节数是【】。
char x[50]={2,4,6,8,10};
A)50B)100C)10D)5
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数组一、思考题1.要分配存放12个元素的整型数组,下列数组声明(下界若无,按默认规定)哪些符合要求?(1) n=12 (2) Dim a%( )Dim a(1 To n) As Integer n=11ReDim a(n)(3) Dim a%[2,3] (4) Dim a(1,1,2) As Integer(5) Dim a%(10) (6) Dim a!( )ReDim a(1 To 12) ReDim a(3,2) As Integer(7) Dim a%(2,3) 8) Dim a(1 to 3, 1 to 4) As Integer2.已知下面的数组声明,写出它的数组名、数组类型、维数、各维的上、下界、数组的大小、并按行的顺序列出各元素。
Dim a(-1 to 2,3) As Single3. 已声明了静态数组A(3, 4),能否在下面再用重定义动态数组A(4, 4)来重定义A数组的大小吗?二、选择题1.以下关于数组的说法,不正确的是______。
(A)静态数组在声明时大小必须固定(B)动态数组在声明时大小可以不确定(C)默认情况下数组的下界为0 (D)运行时可改变动态数组或静态数组的大小2.有关数组的说法,错误的是______。
(A)数组是一种特殊的数据类型(B)一个数组中可存放多种类型的数据(C)数组是一组相同类型的变量的集合(D)数组可以被声明为变体类型3.如下数组声明语句,______正确。
(A)Dim a[3, 4] As Integer (B)Dim a(3, 4) As Integer(C)Dim a(n, n) As Integer (D)Dim a(3 4) As Integer4. 要分配存放如下方阵的数据,______数组声明语句能实现(不能浪费空间)。
(A)Dim a(9) As Single (B)Dim a(3, 3) As Single(C)Dim a( 1 To 3 , 1 To 3) As Single(D)Dim a( -3 To -1 , 5 To 7) As Integer5. 如下数组声明语句,则数组a包含元素的个数有______。
Dim a(3, -2 to 2,5)(A)120 (B)75 (C)60 (D)136. 以下程序输出的结果是______。
Dim aa = Array(1, 2, 3, 4, 5, 6, 7)For i = Lbound (a) To Ubound (a)a(i) = a(i) * a(i)Next iPrint a(i)(A)49 (B)0 (C)不确定(D)程序出错7.下列数组声明语句中的数组a包含了______个数组元素Dim a(4,-1 To 2, 3)(A) 120 (B) 11 (C)60 ( D)808. 有如下程序段:Type studentnl as Integername as String*13End TypeDim stu As student该程序段定义了两个程序成分,它们分别是______(A)数据类型和自定义类型变量(B)自定义类型和变量(C)显示类型和变量(D)自定义类型和自定义类型变量9.在窗体的通用声明段自定义了数据类型student,下列定义方式是正确的。
(A) Private Type student (B)Type studentNo as Integer No as IntegerName as String *8 Name as String *8End Type End student(C) Type student (D)Type studentNo Integer No as IntegerName String *8 Name as String *8End Type End Type10. 设数组a中有N个元素,并已按递增次序排列,下面______程序段可以使a数组的元素按递减次序排列。
(A) For i = 1 To N (B) For i = 1 To N / 2a(N - i + 1) = a(i) a(i) = a(N - i + 1)Next i Next i(C)For i = 1 To N (D)For i = 1 To N / 2t = a(i) t = a(i)a(i) = a(N - i + 1) a(i) = a(N - i + 1)a(N - i + 1) = t a(N - i + 1) = tNext i Next i三、填空题1. 在VB中,若要设定每个数组默认的下界固定为1,其声明语句是_option base 1_____ 。
2. 程序中自动测试数组的下界用__Lbound____函数来实现,上界用_Ubound_____函数来实现。
3. 当数组首次被声明时,对所有数值型数组默认初值是_0_____;字符串数组默认初值是_空_____。
4. 当用ReDim语句要改变动态数组的大小时,数组元素的值会_丢失_____;用_Preserve_____关键字可保留数组元素原来的值。
5. 已知建立了5个元素的Command1控件数组,用_Index__参数可识别用户单击了某控件数组元素。
6. 在一个二维数组中,第一个下标指明了一个元素的_行_____;第二个下标指明了元素的_列_____。
7. 已知如下a(1 To 5)数组和i、j、k变量有了初值:请写出下列各数组元素的值或会产生什么情况:a(3)=_5__;a(i)=_3_; a(i+j)=_越界_____;a(k-i)=______;a(a(i))=______; a(3+k\3)=______;a(i*j)=______; a(0)=______;8. 如下程序中随机产生6位学生的分数(分数范围1~100),存放在数组a中,以每2分一个"*"显示,如图1.5.14所示。
Private Sub Command1_Click()Dim a%(1 To 6)For i = 1 To 6a(i) = _Int(Rnd*100+1)_Print string(a(i)\2,_”*”);”A”& “(“& “)”& “=” & a(i)_Next iEnd Sub图1.5.14:随机分数运行界面9.下面程序的功能是从键盘输入6个整数,找出最大数和最小数所在的位置,并把两者对调,然后输出调整后的6个数。
Private Sub Command1_Click()Dim a(5) As Integer, max%,maxi%, min%,mini%, i%,t%For i = 0 To 5a(i) = _val(text1)__Next imin=a(0):mini=0max=a(0):maxi=0For i = 1 To 5If _a(i)<min___ Then mini = iIf _a(i)>max___ Then maxi=iNext it=a(maxi)_a(maxi)=a(mini)_a(mini) = tFor i = 0 To 5Print a(i);Next iEnd Sub过程一、思考题1. 简述子过程与函数过程的共同点、不同处?2. 什么是形参?什么是实参?什么是值引用?什么是地址引用?地址引用时,对应的实参有没有限制?3.请比较函数过程和子过程调用的区别。
4.请说明局部变量与静态变量的区别。
5. 指出下面过程语句说明中的错误。
(1) Sub f1( n%) As Integer 子过程f1没有类型(2) Function f1%(f1%) 函数过程名和形参同名(3) Sub f1(ByVal n%()) 形参数组必须是传址(4) Sub f1( x(i) as Integer) 形参不能指定大小,6.已知有如下求两个平方数和的fsum子过程:Public Sub fSum(sum%, ByVal m%, ByVal n%)sum = a * a + b * bEnd Sub在事件过程中有如下变量声明:Private Sub Command1_Click()Dim a%, b%, c!a = 10:b = 20则指出如下过程调用语句错误所在:(1) fsum 3, 4, 5(2) fsum c, a, b(3) fsum a + b, a, b(4) Call fsum(Sqr(c), sqr(a), Sqr(b))(5) Call fsum c,a, b7. 要使变量在某事件过程中保值,有哪几种变量声明的方法?声明变量为全局(public),通用声明段或标准模块声明的模块级变量,局部过程声明的静态变量(static).8. 为了使某变量在所有的窗体中都能使用,应在何处声明该变量?在标准模块声明的全局变量9. 在同一模块、不同过程中声明的相同变量名,两者是否表示同一个变量?有没有联系?表示不同的变量,没有任何关系二、选择题1.下面的过程定义语句中,______是合法的。
(A)Function Sub1(Sub1) (B)Function Sub1(ByVal n)(C)Sub Sub1(Sub1) (D)Sub Sub1(n) As Integer2.主过程通过参数传递将一个参数传递给子过程A,并返回一个结果,下列子过程定义中正确的是______。
(A) Sub A (m+1, n+2) (B) Sub A( byval m!,byval n!)(C) Sub A (byval m!, n+2) (D) sub A (byval m!, n!)3. 在Visual Basic中,下列关于变量的叙述正确的是______.(A)在窗体的Form_Load事件过程中声明的变量是全局变量(B)局部变量的作用域为窗体内的全部过程(C)在某个子过程中声明的变量不能与其他事件过程中声明的变量同名(D)在调用过程时,所有局部变量被系统初始化为0或空字符串4. 子过程与函数过程最根本的区别是______。
(A)前者可以使用Call或者直接使用过程名调用,后者不可以(B)前者不可以有参数,后者可以有参数(C)两种过程参数的传递方式不同(D)前者无返回值,但后者有返回值5. 假定有如下的Sub过程:Sub fun(x As Single,y As Single)t=xx=t\yy=t Mod yEnd Sub在窗体上画一个命令按钮和两个文本框(其Name属性分别为Txtl和Txt2),然后编写如下事件过程:Private Sub Command1_Click()Dim a As Single,b As Singlea=CInt(Txt1.Text) 'Cint函数表示转换成整型b=CInt(Txtl.Text)Call fun(a,b)Print a,bEnd Sub程序运行时在两个文本框中输入5, 6,单击命令按钮,输出结果为______(A)5 6 (B) 0 5 (C) 1 4 (D) 1 26.若要编写一些Sub子过程,并能从多个窗体中访问这些过程,最好应将它们放在______中。