数组练习题

合集下载

c语言数组练习题及答案

c语言数组练习题及答案

c语言数组练习题及答案第一题:在数组a中,存放有n个学生的成绩.试编一函数:将低于平均分的学生人数m由函数值返回,将低于平均分的分数由数组b带回. int fun(int a[],int n,int b[]) {int i,m=0,aver=0;for(i=0;i<n;i++) aver+=a[i];aver/=n;for(i=0;i<n;i++)if(a[i]<aver) b[m++]=a[i];return m;}第二题:试编一函数:求出1000之间能被7或11整除,但不能同时被7或11整除的所有整数的个数n由函数值返回,并将符合条件的数放在数组a中带回. int fun(int a[]){int i,n=0;for(i=1;i<1000;i++)if((i%7==0&&i%11!=0)||(i%7!=0&&i%11==0)) a[n++]=i;return n;}第三题:试编一函数:将大于整数m且紧靠m的k个素数存入数组a中. void fun(int m,int k,int a[]) {int i,n,data,flag;data=m+1; n=0;while(n<k){flag=1;for(i=2;i<=data/2;i++)if(data%i==0){flag=0; break;}if(flag) a[n++]=data;data++;}}第四题:试编一函数:在数组a中有n个整数,要求把下标从0到p(p小于等于n-1)的数平移到数组的最后.如:原始内容: 1,2,3,4,5,6,7,8,9,10; 当p=4时:移后内容: 6,7,8,9,10,1,2,3,4,5void fun(int a[],int n,int p) {int i,j,t;for(i=0;i<=p;i++){t=a[0];for(j=1;j<n;j++) a[j-1]=a[j];a[n-1]=t;}}第五题:试编一函数:在具有n个数据的数组a中,求出次最大值的下标并由函数值返回.int fun(int a[],int n){int i,j,max,may;if(a[0]>a[1]){max=0; may=1;}else {max=1; may=0;}for(i=2;i<n;i++)if(a[i]>a[max]){may=max;amx=i;}else if(a[i]>a[may]) may=i;return may;}第六题:在数组a中有n个四位数.试编一函数,要求按每个数的后三位的大小进行升序排列,当后三位等相同时,则对这些数值按原始四位数据进行降序排序.将排序后的前10个数存入数组b中.(提示:可采用选择排序)int fun(int a[],int n,int b[]) {int i,j,k,t,m=10;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(a[j]%1000<a[k]%1000) k=j;else if(a[j]%1000==a[k]%1000 && a[j]>a[k]) k=j;if(k!=i){t=a[i]; a[i]=a[k]; a[k]=t;}}for(i=0;i<m;i++) b[i]=a[i];return m;}第七题:在三位数(100至999)中寻找符合下面条件的整数.它即是完全平方数,又有两位数字相同.(如:144,676;)并将符合条件数的个数n由函数值返回,符合条件的数存入数组a中返回.int fun(int a[]){int i,j,hun,ten,data,n=0;for(i=10;i<32;i++){j=i*i;if(j>=100&&j<=999){hun=j/100;ten=j%100/10;data=j%10;if(hun==ten||ten==data||data==hun) a[n++]=j;}}return n;}第八题:判断一个长整型数是否为回文数(回文数是指其数字左右对称的整数).当该数是回文数时,函数值返回1,否则返回0.(提示:利用逻辑量flag进行操作). intfun(long m){int i=0,n=0,flag=1,a[20];while(m){a[n]=m%10; m=m/10; n++;}while(i<=n/2 && flag)if(a[i]!=a[--n] flag=0;else i++;return flag;}第九题:在数组a中存有n个数据,试编一函数:依次从数组中取出一个数据,如查该数连续大于该数以后的5个数且该数是奇数,统计出满足此条件数的个数m由函数值返回,并把这些数按从小到大的顺序存入数组b中.int fun(int a[],int n,int b[]) {int i,j,flag,m=0;for(i=0;i<n-5;i++){for(j=i+1;j<=i+5;j++)if(a[i]>a[j]) flag=1;else {flag=0; break;}if(flag==1 && a[i]%2==1) b[m++]=a[i];}for(i=0;i<m-1;i++)for(j=0;j<m-1-i;j++)if(b[j]>b[j+1]){flag=b[j]; b[j]=b[j+1]; b[j+1]=flag;}return m;}第十题:在数组a中有n个四位数,试编一函数:求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数m由函数值返回,再把所有满足此条件的四位数依次存入数组b中,然后对数组b中的四位数按从小到大的顺序排序.int fun(int a[],int n,int b[]) {int i,j,m,thou,hun,ten,data;for(i=0;i<n;i++){thou=a[i]/1000;hun=a[i]%1000/100;ten=a[i]%100/10;data=a[i]%10;if(thou+data==hun+ten) b[m++]=a[i];}for(i=0;i<m-1;i++)for(j=0;j<m-1-i;j++)if(b[j]<b[j+1]){data=b[j]; b[j]=b[j+1]; b[j+1]=data;}}第十一题:在数组a中有n=100个人围坐一圈并按顺时针方向从1到n编号,从第s=1个人开始进行从1到m=10的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止,现要求将出圈次序重新存入数组a中.void fun(int a[],int n,int s,int m) {int i,j,k,l,x;i=s-1; k=0; l=n;while(l>0){k++;if(k==m){x=a[i];for(j=i+1;j<n;j++) a[j-1]=a[j];a[n-1]=x;k=0; l--;}else i++;if(i==l) i=0;}}。

C语言程序设计练习题之数组与结构体

C语言程序设计练习题之数组与结构体

一、单项选择题(在每小题列出的四个备选项中只有一个是符合题目要求的。

) 1.若有定义 int a[4] = {l, 2, 3, 4};则 a[a[0]+2 * a[2]-a[3]]等于A. 1B. 2C. 3D. 42 .设有数组定义:char array [ ]=〃China 〃;则数组array 所占的空间为A. 4个字节B. 5个字节C. 6个字节D. 7个字节3 .设有定义 char a 口=“xyz”, b □二{'x',' y',' z'};,则语句 cout«sizeof (a)«* ,,«sizeof (b) «endl;的输出结果为 A. 3 3B. 3 4C. 4 3D. 4 44 .设 int b[ ][5]={1,2,3,4,5,6,7};,则元素 b[l] [2]的值是A. 0B. 2C. 6D. 75 .数组定义为int a L2J [3j={1, 2, 3, 4, 5, 6},值为1的数组元素是A. a [0] [0] B, a [1] [1] C. a [1] [2] D. a [2] [3]6 . C++中,若有说明:int a[3] [4];则对a 数组元素的正确引用是9 .设 char x[][10] = {〃Windows 〃,〃dos 〃,〃unix 〃};,执行 cout«x[l][2];后输出的结果是A. nB. iC. oD. s10 .以下叙述中错误的是A.对于double 类型数组,不可以直接用数组名对数组进行整体输入或输出B.数组名代表的是数组所占存储区的首地址,其值不可改变C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界” 的出错信息D.可以通过赋初值的方式确定数组元素的个数11 .设#pragma pack(l),则结构体类型变量占用内存的字节数是A.各成员占用内存字节数之和B.第一个成员占用的内存字节数C.占用内存最大成员所需的字节数D.最后一个成员占用的内存字节数12 .下面程序运行后,输出结果是#include <iostream> using namespace std;数组与结构体A. a[2][4] B, a[l + l][0] 7 .定义二维数组并初始化,正确的是A.mta[][]={l,2,3,4,5,6}; C.inta[][3]={ 1、2,3,4,5,6}; 8 .以下数组定义中,不正确的是A. inta[2][3];C. int c[100][100]={0};C. a(2)(l)D. a[l,3] B.int a[2][]={ 1,2,3,4,5,6};D.inta[2,3]={ 1,2,34,5,6};B. mt b[][3]={0,l,2,3);D. mt d[3][]={]l,2},{l,2,3},{l,2,3,4}};21int/mtp[8]={l,2,3,4,5,6,7,8}J=0,j=0;while(i++<7)if(p[i]%2) j+=p[i];cout<<j«endl;return 0;}A. 15B. 16C. 20D. 3613.下面程序运行后,输出结果是#include <iostream>using namespace std;int main()int a[3][3]={{l,2},{3,4},{5,6}},ij,s=0;fbr(i=l;i<3;i++)砧i(J=0jv=i;j++)s+=a[i][j];cout«s«endl;retuin 0;}A. 18B. 19C. 20D. 2114.下面程序运行后,输出结果是#mclude<iostieam>using namespace std;int main(){ mt a[3][3]={l,2,3,4,5,6,7,8,9},n,sum=0;fdi(n=0;n<3;n++)sum=sum+a [n] [n];cout«sum«endl;return 0:}A. 6B. 12C. 15D. 4515.下面程序运行后,输出结果是#include <iostream>using namespace std;stmct abc{ mt a, b, c; };int main。

数组练习题及答案

数组练习题及答案

第五章数组练习题及答案一、选择题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、下面程序段是输出两个字符串中对应相等的字符。

数据结构与算法实践练习题目及解答

数据结构与算法实践练习题目及解答

数据结构与算法实践练习题目及解答以下是一些数据结构与算法的实践练题目及其解答。

1. 数组相关题目题目一给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回它们的索引。

def twoSum(nums, target):nums_dict = {}for i in range(len(nums)):nums_dict[nums[i]] = i题目二给定一个整数数组 nums,将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

def moveZeroes(nums):count = 0for i in range(len(nums)):if nums[i] != 0:nums[count] = nums[i]count += 1while count < len(nums):nums[count] = 0count += 12. 链表相关题目题目三反转一个单链表。

class ListNode:def __init__(self, val=0, next=None): self.val = valself.next = nextdef reverseList(head):prev = Nonecurr = headwhile curr is not None:next_node = curr.nextcurr.next = prevprev = currcurr = next_nodereturn prev题目四给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

def deleteDuplicates(head):curr = headwhile curr is not None and curr.next is not None:if curr.val == curr.next.val:curr.next = curr.next.nextelse:curr = curr.nextreturn head以上是一些数据结构与算法的实践练习题目及其解答。

C程序设计(数组)习题与答案

C程序设计(数组)习题与答案

C程序设计(数组)习题与答案C程序设计(数组)习题与答案数组是C语言中常用的数据结构之一,它可以存储多个相同类型的元素。

掌握数组的使用对于C程序设计至关重要,下面将为大家介绍一些关于C数组的习题及其答案。

1. 习题一:计算数组元素的和题目描述:编写一个程序,计算给定数组中所有元素的和,并输出结果。

解题思路:```c#include <stdio.h>int main() {int arr[5] = {1, 2, 3, 4, 5}; // 定义一个包含5个元素的整型数组int sum = 0; // 用于存储和的变量// 遍历数组,累加每个元素的值for (int i = 0; i < 5; i++) {sum += arr[i];}printf("数组元素的和为:%d\n", sum);return 0;}```2. 习题二:查找数组中的最大值题目描述:编写一个程序,找出给定整型数组中的最大值,并输出结果。

解题思路:```c#include <stdio.h>int main() {int arr[7] = {4, 7, 2, 9, 1, 5, 8}; // 定义一个包含7个元素的整型数组int max = arr[0]; // 假设第一个元素为最大值// 遍历数组,比较每个元素的值与当前最大值的关系for (int i = 1; i < 7; i++) {if (arr[i] > max) {max = arr[i];}}printf("数组中的最大值为:%d\n", max);return 0;}```3. 习题三:查找数组中的特定元素题目描述:编写一个程序,在给定整型数组中查找是否存在指定元素,并输出结果。

解题思路:```c#include <stdio.h>int main() {int arr[6] = {3, 6, 9, 2, 5, 8}; // 定义一个包含6个元素的整型数组 int target = 2; // 指定要查找的元素int found = 0; // 用于标记是否找到目标元素的变量// 遍历数组,比较每个元素的值与目标值的关系for (int i = 0; i < 6; i++) {if (arr[i] == target) {found = 1;break;}}if (found) {printf("数组中存在目标元素:%d\n", target);} else {printf("数组中不存在目标元素:%d\n", target);}return 0;}```4. 习题四:数组元素逆序排列题目描述:编写一个程序,将给定整型数组的元素逆序排列,并输出结果。

数组练习题大全

数组练习题大全

数组练习题大全数组是计算机编程中一种重要的数据结构。

掌握数组的基本操作和应用是每个程序员都需要具备的技能之一。

本文将为您提供一系列数组练习题,帮助您熟练掌握数组的使用。

一、基础操作题1. 请编写一个程序,创建一个长度为5的整型数组,然后将数组中的元素依次赋值为1、2、3、4、5,并输出数组中的所有元素。

2. 请编写一个程序,创建一个长度为10的字符型数组,然后将数组中的元素依次赋值为'A'、'B'、'C'、'D'、'E'、'F'、'G'、'H'、'I'、'J',并输出数组中的所有元素。

3. 请编写一个程序,创建一个长度为7的浮点型数组,然后使用循环从键盘输入数组中的元素值,并计算数组中所有元素的平均值。

二、查找与排序题4. 请编写一个程序,在一个已知整型数组中查找指定的元素。

如果找到该元素,则输出该元素的下标位置;如果未找到,则输出"未找到该元素"。

5. 请编写一个程序,将一个已知整型数组按照从小到大的顺序进行排序,并输出排序后的结果。

三、统计与分析题6. 请编写一个程序,统计一个整型数组中负数的个数,并输出统计结果。

7. 请编写一个程序,计算一个整型数组中所有元素的和,并输出总和。

8. 请编写一个程序,找出一个整型数组中的最大值和最小值,并输出这两个值。

四、应用题9. 请编写一个程序,统计一个整型数组中奇数和偶数的个数,并输出统计结果。

10. 请编写一个程序,从一个已知整型数组中删除指定的元素,并输出删除后的数组。

11. 请编写一个程序,将一个整型数组中的所有元素向左移动一位,并输出移动后的数组。

12. 请编写一个程序,将一个整型数组中的所有元素向右移动一位,并输出移动后的数组。

总结:通过以上一系列的数组练习题,您可以逐步掌握数组的使用技巧。

Java数组练习题目

Java数组练习题目

Java数组练习题目一填空题1)数组的元素通过来访问,数组Array的长度为。

2)数组复制时,\将一个数组的传递给另一个数组。

