当前位置:文档之家› 一维数组作业参考答案

一维数组作业参考答案

1.编写程序,找出10个数中最大的数以及最大数所在的下标。#include

using namespace std;

int main()

{ int a[10],max,xiabiao,i;

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

cin>>a[i];

max=a[0];

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

if(max

{ max=a[i];

xiabiao=i; }

cout<<"最大数为:"<

}

子函数实现:

#include

using namespace std;

void fun(int b[10]); ///函数声明

int main()

{

int a[10],i;

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

cin>>a[i];

fun(a); //函数调用

return 0;

}

void fun(int b[10]) //函数定义

{ int max,i,xiabiao;

max=b[0];

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

if(max

{ max=b[i];

xiabiao=i;}

cout<<"最大数为:"<

}

2. 编写程序,找出10个数中最大的数和最小数,将最大数与第一个数交换位置,最小数与最后一个数交换位置。

#include

using namespace std;

int main()

{ int a[10],i;

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

cin>>a[i];

int max,min,r,t,temp;

max=min=a[0];

r=t=0;

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

{if(max

if(min>a[i]) {min=a[i];t=i;}

}

temp=a[0];a[0]=a[r];a[r]=temp;

temp=a[9];a[9]=a[t];a[t]=temp;

cout<<"最大值为:"<

cout<<"交换后数组为"<

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

cout<

cout<

return 0;

}

子函数实现

#include

using namespace std;

void fun(int b[10]); //函数声明

int main()

{ int a[10],i;

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

cin>>a[i];

fun(a); // 函数调用

cout<<"交换后数组为"<

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

cout<

cout<

return 0;

}

void fun(int b[10]) //函数定义

{ int max,min,r,t,i,temp;

max=min=b[0];

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

{if(max

if(min>b[i]) {min=b[i];t=i;}

}

temp=b[0];b[0]=b[r];b[r]=temp;

temp=b[9];b[9]=b[t];b[t]=temp;

cout<<"最大值为:"<

}

3. 将一个数组中的值按逆序重新存放。例如,原来顺序为10、60、5、

42、19,要求改为19、42、5、60、10。

4.给定一个已排好序的数组,现输入一个数,将其插入数组的适当位置。

#include

using namespace std;

int main()

{ int a[11],t,i,m;

cout<<"请输入10个从小到大的数:"<

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

cin>>a[i];

cout<<"请输入要插入的数:"<

cin>>t;

if(t>a[9]) a[10]=t;

//普遍情况

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

if(t>a[i]&&t<=a[i+1]) m=i+1;

for(i=9;i>=m;i--)

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

a[m]=t;

cout<<"插入后数组为:"<

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

cout<

cout<

return 0;

}

子函数实现

#include

using namespace std;

void fun(int b[11],int s);

int main()

{ int a[11],t,i;

cout<<"请输入10个从小到大的数:"<

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

cin>>a[i];

cout<<"请输入要插入的数:"<

cin>>t;

fun(a,t);

cout<<"插入后数组为:"<

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

cout<

cout<

return 0;

}

void fun(int b[11],int s)

{

int i,m;

if(s>b[9]) b[10]=s;

//普遍情况

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

if(s>b[i]&&s<=b[i+1]) m=i+1;

for(i=9;i>=m;i--)

b[i+1]=b[i];

b[m]=s;

}

C语言数组练习及答案

第四部分数组 4.1 选择题 1. 以下关于数组的描述正确的是(c )。 A. 数组的大小是固定的,但可以有不同的类型的数组元素 B. 数组的大小是可变的,但所有数组元素的类型必须相同 C. 数组的大小是固定的,所有数组元素的类型必须相同 D. 数组的大小是可变的,可以有不同的类型的数组元素 2. 以下对一维整型数组a的正确说明是(d )。 A.int a(10); B. int n=10,a[n]; C.int n; D. #define SIZE 10 scanf("%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];。则以下表达式中不能代表数组元bb[1]的地址的是(c )。 A. &bb[0]+1 B. &bb[1] C. &bb[0]++ D. bb+1 6. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是(d )。 A. 3 B. 6 C. 10 D. 20 7. 若有以下说明: 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 )。 #include main() { int a[10],i=0; while(i<10) scanf("%d",________ ); ┇ }

一维数组习题

一维数组 【例1】输入50个数,要求程序按输入时的逆序把这50个数打印出来;也就是说,请你按输入相反顺序打印这50个数 分析:我们可定义一个数组a用以存放输入的50个数,然后将数组a内容逆序输出,源程序如下 program ex5_1; type arr=array[1..50]of integer; {说明一数组类型arr} var a:arr; i:integer; begin writeln('Enter 50 integer:'); for i:=1 to 50 do read(a[i]);{从键盘上输入50个整数} readln; for i:=50 downto 1 do {逆序输出这50个数} write(a[i]:10); end. 【例2】输入十个正整数,把这十个数按由大到小的顺序排列(将数据按一定顺序排列称为排序,排序的算法有很多,其中选择排序中的―简单选择排序‖是一种较简单的方法) 分析:要把十个数按从大到小顺序排列,则排完后,第一个数最大,第二个数次大,……;因此,我们第一步可将第一个数与其后的各个数依次比较,若发现,比它大的,则与之交换,比较结束后,则第一个数已是最大的数。同理,第二步,将第二个数与其后各个数再依次比较,又可得出次大的数。如此方法进行比较,最后一次,将第九个数与第十个数比较,以决定次小的数。于是十个数的顺序排列结束。 例如下面对5个进行排序,这个五个数分别为829105。按选择排序方法,过程如下: 初始数据:82910 5 第一轮排序:82910 5 92810 5 10289 5 10289 5 第二轮排序:10829 5 10928 5 10928 5 第三轮排序:10982 5 10982 5 第四轮排序:10985 2 对于十个数,则排序要进行9次。源程序如下: program ex5_2; var a:array[1..10]of integer; i,j,t:integer; begin writeln('Input 10 integers:'); for i:=1 to 10 do read(a[i]);{读入10个初始数据} readln; for i:=1 to 9 do{进行9次排序} begin for j:=i+1 to 10 do{将第i个数与其后所有数比较}

一维数组作业参考答案

1.编写程序,找出10个数中最大的数以及最大数所在的下标。#include using namespace std; int main() { int a[10],max,xiabiao,i; for(i=0;i<10;i++) cin>>a[i]; max=a[0]; for(i=1;i<10;i++) if(max using namespace std; void fun(int b[10]); ///函数声明 int main() { int a[10],i;

for(i=0;i<10;i++) cin>>a[i]; fun(a); //函数调用 return 0; } void fun(int b[10]) //函数定义 { int max,i,xiabiao; max=b[0]; for(i=1;i<10;i++) if(max using namespace std; int main() { int a[10],i; for(i=0;i<10;i++) cin>>a[i];

国开作业《数据结构(本)-形考作业》 (34)

题目:一维数组A采用顺序存储结构,每个元素占用4个字节,第8个元素的存储地址为120,则该数组的首地址是()。 选项A:88 选项B:92 选项C:32 选项D:90 答案:92 题目:稀疏矩阵采用压缩存储的目的主要是()。 选项A:减少不必要的存储空间的开销 选项B:表达变得简单 选项C:去掉矩阵中的多余元素 选项D:对矩阵元素的存取变得简单 答案:减少不必要的存储空间的开销 题目:一个非空广义表的表头()。 选项A:不可能是原子 选项B:只能是原子 选项C:可以是子表或原子 选项D:只能是子表 答案:可以是子表或原子 题目:常对数组进行的两种基本操作是()。 选项A:建立与删除 选项B:查找与索引 选项C:查找和修改 选项D:索引与、和修改 答案:查找和修改 题目:在二维数组A[8][10]中,每一个数组元素A[i][j] 占用3个存储空间,所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储空间是()。 选项A:80 选项B:270 选项C:100 选项D:240 答案:240 题目:设有一个18阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则矩阵中元素A10,8在一维数组B中的下标是()。 选项A:58 选项B:18 选项C:45 选项D:53

答案:53 题目:广义表((a))的表尾是()。 选项A:(a) 选项B:0 选项C:((a)) 选项D:a 答案:0 题目:设有一个10阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则矩阵中元素A8,5在一维数组B中的下标是()。 选项A:41 选项B:85 选项C:32 选项D:33 答案:33 题目:设广义表类((a,b,c)),则L的长度和深度分别为()。 选项A:1和3 选项B:1和1 选项C:2和3 选项D:1和2 答案:1和2 题目:广义表( a , a ,b , d , e ,( (i ,j ) ,k ) )的表头是________。 选项A:a,(a,b) 选项B:a 选项C:(a ,b) 选项D:( a ) 答案:a 题目:广义表的(a,d,e,(i,j),k)表尾是________。 选项A:((i,j),k) 选项B:(k) 选项C:k 选项D:(d,e,(i,j),k ) 答案:(d,e,(i,j),k ) 题目:稀疏矩阵的压缩存储方式通常有两种,即()。 选项A:三元组和散列 选项B:三元组和十字链表 选项C:散列和十字链表 选项D:二元组和三元组

C、C++程序设计:一维数组单元测试与答案

一、单选题 1、执行下面的程序段后,变量k中的值为()。 int k=3, s[2]; s[0]=k; k=s[1]*10; A.30 B.不定值 C.1 D.33 正确答案:B 2、假定int类型变量占用4个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是() A.3 B.40 C.10 D.12 正确答案:B 3、以下定义语句中,错误的是()。

A.int a[2]={1,2}; B. int n=2, a[n]={1,2}; C. int a[5]={1,2}; D. int a[]={1,2}; 正确答案:B 4、以下对一维数组a进行正确初始化的是()。 A.int a[5]=(0,0,0,0,0); B.int a[5]={1,2,3,4,5,6}; C.int a[5]={0}; D.int a[5]=1,2,3,4,5; 正确答案:C 5、有如下说明: int a[10]={0,1,2,3,4,5,6,7,8,9}; 则数值不为9的表达式是()。 A.a[8] B.a[9]-a[0] C.a[10-1] D.a[9] 正确答案:A

二、判断题 1、使用数值型数组时,不可以一次引用整个数组,只能逐个引用元素。 正确答案:√ 2、C语言中,数组名是一个常量,是数组首元素的内存地址,可以重新赋值。正确答案:× 3、C语言中,数组元素在内存中是顺序存放的,它们的地址是连续的。 正确答案:√ 三、填空题 1、假设有定义 int a[10]={1,3,5,7}; ,则7是元素()的值。 正确答案:a[3] 2、数组名是一个地址(),由系统自动为其分配,不能人为修改,代表了数组在内存中存放的首地址。(提示:填“常量”或“变量”) 正确答案:常量

C语言-数组-实验题目及答案

实验六数组程序设计 【实验目的】 1、掌握使用一维数组编程方法 2、掌握使用二维数组进行程序设计 【实验内容】 一、上机验证程序,并分析结果 要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。1、#include int main() { int a[ ]={1,2,3,4,5} , i, j, s=0 ; j = 1; for ( i = 4 ; i>=0 ; i--) { s = s+ a[i] * j ; j = j * 10 ; } printf(" s= %d \n" , s ); return 0; } 二、程序改错题 1.下面程序的功能,是从键盘输入一个数组〔数组长度为10〕,查找数组中正数的个数。源代码如下,程序中存在错误,请将其改正。 #include int main()

{ int a(10);/*定义数组*/ int count,i;/* i循环变量 count 正数个数*/ for(i=0;i<=10;i++) {/*循环输入*/ scanf("%d",a[i]); } count=1; for(i=0;i<=10;i++) {/*查找正数*/ if(a(i)>0) count++; } printf("数组中正数有:%d个\n",count); return 0; } 三编写程序 1.编写程序要求输入30个学生的单科成绩,输出高于平均分的成绩。#include #define N 30 int main() { float score[N],sum=0,aver; int i; for(i=0;i<30;i++) { scanf("%f",&score[i]); sum=sum+score[i]; } aver=sum/30; printf("平均分为:%.2f\n",aver); for(i=0;iaver) printf("%.2f ",score[i]); printf("\n");

数组编程练习(带答案)

数组编程练习 1、产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。 解: #include #include #define N 10 int main() { int a[N],i; for(i=0;i #include #define N 10 int main() { int a[N],i,max,min,sum; float ave; for(i=0;imax) { max=a[i]; } if(a[i] #include #define N 10 int main() { int a[N],i,j,t; for(i=0;i

C语言实验__一维数组

实验6 一维数组 实验要求: 使用Visual C++ 6.0开发环境,完成以下习题。 1. (此题可不使用数组)输出1~100之间的不能被7整除的数。(要求使用continue语句,如果其能被7整除则continue)。源程序保存为6-1.c。运行效果截图保存为6-1p.jpg。 2. 对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。源程序保存为6-2.c。运行效果截图保存为6-2p.jpg。 3. 定义一个100个元素的数组,依次赋值为1 ~ 100。先输出其中能被3整除的数。再输出其中能被5整除的数。(注意数组的下标是从0开始。)源程序保存为6-3.c。运行效果截图保存为6-3p.jpg。 4. 让用户输入学生的人数n,然后输入这n个学生的语文成绩,保存在数组中。然后分别计算输出: (1)统计语文成绩平均分。 (2)不及格的学生序号及成绩、并统计不及格人数。 (3)最高分的成绩及最高分的学生的序号。 源程序保存为6-4.c。运行效果截图保存为6-4p.jpg。 5. 定义一个数组A存放6个学生的高数成绩,定义一个数组B存放这6个学生的英语成绩, 再定义一个数组C存放这6个学生的C++成绩。在输入时,要求逐个学生的三门课成绩输入(即先输入第1个学生的三门课成绩,再输入第2个学生的三门课成绩,以此类推)。求这6个同学三科的总分存放在数组D中,并输出。源程序保存为6-5.c。运行效果截图保存为6-5p.jpg。 6. 编程实现:简单版成绩管理系统1。 程序首先显示菜单,让用户选择1则添加一个学生的的记录,选择2则查看一个学生的记录,选择3则修改一个学生的记录,选择4则浏览所有学生记录。每个学生记录由其学号、高数成绩、英语成绩、C++成绩组成。(提示:定义一个100个元素的数组,存放学生的学号;定义一个100个元素的数组存放高数成绩,定义一个100个元素的数组存放英语成绩;定义一个100个元素的数组存放C++成绩;定义一个变量记录当前已经总共添加了多少个学生) 当用户选择1之后,让用户输入要添加的学生的学号、高数成绩、英语成绩、C++成绩。 当用户选择2之后,先让用户输入要查看的学生学号,然后输出其高数、英语、C++成绩。 当用户选择3之后,先让用户输入要修改的学生学号,然后依次让用户重新输入这个学生的高数、英语、C++成绩、 当用户选择4之后,依次输出每个学生的学号、高数、英语、C++成绩。 源程序保存为6-6.c。运行效果截图保存为6-6p.jpg。

一维、二维数组及应用程序设计习题

一维、二维数组及应用程序设计习题 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 2 y+3xy 2 +y 3 ,系数为(1、3、3、1)以及四次、五次、……等运算后所得的系数表,如下图(仅举5行): 题目要求:⑴利用一维数组试求用户给定行数的杨辉三角形;⑵利用二维数组试求用户给定行数的杨辉三角形(请尽力严格按照上图要求的输出格式)。 输入数据:5 输出结果:如上图如示。 1 2 3 4 5 6 1 4 2 5 3 6 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 0 0 0 2 3 0 0 4 5 6 0 7 8 9 10 0 0 0 7 0 0 4 8 0 2 5 9 1 3 6 10

实验07-1参考答案

实验七-1 数组程序设计 班级:学号:姓名:评分: 一.【实验目的】 1、熟练掌握使用一维数组编程的方法。 2、熟练掌握排序算术。 3、熟练掌握使用二维数组编程的方法。 4、进一步掌握C程序的调试方法和技巧。 二.【实验内容和步骤】 1、程序调试题 A.目标:进一步学习掌握程序调试的方法和技巧。 B.内容:从键盘输入一个正整数n(0 int main( ) { int i, j, n, x, a[10]; printf("输入数据的个数n:"); scanf("%d", &n); printf("输入%d个整数:", n); for(i = 0; i < n; i++) scanf("%d", &a[i]); printf("输入要插入的整数:"); scanf("%d", &x); for(i = 0; i < n; i++){ if(x > a[i]) continue; j = n - 1; while(j >= i){ /* 调试时设置断点 */ a[j+1] = a[j]; j--; } /* 调试时设置断点 */ a[i] = x; break; } if(i == n) a[n]=x; for(i = 0; i < n + 1; i++) printf("%d ", a[i]); putchar('\n'); return 0; } ②运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。

参考答案 - 作业第 4 章(1)数组字符数组

参考答案 - 作业第 4 章(1)数组、字符数组 参考答案────数组、字符数组 【学习要点】 1.掌握一维数组的逻辑结构和物理结构。 2.掌握一维数组的定义、初始化及其使用。 3.掌握函数参数为数组时,函数参数的正确传递。 4.掌握数组应用的常用算法━━选择排序、冒泡排序、顺序查找、折半查找 5.掌握二维数组的逻辑结构和物理结构。 6.掌握二维数组的定义、初始化及其使用。 7.掌握字符数组的特点、定义、初始化及其使用,掌握字符数组的整体输入/输出。8.掌握字符串处理的基本函数。 ------------------------------------------------------------------------------------------------------------------------------------------------- 【例题分析】 1.关于数组,下面描述中正确的是______。 A.与普通变量没什么区别 B.其元素的数据类型可相同,也可不同 C.可用数组名标识其元素 D.数组元素的数据类型是相同的【答案】D 【解析】数组是一组具有线性关系且类型相同变量的集合体,用一个统一的数组名来命名,组成数组的变量称为数组元素,用数组名、方括号和下标来共同标识数组中的一个元素,下标代表该元素在数组中的位置(从0开始),数组元素也称为下标变量。 2.下面合法的数组定义是______。 A.int a[ ] = { 'A', 'B', 'C' } ; B.int a[ 5 ] = { 0, 1, 2, 3, 4, 5 } ; C.int a = { 'A', 'B', 'C' } ; D.int a[ ] = { 0, 1, 2, 3, 4, 5 } ; 【答案】D 【解析】根据数组定义和初始化情况,数组类型与所赋初始数据的类型应一致。指定的数组长度应大于或等于花括号中的初始数据个数。定义数组时,可以不直接指定数组的

一维数组练习题

一维数组练习题 一维数组练习题 1、以下对一维数组a进行正确初始化的是__________。 A) int a[10]=(0,0,0,0,0); B) int a[10]={ }; C) int a[ ]={0}; D) int a[10]={ 10*2}; 2、以下一维数组a的正确定义是________ 。 A) int a(10); B) int n=10,a[n]; C) int n; D) #define SIZE 10 scanf("%d",&n); int a[SIZE]; int a[n]; 3、执行下面的程序段后,变量k中的值为__________。 int k=3,s[2]; s[0]=k; k=s[1]*10; A) 不定值B) 33 C) 30 D) 10 4、下列程序执行后的输出结果是__________。 main() {int a,b[5]; a=0; b[0]=3; printf("%d,%d\n",b[0],b[1]); } A) 3,0 B) 3 0 C) 0,3 D) 3,不定值 5、已知数组a的赋值情况如下所示,则执行语句a[2]++;后a[1]和a[2]的值 分别是________。 a[0] a[1] a[2] a[3] a[4] ┌──┬──┬──┬──┬──┐ │ 10 │ 20 │ 30 │ 40 │ 50 │ └──┴──┴──┴──┴──┘