3)没有显式引用变量的数组称为数组。

4)JVM将数组存储在(堆或栈)中。

5)数组的二分查找法运用的前提条件是数组已经。

6)矩阵或表格一般用维数组表示。

7)如果把二维数组看成一维数组,那么数组的元素是数组。

8)Java 中数组的下标的数据类型是。

9)不用下标变量就可以访问数组的方法是。

10)数组最小的下标是。

11)arraycopy()的最后一个参数指明。

12)向方法传递数组参数时,传递的是数组的。

13)线性查找法的平均查找长度为。

14)数组初始化包括。

15)数组下标访问超出索引范围时抛出异常16)浮点型数组的默认值是。

17)对象型数组的默认值是。

18)对象类型的数组虽然被默认初始化,但是并没有构造函数。

19)二维数组的行的长度不同。

20)数组创建后其大小改变。

二选择题1.下面错误的初始化语句是___A.chartr[]=\B.chartr[100]=\C.chartr[]={'h','e','l','l','o'};D.chartr[]={'hello'};2.定义了一维int型数组a[10]后,下面错误的引用是___A.a[0]=1;B.a[10]=2;C.a[0]=5某2;D.a[1]=a[2]某a[0];3.下面的二维数组初始化语句中,正确的是____A.floatb[2][2]={0.1,0.2,0.3,0.4};B.inta[][]={{1,2},{3,4}};C. inta[2][]={{1,2},{3,4}};D.floata[2][2]={0};4.引用数组元素时,数组下标可以是____A.整型常量B.整型变量C.整型表达式D.以上均可5.定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为____A.24B.25C.18D.176.下列初始化字符数组的语句中,正确的是____A.chartr[5]=\B.chartr[]={'h','e','l','l','o','\\0'};C.chartr[5]={\D.chartr[100]=\7.数组在Java中储存在中A.栈main(){B.队列C.堆D.链表8.下面程序的运行结果是____int某=30;int[]number=newint[某];某=60;Sytem.out.println(number.length);}A.60B.20C.30D.509.下面不是创建数组的正确语句A.floatf[][]=newfloat[6][6];C.floatf[][]=newfloat[][6];10.下面不是数组复制方法的是()A.用循环语句逐个复制数组C.用\进行复制A.a(3)11.数组a的第三个元素表示为B.a[3]C.a(2)D.a[2]12.当访问无效的数组下标时,会发生A.中止程序B.抛出异常C.系统崩溃D.直接跳过13.使用arraycopy()方法将数组a复制到b正确的是A.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)14.关于数组默认值,错误的是A.char--'\B.Boolean--trueC.float--0.0fD.int--015.关于数组作为方法的参数时,向方法传递的是A.数组的引用B.数组的栈地址C.数组自身D.数组的元素16.关于数组复制,下列说法错误的是A.\可以实现数组复制B.运用循环语句进行数组复制必须两个数组长度相同C.arraycopy()方法没有给目标数组分配内存空间D.数组复制是数组引用的传递17.下列语句会造成数组newint[10]越界是A.a[0]+=9;B.a[9]=10;()A.publictaticvoidmain();B.publictaticvoidmain(String[]arg)C.publictaticintmain(String[]arg)D.publicvoidmain(Stringarg[ ])C.—a[9]D.for(inti=0;i<=10;i++)a[i]++;18.main方法是javaApplication程序执行的入口点。

数组应用练习题

数组应用练习题

5、给出10个老师的打分,对10个老师的打分找出最高分。
6、有30个0-9之间的数字,分别统计0-9义一个整型数组,保存10个数据,利用程序将最大值保存到数组中第一个元素的操作。
8、定义一个int型的一维数组,包含10个元素,分别赋值为1~10, 然后将数组中的元素都向前移一个位置,
1、定义一个由整数组成的数组,要求求出其中的奇数个数和偶数个数。
2、定义一个整型数组,求出数组元素的和、数组元素的最大值和最小值,并输出所求的结果。
3、给出10个整数(int型),然后任意查询一个数字是否存在该10个数字内。
4、定义一个包含10个元素的数组,对其进行赋值,使每个元素的值等于其下标 然后输出,最后将这个数组倒置输出。
for (int j=0; j < a.length - i -1; j++){
if (a[j] < a[j+1]) {
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
10、定义一个20*5的二维数组,用来存储某班级20位学员的5门课的成绩;这5门课
按存储顺序依次为:core C++,coreJava,Servlet,JSP和EJB。
(1)给二维数组的每一个元素赋0~100之间的整数。
(2)按照列表的方式输出这些学员的每门课程的成绩。
即,a[0]=a[1],a[1]=a[2],…最后一个元素的值是原来第一个元素的值,然后输出这个数组。
9、定义一个int型的一维数组,包含10个元素,利用程序将数组中的元素从大到小进行排序。
提示:冒泡算法

C语言练习3(数组)=参考解答

C语言练习3(数组)=参考解答

C语言(数组)一、选择题1. 设有程序:main(){ int i,a[11];printf("给数组赋值:\n");for (i=0;i<=10;i++)scanf("%d",( ));... ...printf("输出数组:\n");for(i=0;i<=10;i++)printf("%d,",( ));}则在程序中的两个园括号中分别应填入:CA) &a[i]和&a[i]B) a[i]和&a[i]C) &a[i]和a[i]D) a[i]和a[i]2. 设已定义:int a[15]; 则数组a占用的内存单元数是( C ).A) 15 B) 16 C) 30 D) 323. 阅读程序:main(){ int a[2]={0},i,j,k=2;for(i=0;i<k;i++)for(j=0;j<k;j++) a[j]=a[i]+1;printf("%d\n",a[k]);}以上程序的输出结果是( D ).A) 1 B) 3 C) 2 D) 不确定的值4. 阅读程序:f(int b[],int n){ int i,r=1;for(i=0;i<=n;i++) r=r*b[i];return r;}main(){ int x,a[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}以上程序的输出结果是( D ).A) 720 B) 6 C)24 D) 1205. 以下定义语句中,错误的是( B ).A) int a[ ] = {6,7,8};B) int n=5, a[n];C) char a[ ]= "string";D) char a[5 ]={'0','1','2','3','4'};6. 以下描述中正确的是( D ).A) 数组名后面的常量表达式用一对圆括弧括起来B) 数组下标从1开始C) 数组下标的数据类型可以是整型或实型D) 数组名的规定与变量名相同7. 若定义数组并初始化char a[10]={'0','1 ','2','3','4','5','6','7','8','9'};指出以下错误语句( AB ).A) scanf("%c",a[0]);B) scanf("%s",&a);C) printf("%c",a[3]);D) printf("%s",a);8.若定义数组int a[10] ,其最后一个数组元素为( C ).A) a[0]C) a[9]D) a[10]9. 若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个不成立( B )?A) a[8] 的值为0B) a[1] 的值为1C) a[3] 的值为4D) a[9] 的值为010. 指出以下错误语句( A ).A) int n=10,a[n];B) int n,a[10];C) int a[10]={1,2,3};D) int a[10]={1,2,3,4,5,6,7,8,9,10};11. 请读程序:main(){int n[2],i,j,k;for(i=0;i<2;i++) n[i]=0;k=2;for(i=0;i<k;i++)for(j=0;j<k;j++) n[j]=n[i]+1;printf("%d\n",n[k]);}上面程序的输出结果是( A ).A)不确定的值 B)3 C)2 D)112. 若有以下的定义和语句:int str[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='e',则数值为2的表达式是( C ).A)str['g'-c] B)str[2] C)str['d'-'c'] D)str['d'-c]13. 设有数组定义:int a[5];则下列给数组元素赋值错误的是( B ).B) scanf("%c",a[3]);C) a[3]=getchar();D) a[3]='a'+3;14. 以下数组定义中错误的是( D ).A) #define N 30int a[N+30];B) #define N 30int a[N];C) int a[30];D) int a[N];15. 在定义一个一维数组时,不能用来表示数组长度的是( D ).A)常量 B)符号常量 C)常量表达式 D) 已被赋值的变量16. 若float型变量占用4个字节,有定义float a[20]={1.1,2.1,3.1};则数组a在内存中所占的字节数是( D ).A)12 B)20 C)40 D)8017. 设已定义:int x[2][4]={1,2,3,4,5,6,7,8}; 则元素x[1][1]的正确初值是( A ).A) 6 B) 5 C) 7 D) 118. 设有定义:int a[][3]={{1,2,3},{4,5,6},{7,8,9}}; 则a[1][2]的初值为( C ).A) 2 B) 4 C) 6 D) 819. 设有:int a[4][5]; 则数组a占用的内存字节数是( C ).A) 12 B) 24 C) 40 D) 2020. 以下数组定义中,不正确的是( B ).A) int b[3][4];B) int c[3][ ]={{1,2},{1,2,3},{4,5,6,7}};C) int b[200][100]={0};D) int c[ ][3]={{1,2,3},{4,5,6}};21. 定义数组:int x[2][3]; 则数组x 的维数是( 2 ).A) 1 B) 2 C) 3 D) 622. 若定义数组并初始化int b[2][3]= { 1,2,3,4,5,6},以下语句哪一个成立( C )?A) 表达式b[1][2]的值为1B) 表达式b[1][2]的值为4C) 表达式b[1][2]的值为6D) 表达式b[1][2]的值为223. 若定义数组并初始化int a[2][3]={{1,2,3},{4,5,6}};for(i=0;i<2;i++)for(j=0;j<3;j++)printf("%d",a[i][j]);语句的结果是哪一个( C )?A) 1,2,3,4,5,6B) 1 2 3 4 5 6C) 12345624. 若定义数组并初始化int a[2][3]= {{1,2, 3},{4,5,6}};以下语句哪一个不成立( B )?A) a数组中有6个元素B) a[2][3]是a数组的最后一个元素的引用C) a数组中每个元素都为整数D) a数组是整型数组25. 定义如下变量和数组:int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是( C ).for(i=0;i<3;i++) printf("%d",x[i][2-i]);A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 926. 如有以下定义:double s[][5]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};则数值为2的元素是( C ).A) s[1][3] B) s[0][3] C) s[0][2] D) s[1][2]27. 以下程序的输出结果是( A ).main(){int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d",s);}A) 18 B) 19 C) 20 D) 2128. 若已有char b[10][50];则该二维字符数组在内存所占字节数为( D ).A) 10 B)50 C)60 D)50029. 设有:char a[10]; 下列语句那个是正确的( D )?A) scanf("%s",a[0]);B) scanf("%s",&a);C) printf("%s",a[0])D) printf("%s",a)30. 阅读程序:main(){ char a[10];int i;for(i=1;i<=5;i++)scanf("%c",&a[i]);printf("%c",a[0]);}设从键盘输入字符串:abcde,则程序的输出结果是( C ).A) a B)空格 C)不确定D)031. 合法的数组定义是( 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'};32. 设有数组定义:char string[ ]="China";则数组string所占的空间为( B ).A) 5个字节B) 6个字节C) 7个字节D) 10个字节33. 定义字符数组c:char c[ ]={"c language"};数组c在内存中所占字节数是( C ).A) 9 B) 10 C) 11 D) 1234. 指出以下错误语句( C ).A) char a[10]={'0','1','2','3','4','5','6','7','8','9'};B) char a[10]={'0','1 ','2','3'};C) char a[2]= {"1","2"};D) char a[2]= {'a’,'b’};35. 若定义数组并初始化char a[10]={"hello"},该数组的元素个数是( A ).A) 10B) 5C) 6D) 736. 若定义数组并初始化char a[10]={"HELLO"},该数组的元素中 a[2]是( A ).A) 'L'B) 'E'C) 'H'D) 'O'37. 若定义数组并初始化int b[10]={ 1,2,3,4},以下哪几个语句成立( A C D)?A)b[8]的值为0B)b[1]的值为1C)b[3]的值为整数D)b[10]不是b数组中的元素38. 若定义数组int a[10];指出下列错误语句:ABCDA) a数组共有10个元素,其引用方法是:a[1],a[2]...a[10];B) a数组是整型数组,其元素自动初始化为0;C) a数组最后一个元素的引用方法是a[10];D) a数组第一个元素的引用方法是a[1];二、判断题1.数组是数目固定的若干变量的有序集合,数组中各元素的类型可以不同。