A) 20和30 B) 20和31 C) 21和30 D) 21和31 6、以下程序输出a数组中的最小值及其下标,在划线处应填入的是________。main( ) { int i,p=0,a[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=1;i<10;i++) if(a[i] printf("%d,%d\n",a[p],p); } A) i=p B) a[p]=a[i] C) p=j D) p=i 7、以下程序的输出结果是________。 main( ) { int i,p=0,a[10]={1,5,9,0,-3,8,7,0,1,2}; for(i=1;i<10;i++) if(a[i] printf("%d,%d\n",a[p],p); } A) -3,4 B) 0,1 C) 9,2 D) 2,9 8、有如下说明: int a[10]={0,1,2,3,4,5,6,7,8,9}; 则数值不为9的表达式是________。 A) a[10-1] B) a[8] C) a[9]-0 D) a[9]-a[0] 9、有如下程序 main() { int n[5]={0,0,0},i,k=3; for(i=0;i

数组和广义表思考题及答案

一、选择题 1. 将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[1‥298]中,A中元素A6665(即该元素下标i=66,j=65),在B数组中的位置K为(B )。供选择的答案: 三条对角线有元素值,其他没有 A. 198 B. 195 C. 197 2. 二维数组A的元素都是6个字符组成的串,行下标i的范围从0到8,列下标j的范圈从1到10。从供选择的答案中选出应填入下列关于数组存储叙述中()内的正确答案。 (1)存放A至少需要( E )个字节; (2)A的第8列和第5行共占( A )个字节; (3)若A按行存放,元素A[8,5]的起始地址与A按列存放时的元素(B )的起始地址一致。 供选择的答案: (1)A. 90 B. 180 C. 240 D. 270 E. 540 (2)A. 108 B. 114 C. 54 D. 60 E. 150 (3)A. A[8,5] B. A[3,10] C. A[5,8] D. A[0,9] 3. 设A是n*n的对称矩阵,将A的对角线及对角线上方的元素以列为主的次序存放在一维数组B[1..n(n+1)/2]中,对上述任一元素aij(1≤i,j≤n,且i≤j)在B中的位置为( B )。 A. i(i-l)/2+j B. j(j-l)/2+i C. j(j-l)/2+i-1 D. i(i-l)/2+j-1 4. A[N,N]是对称矩阵,将下面三角(包括对角线)以行序存储到一维数组T[N(N+1)/2]中,则对任一上三角元素a[i][j]对应T[k]的下标k是(B )。 A. i(i-1)/2+j B. j(j-1)/2+i C. i(j-i)/2+1 D. j(i-1)/2+1 5. 设二维数组A[1.. m,1..n](即m行n列)按行存储在数组B[1.. m*n]中,则二维数组元素A[i,j]在一维数组B中的下标为( A )。 A.(i-1)*n+j B.(i-1)*n+j-1 C. i*(j-1) D. j*m+i-1 6. 有一个100*90的稀疏矩阵,非0元素有10个,设每个整型数占2字节,则用三元组表示该矩阵时,所需的字节数是(B )。 A. 60 B. 66 C. 18000 D. 33 7. 数组A[0..4,-1..-3,5..7]中含有元素的个数(B )。 A. 55 B. 45 C. 36 D. 16 8. 广义表A=(a,b,(c,d),(e,(f,g))),则下面式子的值为(D )。 Head(Tail(Head(Tail(Tail(A)))))

第四章 数组习题集答案

第四章数组习题 一、选择题 1. 如果char型变量占两个字节的存储单元,则按照如下方式定义的数组x占用的字节数 是【】。 char x[50]={2,4,6,8,10}; A)50 B)100 C)10 D) 5 2. 下面关于数组的定义正确的是【】。 A) int n=10; float a[n]={1.0,2.1,3.2}; B) #define N 10 int a[N]={1,2,3}; C) int n; scanf("%d", &n); int a[n]; D) #define N 10; int a[N]={1,2,3}; 3. 若有说明int a[5][4]; 则对其数组元素的正确引用是【】。 A)a[3+1][2] B)a(2)(3) C)a[0,2]D)a[3][5] 4. 若定义了数组int k[][4]={{1},{1,2,3},{5,6}};则数组共有【】元素。 A)6 B)9 C)10 D)12 5. 要将20,30,40,50 存入数组b中, 下列正确的程序段是【】。 A) int i,b[4]; for(i=0; i<4; i++) b[i]=(i+2)*10; B) int b[4]; b={20,30,40,50}; C) int b[4]; b[1]=20,b[2]=30,b[3]=40,b[4]=50; D) int b[4]; b[4]={20,30,40,50}; 6. 下列二维数组初始化语句中正确且与语句float a[]={0,1,2,0,4,0}等价的是【】。 A)float a[6]={0,1,2,0,4}; B)float a[]={0,1,2,0,4}; C)float a[7]={0,1,2,0,4,0}; D)float a[5]={0,1,2,0,4}; 7. printf("%d \n ", strlen ("ATS\n012\1\\" )) ; 程序段的输出结果是【】。