数组练习题

数组练习题

数组练习题1.下面数组声明语句,_________正确。

A)Dim a[2,4] As Integer B)Dim a(2,4)As IntegerC)Dim a(n,n)As Integer D)Dim a(2 4)As Integer2.假定建立了一个名为Command1的命令按钮数组,则以下说法中错误的是________。

A)数组中每个命令按钮的名称(名称属性)均为Command1B)数组中每个命令按钮的标题(Caption属性)都一样C)数组中所有命令按钮可以使用同一个事件过程D)用名称Command1(下标)可以访问数组中的每个命令按钮3.数组声明语句Dim a(-2 to2,5)中,数组包含元素个数为________。

A)120 B)30 C )60 D)204.下面程序的输出结果是________。

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)36 B)程序出错C)49 D)不确定5.下面程序的输出结果是________。

Option Base 1Private Sub Command1_Click()Dim a%(3, 3)For i = 1 To 3For j = 1To 3If j > 1 And i > 1 Thena(i, j)= a(a(i - 1, j - 1), a(i, j - 1))+ 1Elsea(i, j)= i * jEnd IfPrint a(i, j); "";Next jPrintNext iEnd SubA)1 2 3 B)1 2 3 C )1 2 3 D)1 2 32 3 1 1 2 3 2 4 6 2 2 23 2 3 1 2 3 3 6 9 3 3 36.在设定Option Base 0后,经Dim arr(3,4)As Integer 定义的数组arr含有的元素个数为________。

数据结构-第5章--数组练习题

数据结构-第5章--数组练习题

数据结构-第5章--数组练习题第5章数组一、选择题3.设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为(A)。

A.BA+141B.BA+180C.BA+222D.BA+2254.假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=(A)。

A.808B.818C.1010D.10205.数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是()。

1195A.1175B.1180C.1205D.12107.将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[1‥298]中,A中元素A6665(即该元素下标i=66,j=65),在B数组中的位置K为()。