一维数组程序设计习题

一维数组程序设计习题 1、【逆序输出问题】 题目描述:按照顺序从键盘读入十个数据,以逆序方式输出。 输入数据:1 2 3 4 5 6 7 8 9 10 输出结果:10 9 8 7 6 5 4 3 2 1 2、【数组元素的移动问题】 题目描述:将元素个数为10的数组a中的第一个元素移到数组末尾,其余数据依次往前平移一个位置,请编程实现。 输入数据:1 2 3 4 5 6 7 8 9 10 输出结果:2 3 4 5 6 7 8 9 10 1 3、【斐波那契数列问题】 题目描述:有这样一种数列:1、1、2、3、5、8、……,这个数列的特点是:第1、2两个数为1,1,从第3个数开始,该数是其前面两个数之和。这种数列被称为Fibonacci(斐波那契)数列,请编程输出斐波那契数列的前20项(用一维数组完成)。 输出结果:1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 4、【求和问题】 题目描述:编程计算并输出S=∑ = 10 1 i i i y x 其中,Xi的值为1、8、5、7、2、99、34、67、2589、19,Yi的值为2、22、14、3、7、9、11、8、132、30。 输出结果:344402 5、【排序问题】 题目描述:从键盘输入10个数,将它们按照从小到大的顺序输出。 输入数据:72 98 79 66 39 95 96 25 5 37 输出结果:5 25 37 39 66 72 79 95 96 98 6、【进制转换问题】 题目描述:请编程将一个从键盘输入的十进制整数转化为二进制数输出。 输入格式:32570 输出格式:111111********* 7、【圆环找数问题】 题目描述:有一组数,其排列形式如下:11,19,9,12,5,20,1,18,4,16,6,10,15,2,17,3,14,7,13,15,8且尾部8和头部11首尾相连,构成环形的一组数,编程找出相邻的4个数,其相加之和最大,并给出它们的起始位置。 输出结果:58 19 8、【质数问题】 题目描述:用筛选法求100之内的质数,要求每行输出5个数据。 输出结果:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

C语言习题六(数组部分)习题及答案

C语言习题六(数组部分)习题及答案 习题六 一.选择题 1.在C语言中,引用数组元素时,其数组下标的数据类型允许是 c 。A)整型常量B)整型表达式 C)整型常量或整型表达式C)任何类型的表达式 2.以下对一维整型数组a的正确说明是D A)int a(10) ; B)int n=10,a[n]; C)int n; D)#define SIZE 10 scanf(“%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元素的正确引用是。A A)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进行正确初始化的语句是。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} ; 8.若有说明:int a[3][4]={0};则下面正确的叙述是D。

数组习题及答案

构造数据对象——数组 一、填空题 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中的第二个数组元素输入数据,格式正确的是()

数组_参考答案

一、【必做题】 1.编写一个简单程序,要求数组长度为5,分别赋值10,20,30,40,50,在控制台输出该数组的值。 /*例5-1 *数组使用范例 */ public class ArrayDemo { public static void main(String[] args) { int[] buffer=new int[5]; buffer[0]=10; buffer[1]=20; buffer[2]=30; buffer[3]=40; buffer[4]=50; for(int i=0;i<5;i++) { System.out.println(buffer[i]); } } } 2.输出一个double型二维数组(长度分别为5、4,值自己设定)的值。 /*例5-3 *多维数组范例 */ public class ArrayTwoDimension { public static void main(String[] args) { double[][] buffer=new double[5][4]; for(int i=0;i

} 3.将一个字符数组的值(neusofteducation)考贝到另一个字符数组中。 public class ArrayCopyDemo { public static void main(String[ ] args) { //定义源字符数组 char[ ] copyFrom = {'n', 'e', 'u', 's', 'o', 'f', 't', 'e', 'd', 'u', 'c', 'a', 't', 'i', 'o', 'n'}; char[ ] copyTo = new char[7]; System.arraycopy(copyFrom, 2, copyTo, 0, 7); System.out.println(new String(copyTo)); } } 4.给定一个有9个整数(1,6,2,3,9,4,5,7,8})的数组,先排序,然后输出排序后的数组的值。public class ArraySortDemo { /** *@param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[] point = {1,6,2,3,9,4,5,7,8}; java.util.Arrays.sort( point ); for(int i=0;i

相关主题
文本预览
相关文档 最新文档