供选择的答案:A.198B.195C.1972+64某3=19410.若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在B中确定aij(iA.i某(i-1)/2+jB.j某(j-1)/2+iC.i某(i+1)/2+jD.j某(j+1)/2+i11.设A是n某n的对称矩阵,将A的对角线及对角线上方的元素以列为主的次序存放在一维数组B[1..n(n+1)/2]中,对上述任一元素aij(1≤i,j≤n,且i≤j)在B中的位置为(C)。

A.i(i-l)/2+jB.j(j-l)/2+iC.j(j-l)/2+i-1D.i(i-l)/2+j-112.A[N,N]是对称矩阵,将下面三角(包括对角线)以行序存储到一维数组T[N(N+1)/2]中,则对任一上三角元素a[i][j]对应T[k]的下标k是(AB)。

二维数组练习题专升本

二维数组练习题专升本

二维数组练习题专升本二维数组是编程中常用的数据结构之一,它在专升本考试中也常常作为考察点。

以下是几个二维数组的练习题,旨在帮助考生巩固二维数组的相关知识。

练习题一:二维数组的初始化和遍历编写一个程序,初始化一个3x3的二维数组,并将其元素初始化为1到9的自然数。

然后遍历该数组,打印出每个元素。

练习题二:二维数组的转置给定一个m x n的二维数组,编写一个程序将其转置,即行列互换。

例如,原数组的第一行变成转置后数组的第一列,原数组的第一列变成转置后数组的第一行。

练习题三:二维数组的查找在一个已经排好序的二维数组中,编写一个程序实现线性查找算法,查找给定的元素是否存在于数组中,并返回其位置。

练习题四:二维数组的排序编写一个程序,对一个二维数组的每一行进行排序,要求使用冒泡排序算法。

例如,对于数组:```1 3 52 4 67 8 9```排序后应为:```1 3 52 4 67 8 9```练习题五:二维数组的矩阵乘法给定两个二维数组A和B,编写一个程序实现矩阵乘法,即计算C=A*B,并输出结果矩阵C。

练习题六:二维数组的螺旋遍历编写一个程序,实现对一个m x n的二维数组进行螺旋遍历,即从左上角开始,先按行遍历,然后按列遍历,接着按行反向遍历,再按列反向遍历,直到所有元素都被访问。

练习题七:二维数组的动态内存分配编写一个程序,动态分配一个二维数组的内存空间,并初始化其元素。

然后释放该二维数组所占用的内存空间。

通过以上练习题的练习,考生可以加深对二维数组的理解,掌握其在不同场景下的应用。

在专升本考试中,二维数组的题目通常不会太难,但需要考生具备扎实的编程基础和良好的逻辑思维能力。

希望这些练习题能够帮助考生在考试中取得好成绩。

数组练习题

数组练习题
39.初始化多维数组的语句中,可以缺省的是().
A.最后一个下标界
B.第1个下标界
C.第2个下标界
D.以上都不是
40.数组声明为: char str1[20]="Borland",str2[]="C++5.0";调用函数"strcat(str1,str2);"后,字符串str1的串长是().
A.13
32.在C语言中,引用数组元素时,其数组下标的数据类型允许是().
A.整型常量
B.整型表达式
C.整型常量或整型表达式
D.任何类型的表达式
33.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是().
A.char s[10]="abcdefg";
B.char t[]="abcdefg",*s=t;
B.char str[];
C.int num['10'];
D.int n=5; int a[n][n+2];
3.下列定义数组的语句中不正确的是().
A.int a[2][3]={1,2,3,4,5,6};
B.int a[2][3]={{1},{4,5}};
C.int a[][3]={{1},{4}};
A.14
B.15
C.16
D.17
49.在执行int a[][3]={{1,2},{3,4}};语句后,a[1][2]的值是()
A.int a(10);
B.int n=10,a[n];
C.int n; scanf("%d",&n); int a[n];
D.#define SIZE 10 (换行) int a[SIZE];

C语言数组练习及标准答案.doc

C语言数组练习及标准答案.doc

第四部分数组4.1 选择题1.以下关于数组的描述正确的是 (c ) 。

A.数组的大小是固定的,但可以有不同的类型的数组元素B.数组的大小是可变的,但所有数组元素的类型必须相同C.数组的大小是固定的,所有数组元素的类型必须相同D.数组的大小是可变的,可以有不同的类型的数组元素2.以下对一维整型数组 a 的正确说明是 (d ) 。

a(10); B. int n=10,a[n];n; D. #define SIZE 10scanf("%d",&n);int a[SIZE];int a[n];3. 在 C 语言中,引用数组元素时,其数组下标的数据类型允许是(c ) 。

A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式4.以下对一维数组 m进行正确初始化的是 (c ) 。

A. int m[10]=(0,0,0,0) ;B. int m[10]={ };C. int m[ ]={0};D. int m[10]={10*2};5. 若有定义: int bb[ 8];。

则以下表达式中不能代表数组元A. &bb[0]+1B. &bb[1]C. &bb[0]++D. bb+1bb[1] 的地址的是(c ) 。

6. 假定 int 所占字节数是类型变量占用两个字节,其有定义:(d )。

int x[10]={0,2,4}; ,则数组x 在内存中A. 3B. 6C. 10D. 207.若有以下说明 :int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='a',d,g;则数值为 4 的表达式是 (d )A. a[g-c]B. a[4]C. a['d'-'c']D. a['d'-c]8.以下程序段给数组所有的元素输入数据,请选择正确答案填入 (a ) 。

数组练习题及答案

数组练习题及答案

数组练习题及答案问题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;}```结束语:这些练习题涵盖了数组的基本操作、查找、排序和动态扩展等常见问题,希望能够帮助您更好地理解和掌握数组的使用。

C语言数组练习

C语言数组练习

C语言数组练习一填空题1.构成数组的各个元素必须具有相同的______。

2.C语言数组的下标总是从开始,不可以为负数。

3.字符串是以为结束标志的一维字符数组。

4.有定义:char a[]=””;则a数组的长度是。

5.若有以下定义:int a[10];,则数组a元素下标的上限为______,下限为______. 6.在C语言中,数组int a[5];的首地址是。

7.数组名定名规则和变量名相同,遵循定名规则。

8.对于一维数组的定义“类型说明符数组名[常量表达式]”,其中常量表达式可以包括和,不能包含。

9.在C语言中,引用数组只能通过来实现,而不能通过整体引用来实现。

如引用数组int a[5];第四个元素为。

10、char str1[15]=“zhongguo”,数组str1所占的内存空间为个字节。

11.构成数组的各个元素必须具有相同的。

12、有数组的定义int str[ ]={0,1,2,3,4};该数组长度为______________。

13.有数组定义float kk[5];则将第一个元素赋值为 5.0的语句为____________;将第二个元素值为12.3的语句为______________,将一、二两个元素的和赋给最后一个元素的语句为_________________________________ 14.一维数组元素的下标最小值从_______________开始,定义一个数组为int x[8];的数组长度为________________.引用最后一个元素的为_____________________。

15、在数组中int score[10]={1、2、3、4、5}中,元素个数有______________个,其中score[8]的值为______________。

二选择题1.对两个数组a和b进行如下初始化char a[]="ABCDEF";char b[]={'A','B','C','D','E','F'};则以下叙述正确的是________。

c语言数组练习题

c语言数组练习题

c语言数组练习题C语言数组练习题在学习C语言的过程中,数组是一个非常重要的概念。

数组可以用来存储一系列相同类型的数据,它能够提供快速访问和处理数据的能力。

为了巩固对数组的理解和运用,我们可以进行一些练习题。

1. 数组的初始化数组的初始化是指在定义数组的同时给数组元素赋初值。

例如,我们可以定义一个长度为5的整型数组,并给它的元素赋初值:```cint arr[5] = {1, 2, 3, 4, 5};```请尝试定义一个长度为10的字符型数组,并给它的元素赋初值。

2. 数组元素的访问数组的元素可以通过下标来进行访问。

数组的下标从0开始,最大下标为数组长度减1。

例如,我们可以通过下标访问数组的元素:```cint num = arr[2]; // 获取arr数组中下标为2的元素```请尝试定义一个长度为6的浮点型数组,并访问其中的第4个元素。

3. 数组的遍历数组的遍历是指依次访问数组中的每个元素。

我们可以使用循环语句来遍历数组。

例如,我们可以使用for循环遍历数组并打印每个元素:```cfor (int i = 0; i < 5; i++) {printf("%d ", arr[i]);}```请尝试定义一个长度为8的整型数组,并使用循环语句遍历数组并打印每个元素。

4. 数组的求和数组的求和是指将数组中的所有元素相加。

我们可以使用循环语句遍历数组,并将每个元素累加到一个变量中。

例如,我们可以计算数组中所有元素的和:```cint sum = 0;for (int i = 0; i < 5; i++) {sum += arr[i];}```请尝试定义一个长度为7的整型数组,并计算数组中所有元素的和。

5. 数组的逆序数组的逆序是指将数组中的元素颠倒顺序。

我们可以使用两个指针分别指向数组的首尾元素,并交换它们的值,然后逐步向中间移动。

例如,我们可以将数组逆序:```cint start = 0;int end = 4;while (start < end) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}```请尝试定义一个长度为6的整型数组,并将数组逆序。

C语言3数组练习题3

C语言3数组练习题3

第三章数组一、选择题1.合法的数组定义是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};2.若有定义和语句:char s[10]; s=”abcd”; printf(“%s\n”,s); 则结果是(以下u代表空格)A.输出abcd B.输出aC.输出abcd u u u u u D.编译不通过3.数组a[2][2]的元素排列次序是A.a[0][0],a[0][1],a[1][0],a[1][1] B.a[0][0],a[1][0],a[0][1],a[1][1]C.a[1][1],a[1][2],a[2][1],a[2][2] D.a[1][1],a[2][1],a[1][2],a[2][2]4.有以下语句,则下面是正确的描述static char x [ ]=“12345”;static char y[ ]={…1‟,…2‟,…3‟,…4‟,…5‟};A.x数组和y数组的长度相同。

B.x数组长度大于y数组长度。

C.x数组长度小于y数组长度D.x数组等价于y数组。

5.列不能正确进行字符串赋值操作的语句是A.char str[10];gets(str); B.char*str;str=“a”;C.char*str;str=…a‟;D.charstr[10];strcpy(str,“hello”);6.若数组的长度为n,则该数组中的元素最多有n个。

若[3][5]是一个二维数组,则最多可使用的元素个数为A.8 B.10 C.15 D.57.若有说明:int a[3][4]; 则对a数组元素的非法引用是A.a['B'-'A'][2*1] B.a[1][3] C.a[4-2][0] D.a[0][4] 8.设有语句static char str[10]={“china”};printf(“%d”,strlen(str)); 则输出结果是A.10 B.5C.china D.69.表达式strlen(“string”)+strlen(“C”)的运算结果为A.9 B.10 C.7D.810.执行以下程序段后,s的值为。

php数组练习十六道题

php数组练习十六道题

php数组练习⼗六道题<?php/*** 1、写函数创建长度为10的数组。

数组中的元素为递增的奇数。

⾸项为1。

*/$ary = range(1, 10);//Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 [9] => 10 )print_r($ary);/*** 2、创建长度为10的数组,数组中的元素为递增的等⽐数,⽐值为3。

⾸项为1*/function myfun($n){return pow(3, $n-1);}$ary = range(1, 10);$result = array_map('myfun',$ary);echo '<br>';//Array ( [0] => 1 [1] => 3 [2] => 9 [3] => 27 [4] => 81 [5] => 243 [6] => 729 [7] => 2187 [8] => 6561 [9] => 19683 ) print_r($result);/*** 3、求数组中最⼤数所在的下标;* $arr = array(1,5,67,8,4,3,45,6,887,2);*/$arr = array(1,5,67,8,4,3,45,6,887,2);$max = $arr[0];//假设第⼀个数是最⼤的$index = 0;//记录最⼤数的key值,即下标foreach ($arr AS $key=>$val) {if ($max < $val) {$max = $val;$index = $key;}}//最⼤数是:887,其下标是:8echo '<br>最⼤数是:'.$max . ',其下标是:' . $index;/* $mval = max($arr);echo '<br>';print_r(array_search($mval, $arr)); *//*** 4、创建⼀个长度为10的数组,数组中的元素满⾜斐波拉齐数列的规律;*/$arr = array(1,1);for ($i=2; $i<10; $i++) {$arr[] = $arr[$i-1]+$arr[$i-2];}echo '<br>';//Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 3 [4] => 5 [5] => 8 [6] => 13 [7] => 21 [8] => 34 [9] => 55 )print_r($arr);/*** 5、计算数组中最⼤数和最⼩数的差;*/$arr = array(1,5,67,8,4,3,45,6,887,2);/*系统函数简单实现*$minv = min($arr);$maxv = max($arr);echo '<br>';echo '最⼤数是:' . $maxv .',最⼩数是:'.$minv.',差是:'.($maxv-$minv);*//*不使⽤系统函数实现*/$max = $arr[0];//假设第⼀个数是最⼤的$min = $arr[0];//假设第⼀个数也是最⼩的foreach ($arr AS $key=>$val) {if ($max < $val) {$max = $val;} elseif ($min > $val) {$min = $val;}}echo '<br>';//最⼤数是:887,最⼩数是:1,差是:886echo '最⼤数是:' . $max .',最⼩数是:'.$min.',差是:'.($max-$min);/*** 6、写⼀个⽅法,将⼀个长度超过10的数组最后5项直接截取,不改变顺序直接变为前5项,* 如{1,2,3,4,5,6,7,8,9,10,11,12}在经过⽅法后变为:{8,9,10,11,12,1,2,3,4,5,6,7}*/function arrayHandel(&$ary, $count = 5) {if (!(is_array($ary) && count($ary)>10 && count($ary)>$count)) {return false;}$len = count($ary);while ($count>0) {$i = $len-1;$count--;array_unshift($ary, $ary[$i]);array_pop($ary);}}$array = array(1,2,3,4,5,6,7,8,9,10,11,12,13);echo '<br>';arrayHandel($array);//Array ( [0] => 9 [1] => 10 [2] => 11 [3] => 12 [4] => 13 [5] => 1 [6] => 2 [7] => 3 [8] => 4 [9] => 5 [10] => 6 [11] => 7 [12] => 8 ) print_r($array);/**** 7、将两个数组连接成⼀个新数组;* array_combine($keys, $values) ⼀个作键,⼀个作值,但是两个数组个数必须⼀致,不然会返回false* array_merge($array1) 覆盖相同的键名* array_merge_recursive($array1) 不覆盖相同键名,组成以键名组成的数组集合**/$arr1 = array('a'=>123,'b'=>1234);$arr2 = array('os'=>'linux','db'=>'mysql','language'=>'php','server'=>'nginx','b'=>1256);echo '<br>';//Array ( [a] => 123 [b] => 1234 [os] => linux [db] => mysql [language] => php [server] => nginx )print_r($arr1+$arr2);//$arr1会覆盖$arr2中相同键值,运算是从右⾄左,所以左边的覆盖右边echo '<br>';//boolean falsevar_dump(array_combine($arr1,$arr2));//boolean falseecho '<br>';//Array ( [a] => 123 [b] => 1256 [os] => linux [db] => mysql [language] => php [server] => nginx )print_r(array_merge($arr1,$arr2));//$arr1和$arr2中的相同的元素被后⼀个$arr2的覆盖echo '<br>';//Array ( [a] => 123 [b] => Array ( [0] => 1234 [1] => 1256 ) [os] => linux [db] => mysql [language] => php [server] => nginx ) print_r(array_merge_recursive($arr1,$arr2));/*** 数组逆序(不能直接使⽤rsort函数,不能⽣成新数组);*/$ary = array('apple','juice','orange','85','0','app','1','2','5','z');/* rsort($ary);echo '<br>';print_r($ary); */for ($i=0;$i<count($ary);$i++){for ($j=$i+1;$j<count($ary);$j++){if($ary[$i]<$ary[$j]){$temp = $ary[$i];$ary[$i] = $ary[$j];$ary[$j] = $temp;}}}echo '<br>';//Array ( [0] => z [1] => orange [2] => juice [3] => apple [4] => app [5] => 85 [6] => 5 [7] => 2 [8] => 1 [9] => 0 )print_r($ary);/*** 9、在长度为10的升序有序数组中插⼊⼀个数字,组成新数组,保证数组顺序(不能直接使⽤sort)*/$arr = range(1, 40, 2);function insertAry($ary, $val) {$endAry = array();$len = count($ary);$index = 0;if ($ary[$len-1] < $val) {//若插⼊数⽐数组中任意数⼤$ary[] = $val;$endAry = $ary;return $endAry;}while ($index<$len) {if ($ary[$index]>=$val){$endAry[$index++] = $val;for($i = $index;$i<$len+1;$i++){$endAry[$i] = $ary[$i-1];}break;} else {$endAry[$index] = $ary[$index];}$index++;}return $endAry;}echo '<br>';//Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 [4] => 9 [5] => 11 [6] => 13 [7] => 15 [8] => 17 [9] => 19 [10] => 21 [11] => 23 [12] => 25//[13] => 27 [14] => 29 [15] => 31 [16] => 33 [17] => 35 [18] => 37 [19] => 39 [20] => 88 )print_r(insertAry($arr,88));/*** 10、将⼀个⽆序数组排列成升序数组;(冒泡排序)*/$arr = array(888,-9,1,11,5,67,8,4,3,45,6,887,2);$len = count($arr);for ($i=0; $i<$len; $i++) {for ($j=$len-1; $j>$i; $j--) {if ($arr[$j]<$arr[$j-1]) {$temp = $arr[$j];$arr[$j] = $arr[$j-1];$arr[$j-1] = $temp;}}}echo '<br>';//Array ( [0] => -9 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 8 [8] => 11 [9] => 45 [10] => 67 [11] => 887 [12] => 888 ) print_r($arr);/*********选择排序************/$arr = array(888,-9,1,11,5,67,8,4,3,45,6,887,2);for ($i=0; $i<$len; $i++) {for ($j=$i+1; $j<$len; $j++) {if ($arr[$j]<$arr[$i]) {$temp = $arr[$j];$arr[$j] = $arr[$i];$arr[$i] = $temp;}}}echo '<br>';//Array ( [0] => -9 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 8 [8] => 11 [9] => 45 [10] => 67 [11] => 887 [12] => 888 ) print_r($arr);/*** 11、对有序数组进⾏洗牌操作;(不能直接使⽤shuffle函数)*/$arr = range(1, 40, 2);echo '<br>';echo '<br>$arr打乱前:';//$arr打乱前:Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 [4] => 9 [5] => 11 [6] => 13 [7] => 15 [8] => 17 [9] => 19 [10] => 21 [11] => 23 //[12] => 25 [13] => 27 [14] => 29 [15] => 31 [16] => 33 [17] => 35 [18] => 37 [19] => 39 )print_r($arr);function shuffleDemo($arr) {$resultAry = array();$len = count($arr);while ($len>0) {$index = rand(0, $len-1);$resultAry[] = $arr[$index];array_splice($arr, $index,1);$len--;}return $resultAry;}echo '<br>';echo '<br>$arr打乱后:';//$arr打乱后:Array ( [0] => 3 [1] => 33 [2] => 11 [3] => 15 [4] => 5 [5] => 39 [6] => 1 [7] => 25 [8] => 35 [9] => 29 [10] => 13 [11] => 27 //[12] => 23 [13] => 7 [14] => 37 [15] => 19 [16] => 9 [17] => 17 [18] => 31 [19] => 21 )print_r(shuffleDemo($arr));/*** 12、删除数组中指定位置的元素;(参考unset函数)*/function deleteAryElement(&$arr, $index){if (!(is_array($arr) && count($arr)>$index)) {return false;}unset($arr[$index]);}$arr = array(888,-9,1,11,5,67,8,4,3,45,6,887,2);deleteAryElement($arr,2);echo '<br>';//Array ( [0] => 888 [1] => -9 [3] => 11 [4] => 5 [5] => 67 [6] => 8 [7] => 4 [8] => 3 [9] => 45 [10] => 6 [11] => 887 [12] => 2 ) print_r($arr);/*** 13、将数组中素数删除组成新数组*/function filtFun($val) {//⾃定义过滤素数函数$flag = true;//判断是否是素数if (is_int($val)) {if ($val<=0) {$flag = false;}for ($i=$val-1;$i>1;$i--) {if ($val%$i==0) {$flag = false;break;}}} else {$flag = false;}return !$flag;}$arr = array(888,-9,1,11,5,67,8,4,3,45,6,887,2,'a');$rary = array_filter($arr, 'filtFun');echo '<br>';//Array ( [0] => 888 [1] => -9 [6] => 8 [7] => 4 [9] => 45 [10] => 6 [13] => a )print_r($rary);/*** 14、写函数检查数组中是否存在某个元素(不能直接使⽤in_array)*/function exsitEle($arr, $value) {if (!(is_array($arr) && count($arr)>0)) {return false;}foreach ($arr AS $key=>$val) {if ($val==$value) {return true;}}return false;}$arr = array(888,-9,1,11,5,67,8,4,3,45,6,887,2,'a',array('a'=>14,'b'=>48));//boolean truevar_dump(exsitEle($arr, array('a'=>14,'b'=>48)));/*** 15、写函数,向数组最后追加⼀个元素(不能直接使⽤array_push)*/$arr = array(888,-9,1,11,5,67,8,4,3,45,6,887,2,'a',array('a'=>14,'b'=>48));$arr[] = 'abcd';echo '<br>';//Array ( [0] => 888 [1] => -9 [2] => 1 [3] => 11 [4] => 5 [5] => 67 [6] => 8 [7] => 4 [8] => 3 [9] => 45 [10] => 6//[11] => 887 [12] => 2 [13] => a [14] => Array ( [a] => 14 [b] => 48 ) [15] => abcd )print_r($arr);/*** 16、写函数,求数组中所有元素之和(不能直接使⽤array_sum)*/$arr = array(888,-9,1,11,5,67,8,4,3,45,6,-102);function countAry($arr) {if (!(is_array($arr) && count($arr)>0)) {return false;}$sum = 0;foreach ($arr AS $key=>$val) {$sum += $val;}return $sum;}echo '<br>';//927print_r(countAry($arr)); php数组功能⾮常强⼤,⾃⼰对php数组的练习学习。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数组练习题1. 在C语言中,引用数组元素时,其数组下标的数据类型允许的是(D )A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式2. 以下对一维整型数组a的正确说法是( A)A . int a[10]; D. int a(10);C. int n;scanf(“%d”,&n);int a[n]; B. int n=10,a[n];3. 若有说明: int a[10];则对a数组元素的正确引用是( D)A .a[10] B. a[3.5] C. a(5) D. a[10-10]4. 在C语言,一维数的定义方式为: 类型说明符数组名(C );A .[常量表达式] B.[整型表达式]C.[整型常量]或[整型表达式]D.[整型常量]5.以下能对一维数组a进行正确初始化的语句是(C )A .int a[10]=(0,0,0,0,0); B.int a[10]={};C.int a[ ]={0};D.int a[10]={10*1}6. 以下对二维数组a正确说明是( C)A. int a[3][ ];B. float a(3,4);C. double a[1][4];D. float a(3)(4);7.若有说明: int a[3][4];则对a数组元素的正确引用是( C)A. a[2][4]B. a[1,3]C. a[1+1][0]D. a(2)(1)8.若有说明:int a[3][4];则对a数组元素的非法引用是( D)A. a[0][2*1]B. a[1][3]C. a[4-2][0]D. a[0][4]9. 以下能对二维数组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}};10.以下不能对二维数组a进行正确初始化的语句是(C )A.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};11. 若有说明:int a[3][4]={0};则下面正确的叙述是( D)A.只有元素a[0][0]可得到初值0B. 此说明语句不正确C. 数组a中各元素都可得到初值,但其值不一定为0D. 数组a中每个元素均可得到初值012. 若有说明:int a[ ][4]={0,0};则下面不正确的叙述是:(D )A.数组a的每个元素都可得到初值0B. 二维数组的第一维大小为1C. 因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1D. 只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值013. 若有说明:int a[3][4]; 则数组a中各元素()A. 可在程序的运行阶段得到初值0B.可在程序的编译阶段得到初值0C.不能得到确定的初值D.可在程序的编译或运行阶段得到初值014.以下各组选项中,均能正确定义二维实型数组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]15.下面程序1 main()2 {3 int a[3]={3*0};4 int I;5 for(I=0;I<3;I++) scanf(“%d”,&a[I]);6 for(I=1;I<3;I++) a[0]=a[0]+a[I];7 printf(“%d\n”,a[0];)A. 第3行有错误B. 第7行有错误C.第5行有错误D.没有错误16.下面程序 A1 main()2 {3 float a[10]={0,0};4 int I;5 for(I=0;I<3;I++) scanf(“%d”,&a[I]);6 for(I=1;I<10;I++) a[0]=a[0]+a[1];7 printf(“%f\n”,a[0]);}A. 没有错误B.第3行有错误C.第5行有错误D.第7行有错误17.下面程序有错误的行是1 main()2 {3 int a[3]={1};4 int I;5 scanf(“%d”,&a);6 for(I=1;I<3;I++) a[0]=a[0]+a[1];7 printf(“a[0]=%d\n”,a[0]);}A. 3B. 6C. 7D. 518.下面程序1 main()2 {3 int a[3]={0};4 int I;5 for(I=0;I<3;I++)scanf(“%d”,&a[I]);6 for(I=1;I<4;I++) a[0]=a[0]+a[I];7 printf(“%d\n”,a[0]);}A.没有错误B.第3行有错误C.第5行有错误D.第6行有错19.若二数组a有m列,则计算任意元素a[I][j]在数组中位置的分式为__________ A.I*m+j B.J*m+I C.I*m+j-1 D.I*m+j+120.对以下说明语句的正确理解是()int a[10]={6,7,8,9,10};A.将5个初值依次与给a[1]至a[5]B.将5个初值依次与给a[1]至a[4]C.将5个初值依次与给a[6]至a[10]D.因为数组长度与初值的个数不同,所以此语句不正确21.以下不正确的定义语句是:( )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 cl[ ]={‘1’,’2’,’3’,’4’,’5’};D.char c2[ ]={‘\x10’,’\xa’,’\x8’};22.若有说明:int a[ ][3]={1,2,3,4,5,6,7};则a数组第一维的大小是( )A.2B.3C.4D.无确定值23.若二维数组a有m列,则在a[I][J]前的元素个数为()A.J*m+IB.I*m+jC.I*m+j-1D.I*m+j+124.定义如下变量和数组:int k; int a[3][3]={1,2,3,4,5,6,7,8,9,};则下面语句的输出结果是()for(k=0;k<3;k++) printf(“%d”,a[k][2-k]);A.3 5 7B.3 6 9C.1 5 9D.1 4 725.以下正确的定义语句是()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};26.下面程序的运行结果是()main(){int a[6][6],I,J;for(I=1;I<6;I++)for(J=1;J<6;J++)a[I][j]=(I/j)*(j/I);for(I=1;I<6;I++){for(j=1;j<6;j++)printf(“%2d”,a[I][j];printf(“\n”;)}A. 1 1 1 1 1B. 0 0 0 0 1C. 1 0 0 0 0D. 1 0 0 0 11 1 1 1 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 01 1 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 01 1 1 1 1 1 0 0 0 0 0 0 1 0 0 1 0 1 1 11 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 127.下面程序的运行结果是()main(){int a[6],I;for(I=1;I<6;I++){a[I]=9*(I-2+r*(I>3))%5;printf(“%2d”,a[I]);}}A.-4 0 4 0 4B.-4 0 4 0 3C.-4 0 4 4 3D.-4 0 4 4 028.若有定义:doublex[3][5];则x数组中行下标的下限为(),列下标的上限为()。

29.若二维数组a有m列,则计算任一元素a[I][j]在数组中的位置的公式为()30.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初始值是(),a[2][1]得到的初值是()。

31. 若有以下输入,则下面程序的运行结果是:___________7□10□5□4□6□7□9□8□3□2□4□6□12□2□-1main(){int b[51],x,I,j=0,n=0;scanf(“%d”,&x);while(x>-1) {b[++n]=x; scanf(“%d”,&x);}for(I=1;I<=n;I++)if(b[I]%2==0) b[++j]=b[I];for(I=1;I<=j;I++) printf(“%3d”,b[I]); printf(“\n”);}32.下面程序以每行4个数据的形式输出a数组,填空#define N20main(){int a[N],I;for{I=0;I<N;I++} scanf(“%d”,______ );for(I=0;I<N;I++){if(_______) ;printf(“%3d”,a[I]);}printf(“\n”);}33.下面的运行结果是main(){int a[2][3]={{1,2,3},{4,5,6}};int b[3][2],I,j;printf(“array a:\n”);for(I=0;I<=1;I++){for(j=0;j<=2;J++){printf(“%5d”,a[I][j]);b[j][I]=a[I][j];}printf(“\n”);}printf(“array b:\n”);for(I=0;I<=2;I++){for(j=0;j<=1;j++)printf(“%5d”,b[I][j]);printf(“\n”);}}34.下面程序可以求出矩阵a的两条对角线上的元素之和。

相关文档
最新文档