文档库 最新最全的文档下载
当前位置:文档库 › 练习题-第六章_数组(有答案)

练习题-第六章_数组(有答案)

练习题-第六章_数组(有答案)
练习题-第六章_数组(有答案)

一、填空题

1.在C语言中,二维数组元素在内存中的存放顺序是。

2.定义了二维数组:int array[4][5],该数组所占的内存空间为______字节。

3.假设有整型数组array[100][100],其中第66行,第66列元素array[66][66]在数

组中排列的位置(位置从1开始算起)为6566 。

4.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[2][1]得到的初值是

________。

5.下面的程序段的运行结果是____he_____。

char x[ ]=“the teacher”;

int i =0;

while(x[++i] != ’\0’)

if(x[i-1] = = ‘t’) printf(“%c”,x[i]);

二、单项选择题

1.下面程序( B )(每行程序前面的数字表示行号)。

1 main( )

2 { float a[10]={0.0};

3 int i;

4 for(i=0;i<3;i++) scanf(“%d”,&a[i]);

5 for(i=1;i<10;i++) a[0]=a[0]+a[i];

6 printf(“%f\n”,a[0]);

7 }

A)没有错误B)第2行有错误

C)第4行有错误D)第6行有错误

2.下面程序中有错误的行是(D)(每行程序前面的数字表示行号)。

1main( )

2{

3int a[3]={1};

4int i;

5scanf(“%d”,&a);

6for(i=1;i<3;i++) a[0]=a[0]+a[i];

7printf(“a[0]=%d\n”,a[0]);

}

A. 3

B. 6

C. 7

D. 5

3.以下不能对二维数组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};

4.对两个数组a和b进行初始化

char a[ ] =“ABCDEF”;

char b[ ] = {‘A’,‘B’,‘C’,‘D’,‘E’,‘F’};

则以下叙述正确的是(D )。

A. a与b数组完全相同

B. a与b长度相同

C. a和b中都存放字符串

D. a数组比b数组长度长

5.判断字符串s1是否大于字符串s2,应当使用( D )。

A. if ( s1 > s2 )

B. if (strcmp (s1 , s2 ))

C. if ( strcmp (s2 , s1 ) > 0 )

D. if (strcmp (s1 , s2 ) > 0 )

6.当运行以下程序时,从键盘输入:AhaMA□Aha ↙(□代表空格,↙代表回车),

则下面程序的运行结果是( )。

#include “stdio.h”

main( )

{ char s[80], c = ?a?;

int i = 0;

scanf(“%s”,s);

while(s[i] != ?\0?)

{ if(s[i] = = c ) s[i] = s[i] - 32;

else if (s[i] = = c-32) s[i] = s[i] + 32;

i++;

}

puts(s);

}

A. ahAMa

B. AhAMa

C. AhAMa□ahA

D. ahAMa□ahA

7.下面程序段是输出两个字符串中对应相等的字符。请选择填空。

char x[]=“programming”;

char y[]=“Fortran”;

int i=0;

while(x[i]!= …\0?&&y[i]!= …\0?)

if(x[i]==y[i]) printf(“%c”, ( A ) );

else i++;

A. x[i++]

B. y[++i]

C. x[i]

D. y[i]

三、判断题

1.有二维数组int a[100][100],数组元素a[100][100]的存储位置为10001。( F )

2.为了增加程序的通用性,定义数组时,最好用变量说明其长度。如:int n; int arr[n];

( F )

3.字符个数多的字符串一定比字符个数少的字符串大。(F)

4.下面程序运行的结果为“OK!”。( F )

char s1[100] = {“abcde”}; char s2[100] = { “abcde” };

if(s1= = s2) printf( “ OK! ”) else printf(“No! ”);

四、填程序

1.设数组a包括10个整型元素。下面程序的功能是求出a中各相邻两个元素的和,并将

这些和存在数组b中,按每行3个元素的形式输出。请填空。

main( )

{ int a[10],b[10],i;

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

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

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

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

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

{ printf(“%3d”,b[i]);

if(i%3 == 0) printf(“\n”);

}

}

2.下面程序的功能是求出矩阵x的右上三角元素之积。其中矩阵x的行、列数和元素值均

由键盘输入。请填空。

#define M 10

main( )

{ int x[M][M];

int n,i,j;

long s=1;

printf(“Enter a integer(<=10):\n”);

scanf(“%d”,&n);

printf(“Enter %d data on each line for the array x\n”,n);

for( i=0;i

for(j=0;j

scanf(“%d”,&x[i][j]);

for(i=0;i

for( j=i ;j

s*=x[i][j];

printf(“\n%ld\n”,s);

}

五、编程题:

1.利用顺序查找法从数组a的10个元素中对关键字m进行查找。要求从键盘输入数组元

素以及要查找的数据值。(顺序查找法的思路是:从第一个元素开始,从前向后依次与关键字比较,直到找到此元素或查找到数组尾部时结束。若找到,则查找成功;若直至最后一个元素都不相等,则查找失败。)

2.从键盘输入两个字符串a和b,要求不用库函数strcat把串b的前五个字符连接到串a

中;如果b的长度小于5,则把b的所有元素都连接到a中。试编程。

第六章数组习题答案

第六章数组习题答案 一、单项选择题 1. C语言中,一维数组下标的最小值是(B )。 A)1 B) 0 C) 视说明语句而定D) 无固定下限 2. 若有定义语句:int a[3][6];,按在内存中的存放顺序,a数组的第10个元素是( B )。A)a[0][4] B) a[1][3] C) a[0][3] D) a[1][4] 3. 设有数组定义:char str[ ]=”China0”,则数组str所占的空间为( D )字节。 A)4个B) 5个C) 6个D) 7个 4. 若有定义语句:char str[ ]=”ab\n\012\\\n”; 则执行语句:printf(“%d”,strlen(str));后,输出结果是( A )。 A)3 B) 4 C) 6 D) 12 5. 下列描述中不正确的是( C )。 A)字符型数组中可以存放字符串 B)可以对字符型数组进行整体输入、输出 C)可以对整型数组进行整体输入、输出 D)不能在赋值语句中通过赋值运算符”=”对字符型数组进行整体赋值 6. 当用户要求输入的字符串中含有空格时,应使用的输入函数是( C )。 A)scanf( ) B)getchar( ) C) gets( ) D) getc( ) 7. 有以下程序 #include main( ) { int i,x[3][2]={0}; for(i=0;i<3;i++) scanf(“%d”,x[i]); printf(“%3d%3d%3d\n”,x[0][0], x[0][1], x[1][0]); } 程序运行后的输出结果是()。 A)2 0 0 B) 2 0 4 C) 2 4 0 D) 2 4 6 8. 有以下程序 #include #include main( ) { char p[20]={‘a’,’b’,’c’,’d’},q[ ]=”abc”,r[ ]=”abcde”; strcpy(p+strlen(q),r); strcat(p,q); printf(“%d %d\n”,sizeof(p),strlen(p)); } 程序运行后的输出结果是( C )。 A)20 9 B) 9 9 C) 20 11 D) 11 11 9. 有以下程序 #include #include main( )

C语言必背的典型程序设计题目 - 数组、函数-------参考答案

1、使用选择法、冒泡法对10个数进行排序,并输出排序前后的数列。 n k=0; m t=0; //用于记录出列顺序 while(t #include <> void main() { int i,j,a[6][6]; for(i=0;i<=5;i++) { a[i][i]=1; a[i][0]=1; } for(i=2;i<=5;i++) { for(j=1;j<=i-1;j++) { a[i][j]=a[i-1][j]+a[i-1][j-1]; } } for(i=0;i<=5;i++) { for(j=0;j<=i;j++) { printf("%4d",a[i][j]); } printf("\n"); } } 5、编写程序,把下面的数据输入一个二维数组中。

25 36 78 13 12 26 88 93 75 18 22 32 56 44 36 58 然后执行以下操作: ①输出矩阵两个对角线上的数; ②分别输出各行和各列的和; ③交换第一行和第三行的位置; ④交换第二列和第四列的位置; ⑤输出处理后的数组。 #include<> #define SIZE 4 void main() { int a[SIZE][SIZE]={{25,36,78,13},{12,26,88,93},{75,18,22,32},{56,44,36,58}}; int i,j,t,sum; //输出二维数组 printf("二维数组:\n"); for(i=0;i

数据结构-第六章-图-练习题及答案详细解析(精华版)

图 1. 填空题 ⑴ 设无向图G中顶点数为n,则图G至少有()条边,至多有()条边;若G为有向图,则至少有()条边,至多有()条边。 【解答】0,n(n-1)/2,0,n(n-1) 【分析】图的顶点集合是有穷非空的,而边集可以是空集;边数达到最多的图称为完全图,在完全图中,任意两个顶点之间都存在边。 ⑵ 任何连通图的连通分量只有一个,即是()。 【解答】其自身 ⑶ 图的存储结构主要有两种,分别是()和()。 【解答】邻接矩阵,邻接表 【分析】这是最常用的两种存储结构,此外,还有十字链表、邻接多重表、边集数组等。 ⑷ 已知无向图G的顶点数为n,边数为e,其邻接表表示的空间复杂度为()。 【解答】O(n+e) 【分析】在无向图的邻接表中,顶点表有n个结点,边表有2e个结点,共有n+2e个结点,其空间复杂度为O(n+2e)=O(n+e)。 ⑸ 已知一个有向图的邻接矩阵表示,计算第j个顶点的入度的方法是()。 【解答】求第j列的所有元素之和 ⑹ 有向图G用邻接矩阵A[n][n]存储,其第i行的所有元素之和等于顶点i的()。 【解答】出度

⑺ 图的深度优先遍历类似于树的()遍历,它所用到的数据结构是();图的广度优先遍历类似于树的()遍历,它所用到的数据结构是()。 【解答】前序,栈,层序,队列 ⑻ 对于含有n个顶点e条边的连通图,利用Prim算法求最小生成树的时间复杂度为(),利用Kruskal 算法求最小生成树的时间复杂度为()。 【解答】O(n2),O(elog2e) 【分析】Prim算法采用邻接矩阵做存储结构,适合于求稠密图的最小生成树;Kruskal算法采用边集数组做存储结构,适合于求稀疏图的最小生成树。 ⑼ 如果一个有向图不存在(),则该图的全部顶点可以排列成一个拓扑序列。 【解答】回路 ⑽ 在一个有向图中,若存在弧、、,则在其拓扑序列中,顶点vi, vj, vk的相对次序为()。 【解答】vi, vj, vk 【分析】对由顶点vi, vj, vk组成的图进行拓扑排序。 2. 选择题 ⑴ 在一个无向图中,所有顶点的度数之和等于所有边数的()倍。 A 1/2 B 1 C 2 D 4 【解答】C 【分析】设无向图中含有n个顶点e条边,则。

C语言练习题(带答案)

一、单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D)。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C。 A)2.5 B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

C++程序设计习题答案第六章

第六章模板与数据结构习题 一、.基本概念与基础知识自测题 6.1 填充题 6.1.1 模板是为了实现代码的(1),它把数据类型改为一个(2),称为(3)程 序设计。模板包括(4)和(5)。 答案:(1)重用 (2)设计参数 (3)参数化(parameterize) (4)函数模板(function template) (5)类模板(class template) 6.1.2 调用函数模板时,可以显式指定模板参数类型,也可以隐式进行,称为(1),这是 根据(2)来决定的。 答案:(1)模板实参推演(template argument deduction) (2)一组实际类型或(和)值 6.1.3 顺序查找可以用于(1)线性表,而对半查找可以用于(2)线性表。 答案:(1)无序的(所有) (2)有序的 6.1.4 最常见的排序方式有(1)、(2)和(3)。如果现有一个已排好序的线 性表,在表尾添加了一个元素,采用(4)排序法使它重新成为有序的所需工作量最小。 答案:(1)选择 (2)插入 (3)交换 (4)交换(可利用原来的有序性) 6.1.5 给出以下指针的说明方式:指向一个4元素整型数组的指针为(1);指向一个返 回整型数,参数为两个整型数的函数的指针(2);指向一个数组的指针,而该数组元素都是指向一个返回整型指针的无参函数(3)。 答案:(1)int(*p)[4] (2)int(*p)(int,int) (3)以指向6元素数组为例:int*(*)() (*p)[6] 6.2简答题 6.2.1需要编写一个对多维数组通用的算法(即各维的大小未定),怎样才能把实参多维数 组的信息全部传递到函数中去? 答:最佳方法是用函数模板,多维数组用模板类型参数传递,各维的大小作为参数传递。也可以用一维数组加各维的大小都作为参数传递。 6.2.2什么叫函数模板?什么叫模板函数?什么叫类模板?什么叫模板类? 答:不受数据类型限制的通用型的函数使代码的可重用性大大提高。把数据类型改为

习题答案(6数组)《C语言程序设计》课后习题解答

一、单项选择题 1. D 2. D 3.A 4. B 二、程序设计题 1、 #include void main() { int math_score[10],max,min,sum=0,count=0,m,i; float average; for(i=0;i<10;i++) { printf("请输入第%d个同学的数学分数:\n",i+1); scanf("%d",&math_score[i]); } max=min=math_score[0]; for(i=0;i<10;i++) { sum+=math_score[i]; if(math_score[i]>max) max=math_score[i]; if(math_score[i]average) count++; printf("十名同学的数学成绩为:\n"); for(i=0;i<10;i++) printf("%d ",math_score[i]); printf("\n最高分为:%d",max); printf("\n最低分为:%d",min); printf("\n高于平均分的人数为:%d\n",count); } 2、 #include void main() { int a[11]={-1,3,5,6,12,34,55,67,76,88}; int number,i,j,m; printf("输入需要参入的数据:\n"); scanf("%d",&number); printf("原数组序列为:\n");

第六章 数组

第六章数组 一、选择题 1.在C语言中,引用数组元素时,其数组下标的数据类型允许是。(0级) A)整型常量B)整型常量或整型表达式 C)整型表达式D)任何类型的表达式 2.以下对一维整型数组a的正确说明是。(0级) A)int a(10); B)int n=10,a[n]; C)int n; scanf(“%d”,&n); int a[n]; D ) #define SIZ E 10 int a[SIZE];以下能对一维数组a进行正确初始化的语句是。(0级) A)int a[10]=(0,0,0,0,0); B)int a[10]={ }; C)int a[ ]={0}; D)int a[10]={10*1}; 4.不是给数组的第一个元素赋值的语句是。(0级) A)int a[2]={1}; B) int a[2]={1*2}; C)int a[2];scanf (“%d”,a);D)a[1]=1; 5.下面程序的运行结果是。(1级) main() {int a[6],i; for(i=1;i<6;i++) { a[i]=9*(i-2+4*(i>3))%5; printf("%2d",a[i]); } } A)-4 0 4 0 4 B)-4 0 4 0 3 C)-4 0 4 4 3 D)-4 0 4 4 0 6.下列定义正确的是。(1级) A)static int a[]={1,2,3,4,5} B) int b[]={2,5} C) int a(10) D) int 4e[4] 7.若有说明int a[][4]={0,0};则下列叙述不正确的是。(0级) A) 数组a的每个元素都可以得到初值0 B) 二维数组a的第一维的大小为1 C) 因为对二维数组a的第二维大小的值除以初值个数的商为1,故数组a的行数 为1 D) 只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值 8.设有char str[10],下列语句正确的是。(1级) A) scanf("%s",&str); B) printf("%c",str); C) printf("%s",str[0]); D) printf("%s",str); 9.下列说法正确的是。(0级) A) 在C语言中,可以使用动态内存分配技术定义元素个数可变的数组 B) 在C语言中,数组元素的个数可以不确定,允许随机变动

c语言数组习题

数组练习解答 1定义一个名为 a 的单精度实型一维数组 ,长度为 4,所有元素的初值均为 0的数定义语句就是 【分析】按照一般数据定义语句的格式 ,可以直接写出方法一(参瞧答案);考虑到所有元素均赋初值时可 以省略数组长度,可以写出方法二(参瞧答案);考虑到不省略数组长度,给部分元素赋初值时,所有未赋初 值的元素均有空值(对数值型数组来说,初值为0),可以写出方法三(参瞧答案);考虑到选用静态型,不赋 初值所有元素也自动赋予。空值 (对数值型数组来说,初值为0),可以写出方法四(参瞧答案)。 【答案】方法一 :float a[4] = (0.0,0.0,0.0,0.0}; 方法二:float a[] = ( 0.0,0.0,0.0,0.0}; 规定,定义字符型数组时不允许直接使用 "字符常量"的方式赋初值,所以备选答案②也就是错误的。 备选答案③符合题意。【答案】③ 6定义一个名为"s"的字符型数组,并且赋初值为字符串"123"的错误语句就是() ① char s[]={ '1','2','3',' \0 '}; ② char s 「」={"123"}; ③ char s[]={"123\n"}; ④ char s[4]={'1','2','3'}; 【分析】备选答案①中省略了数组长度 ,所以每个元素都赋了初值,共计4个元素,初值依次为T '3'、’ \0',最后一个元素的值为字符串结束标记 ,所以数组S 中存放的就是字符串"123",该答案不符合 题意(即正确的);备选答案③中直接赋予字符串作为初值所以数组 s 的长度为4,其中的初值就是字符串 "123",不符合题意(即正确的);备选答案③中也就是给数组 s 赋予字符串的初值,但就是字符串不就是 方法三:float a[4]= {0.0}; 方法四:static float [4]; 2下列数组定义语句中,错误的就是() ① char x[1] = 'a'; ② auto char x[1]={0}; ③ static char x[l]; ④ char x[l]; 【分析】显然答案①中给字符型数组赋初值的格式不对 以 备选答案①就是符合题意的答案。 【答案】① 3用"冒泡排序法"对n 个数据排序,需要进行n 一 1 较,小者调上;该操作反复执行 n- k 次。现在假设有 则利用"冒泡排序法"执行第2步后的结果就是 【分析】开始排序前的排列执行第 4 1 - 3 : (不能直接赋予字符常量,必须用花括号括住),所 步。其中第k 步的任务就是:自下而上,相邻两数比 4个数据:4、l 、3、2要排序,假定4为上、2为下, O 1步后的排列执行第 2步后的排列 1 2 4 2 【答案】l 、2、4、 3 4用"选择排序法"对n 个数据排序,需要进行n-1 据中寻找最小数,与第k 个数据交换。现在假设有 行第2步后的结果就是 ____________________ 【分析】 开始排序前的排列为: 4 执行第1步后的排列为: 执行第2步后的排列为: 【答案】1、2、3、4 5下列数组定义语句中,正确的就是() ① int a[][]={1,2,3,4,5,6}; ② char a[2] ③ int a[][3]= {1,2,3,4,5,6}; ④ static int a[][] 【分析】C 语言规定,二维数组定义时不允许省略第二维的长度 步。其中第k 步的任务就是:在第k 个数据到第n 个数 4个数据:4、 1、 3、2要排序,则利用"冒泡排序法"执 「3] = 'a','b'; ={{1,2,3},{4,5,6}}; ,所以备选答案①④就是错误 C 语言还 显然 、'2'、

数据结构第六章树和二叉树习题及答案

习题六树和二叉树 一、单项选择题 1.以下说法错误的是() A. 树形结构的特点是一个结点可以有多个直接前趋 B. 线性结构中的一个结点至多只有一个直接后继 C. 树形结构可以表达(组织)更复杂的数据 D. 树(及一切树形结构)是一种”分支层次”结构 E. 任何只含一个结点的集合是一棵树 2. 下列说法中正确的是() A. 任何一棵二叉树中至少有一个结点的度为2 B. 任何一棵二叉树中每个结点的度都为2 C. 任何一棵二叉树中的度肯定等于2 D. 任何一棵二叉树中的度可以小于2 3. 讨论树、森林和二叉树的关系,目的是为了() A. 借助二叉树上的运算方法去实现对树的一些运算 B. 将树、森林按二叉树的存储方式进行存储 C. 将树、森林转换成二叉树 D. 体现一种技巧,没有什么实际意义4.树最适合用来表示() A. 有序数据元素 B .无序数据元素 C.元素之间具有分支层次关系的数据 D .元素之间无联系的数据 5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()A.9 B .11 C .15 D .不确定 6. 设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1, M2和M3与森林F 对应的二叉树根结点的右子树上的结点个数是()。 A.M1 B .M1+M2 C .M3 D .M2+M3 7.一棵完全二叉树上有1001个结点,其中叶子结点的个数是() A.250 B .500 C .254 D .505 E .以上答案都不对 8. 设给定权值总数有n 个,其哈夫曼树的结点总数为() A. 不确定 B . 2n C . 2n+1 D . 2n-1 9.二叉树的第I 层上最多含有结点数为() I I-1 I-1 I A.2I B .2 I-1 -1 C .2 I-1 D .2 I -1 10.一棵二叉树高度为h, 所有结点的度或为0,或为2,则这棵二叉树最少有()结点A.2h B .2h-1 C .2h+1 D .h+1 11. 利用二叉链表存储树,则根结点的右指针是()。 A.指向最左孩子 B .指向最右孩子 C .空D .非空 12.已知一棵二叉树的前序遍历结果为为()。 A.CBEFDA B .FEDCBA 13.已知某二叉树的后序遍历序列是()。 ABCDEF中序遍历结果 为 C .CBEDFA D dabec, 中序遍历序列是 CBAEDF则后序遍历的结 果 .不定 debac , 它的前序遍历是

第六章数组

第6章数组 知识要点 数组和记录的概念、分类 数组的声明和记录的定义 数组的使用方法 学习任务 了解数组的概念和分类 理解数组的功能 掌握数组的定义、声明及使用方法 6.1 数组的概念 Visual Basic中的数组和数学中数组的概念基本类似,都是由一批互相联系的、有一定顺序的数据组成的集合。与数学中的数组不同的是,Visual Basic中的数组必须先声明,然后才能在程序中使用。一个数组中的所有数据,称为该数组的数组元素。 6.2 常规数组 常规数组,即大小固定的数组,也就是说常规数组中包含的数组元素的个数不变,它总是保持同样的大小,占有的存储空间当然也就保持不变。 6.2.1 常规数组的声明 语法: {Dim|Static|Public|Global|Private}< 数组名>[类型说明符]([下界] To 上界[,[下界] To 上界] [,...])[As < 类型说明词>] 功能: 声明常规数组的数组名、维数、上下界及其类型。 说明: 1.数组名与变量名命名规则相同。 2.数组元素在上下界内编号是联续的,上下界的范围不超过LONG数据所表示的数 的范围。 例:DIM COUNT(1 TO 15) AS INTEGER :一维整型数组,共有15个元素,即COUNT(1)-COUNT(15) DIM SUM&(10 TO 20): 4.数组元素下界可以省略,默认为0 例:DIM COUNT(15) AS INTEGER :COUNT(0)-COUNT(15)共16个元素。 设置OPTION BASE 1 则数组下标默认值为1。 OPTION BASE 0则数组下标默认值为0。 说明: 1.该语句必须在模块顶部的声明中使用,在数组声明语句之前,只影响本模块中定 义的数组。 2.一个模块中只能出现一次。 3.OPTION BASE 对ARRAY函数不起作用,即ARRAY函数创建的数组,下标的下 界始终为0

C语言数组编程题

实验4 数组 一.实验目的: 1.掌握一维数组的定义、赋值和输入输出的方法; 2.掌握字符数组定义、初始化、赋值的方法; 3.了解常见的字符串函数功能及其使用方法; 4.掌握二维数组的定义与引用。 二.实验内容: 1.编写程序,输入10个整数存入一维数组,统计输出其中的正数、负数和零的个数。 2.编写程序,输入10个整数存入一维数组,再按逆序重新存放后再输出。 3.编写程序,输入10个整数存入一维数组,对其进行升序排序后输出。 4.编写程序,求二维数组中元素的最大值和最小值。 5.编写程序,求一个4×4矩阵中所有元素之和。 6.编写程序:从键盘上输入一字符串,统计输出该字符串中的字母字符、数字字符、空格以及其他字符的个数。 7.编写程序:从键盘上输入一字符串,并判断是否形成回文(即正序和逆序一样,如“abcd dcba”)。 8. 产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。 9. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,按原来的规律将其插入并输出。 页脚内容1

10. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,要求找出该数是数组中的第几个元素,如果不在数组中,则输出找不到。 11. 找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小。可能没有鞍点。 12. 编程输出杨辉三角。(要求输出10行)(杨辉三角:每行端点与结尾的数为1.每个数等于它上方两数之和。每行数字左右对称,由1开始逐渐变大) 13. 输入一行字符,统计大写字母、小写字母、数字、空格以及其它字符个数。 14. 编写程序,将两个字符串连接起来,不用strcat。 15. 编写程序实现strcpy函数功能。 16. 编程实现strlen函数功能。 17. 编程求2-4+6-8…-100+102的值。 18. 假设某人有100,000现金。每经过一次路口需要进行一次交费。交费规则为当他现金大于50,000时每次需要交5%如果现金小于等于50,000时每次交5,000。请写一程序计算此人可以经过多少次这个路口。 19. 输入若干个正整数,以0结束,将其中大于平均值且个位为5的数排序后输出。(按由大到小的顺序排序) 20. 输入一个字符串,将其中ASCII码值为基数的字符排序后输出。(按由小到大的顺序) 21. 输入一个以回车结束的字符串(少于80个字符),滤去所有的非16进制字符后,组成一个新字符串(16进制形式),然后将其转换为10进制数后输出。 22. 读入一个正整数n(1<=n<=6),再读入n阶矩阵,计算该矩阵除副对角线、最后一行、最后一列 页脚内容2

习题6(第七章)数组

第七章数组 7.1 选择题 【题7.1】在C语言中,引用数组元素时,其数组下标的数据类型允许是 c 。 A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 【题7.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]; 【题7.3】若有说明:int a[10];则对a数组元素的正确引用是 D 。 A)a[10] B)a[3.5] C)a(5) D)a[10-10] 【题7.4】在C语言中,一维数组的定义方式为:类型说明符数组名 A ; A)[常量表达式] B)[整型表达式] C)[整型常量] 或[整型表达式] D)[整型常量] 【题7.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}; 【题7.6】以下对二维数组a的正确说明是 C 。 A)int a[3][]; B)float a(3,4); C)double a[1][4]; D)float a(3)(4); 【题7.7】若有说明:int a[3][4];则对a数组元素的正确引用是 C 。 A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1) 【题7.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] 【题7.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}}; 【题7.10】以下不能对二维数组a进行正确初始化的语句是 C 。

数据结构 第六章 图 练习题及答案详细解析

图 1. 填空题 ⑴设无向图G中顶点数为n,则图G至少有()条边,至多有()条边;若G为有向图,则至少有()条边,至多有()条边。 【解答】0,n(n-1)/2,0,n(n-1) 【分析】图的顶点集合是有穷非空的,而边集可以是空集;边数达到最多的图称为完全图,在完全图中,任意两个顶点之间都存在边。 ⑵任何连通图的连通分量只有一个,即是()。 【解答】其自身 ⑶图的存储结构主要有两种,分别是()和()。 【解答】邻接矩阵,邻接表 【分析】这是最常用的两种存储结构,此外,还有十字链表、邻接多重表、边集数组等。 ⑷已知无向图G的顶点数为n,边数为e,其邻接表表示的空间复杂度为()。 【解答】O(n+e) 【分析】在无向图的邻接表中,顶点表有n个结点,边表有2e个结点,共有n+2e个结点,其空间复杂度为O(n+2e)=O(n+e)。 ⑸已知一个有向图的邻接矩阵表示,计算第j个顶点的入度的方法是()。 【解答】求第j列的所有元素之和 ⑹有向图G用邻接矩阵A[n][n]存储,其第i行的所有元素之和等于顶点i的()。 【解答】出度 ⑺图的深度优先遍历类似于树的()遍历,它所用到的数据结构是();图的广度优先遍历类似于树的()遍历,它所用到的数据结构是()。 【解答】前序,栈,层序,队列 ⑻对于含有n个顶点e条边的连通图,利用Prim算法求最小生成树的时间复杂度为(),利用Kruskal 算法求最小生成树的时间复杂度为()。 【解答】O(n2),O(elog2e) 【分析】Prim算法采用邻接矩阵做存储结构,适合于求稠密图的最小生成树;Kruskal算法采用边集数组做存储结构,适合于求稀疏图的最小生成树。 ⑼如果一个有向图不存在(),则该图的全部顶点可以排列成一个拓扑序列。 【解答】回路 ⑽在一个有向图中,若存在弧、、,则在其拓扑序列中,顶点vi, vj, vk的相对次序为()。 【解答】vi, vj, vk

C语言数组例题

6.1.1 Fibonacci数列 /* Fibonacci数列递推求解 */ main() {int k,n; long s,f[50]; printf("求数列的第n项与前n项和,请输入n:"); scanf("%d",&n); f[1]=1;f[2]=1;s=2; /* 数组元素与和变量赋初值 */ for(k=3;k<=n;k++) {f[k]=f[k-1]+f[k-2]; /* 实施递推 */ s+=f[k];} /* 实施求和 */ printf("F数列第%d项为:%ld\n",n,f[n]); printf("F数前%d项之和为:%ld\n",n,s); } 6.1.2 幂序列 /* 幂序列程序 */ main() {int k,n; long a,b,s,f[100]; printf("求数列的第n项与前n项和,请输入n:"); scanf("%d",&n); a=2;b=3;s=0; for(k=1;k<=n;k++) {if(a

else {f[k]=b;b=b*3;} /* 用3的幂给f[k]赋值 */ s+=f[k];} printf("数列的第%d项为:%ld\n",n,f[n]); printf("数列的前%d项之和为:%ld\n",n,s); } 6.1.3 双关系递推数列 /* 双关系2x+1,3x+1递推 */ main() {int n,i,j,h,m[1500]; m[1]=1; scanf("%d",&n); for(i=1;i<=n;i++) {m[2*i]=2*m[i]+1;m[2*i+1]=3*m[i]+1; for(j=i+2;j<=2*i+1;j++) {if(m[i+1]>m[j]) /* m(i+1)与m(j)比较 */ {h=m[j]; m[j]=m[i+1];m[i+1]=h;} /* 交换,使m(i +1)最小 */ if(m[i+1]==m[j]) m[j]=20000+j;}} /* 置m(j)为一出界大数,以避免重复 */ for(i=1;i<=n;i++) {printf(" %4d",m[i]);

C语言第六章数组习题

C语言第六章数组习题 第六章数组 6.1 选择题 [题]在C语言中,引用数组元素时,其数组下标的数据类型允许是_____. A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 [题]以下对一维整型数组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]; [题]若有说明:int a[l0];则对a数组元素的正确引用是_____。 A) a[10] B)a[3.5] C)a(5) D)a[10-10] [题]在C 语言中,一维数组的定义方式为:类型说明符数组名_____。 A)[常量表达式] B)[整型表达式] C)[整型常量]或[整型表达式] D)[整型常量] [题]以下能对一维数组a进行正确初始化的语句是_____。 A)int a[l0]=(0,0,0,0,0); B)int a[l0]={}; C)int a={0};D)int a[10]={10*1}; [题]以下对二维数组a的正确说明是_____。

1 A)int a[3]; B)float a(3,4); C)double a[1][4]; D)float a(3)(4); [题]若有说明:int a[3][4];则对a数组元素的正确引用是_____。 A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1) [题]若有说明:int a[3][4];则对a数组元素的非法引用是_____。 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] [题]以下不能对二维数组a进行正确初始化的语句是_____。 A)int a[2][3]={0}; B)int a[3]={{1,2},{0}}; C)int a[2][3]={{l,2},{3,4},{5,6}}; D)int a[3]={1,2,3,4,5,6}; [题]若有说明:int a[3][4]={0};则下面正确的叙述是_____。 A)只有元素a[0][0]可得到初值0 B)此说明语句不正确 C)数组a中各元素都可得到初值,但其值不一定为0 D)数组a中每个元素均可得到初值0 [题]若有说明:int a[3][4];则数组a中各元素_____。 2

第六章数组

第6章数组 6.1 问题导引与分析 到目前为止,我们所接触的变量类型(除文件类型外)为简单数据类型,其特点是对单一的变量进行数据处理和操作。在解决实际问题时,常需要处理大量的数据,如对1000个学生的成绩排序、对一批数据进行各种处理等问题,如果用简单变量来存储这些数据,要用到大量的简单变量,无论从存储还是处理都很不现实。Pascal语言引入了数组类型,能方便地解决批量数据处理问题。 数组是程序设计中最常用的结构数据类型,用来描述由固定数目的同一类型的元素组成的数据结构。 从形式上看,Pascal语言数组元素书写格式为:变量名[下标1,下标2,下标3,……],数组的每个元素和下标相关联,根据下标指示数组的元素。 只有一个下标的变量集合称为一维数组。 如:a[1],a[2],a[3],a[4],a[5],……,俗称a数组。 使用数组的方便之处在于数组的下标可以用变量来表示,如上述的a数组元素可以写成a[i]形式,通过灵活控制下标变量i,达到对数组元素进行批量处理和操作的目的。 6.1.1 问题导引 问题6.1 选票统计(Votes) 【问题描述】 国际运动协会组织了一个评选N佳运动员的活动,评选方式很特殊,先由网民投票选举,各国的网民可以任选自己喜爱的运动员,然后从中选出得票高于100万张的运动员N个,对他们用1到N进行编号,重新投票,根据不同的得票值,颁发不同的奖项,现在组织者想知道重新投票后,这N个运动员的票数,请你帮他完成。 【输入格式】 第一行,一个数,表示N个运动员;(1≤N≤1000) 第二行开始为一组以空格隔开的选票,选票值为1到N间的数,以-1为数据结束标志。选票数量不超出长型范围。 【输出格式】 按编号顺序输出编号和票数。 【输入样例】 3 3 1 2 3 2 1 2 3 1 2 2 1 3 3 1 2 3 3 -1 【输出样例】 1 5 2 6 3 7

c语言数组例题

#include int prime(int c) { inta,b=1; for(a=2;a int *hs(int a[3][2]) {inti,j,s[3],*p=s; s[0]=a[0][0];s[1]=s[2]=1; for(i=0;i<3;i++) for(j=0;j<2;j++) {if(s[0]

return 0; } 3.源代码为: #include voidhanshu(char *s) { while(*s) { if(*s>='A'&&*s<='Z') *s+=32; else if(*s>='a'&&*s<='z') *s-=32; *s++; } } void main() { char s[]="shaHUAHDJhhduahNBUahujJAWDhuwh8u"; hanshu(s); printf("改写后的字符串为:\n"); puts(s); } 4.源代码为: #include int add(int n) { int s=0; if(n==0) return 0; if(n==1) s=1; else s=n+add(n-1); return s; } void main() { intk,i; printf("输入一个整数:\n"); scanf("%d",&i); k=add(i); printf("%d累加的结果为:%d\n",i,k); } 测试数据为:4 运行结果为:10

练习题-第六章_数组(有答案)

一、填空题 1.在C语言中,二维数组元素在内存中的存放顺序是。 2.定义了二维数组:int array[4][5],该数组所占的内存空间为______字节。 3.假设有整型数组array[100][100],其中第66行,第66列元素array[66][66]在数 组中排列的位置(位置从1开始算起)为6566 。 4.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[2][1]得到的初值是 ________。 5.下面的程序段的运行结果是____he_____。 char x[ ]=“the teacher”; int i =0; while(x[++i] != ’\0’) if(x[i-1] = = ‘t’) printf(“%c”,x[i]); 二、单项选择题 1.下面程序( B )(每行程序前面的数字表示行号)。 1 main( ) 2 { float a[10]={0.0}; 3 int i; 4 for(i=0;i<3;i++) scanf(“%d”,&a[i]); 5 for(i=1;i<10;i++) a[0]=a[0]+a[i]; 6 printf(“%f\n”,a[0]); 7 } A)没有错误B)第2行有错误 C)第4行有错误D)第6行有错误 2.下面程序中有错误的行是(D)(每行程序前面的数字表示行号)。 1main( ) 2{ 3int a[3]={1}; 4int i; 5scanf(“%d”,&a); 6for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7printf(“a[0]=%d\n”,a[0]); } A. 3 B. 6 C. 7 D. 5 3.以下不能对二维数组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};

c语言数组典型试题设计含答案

一.选择题(2*20) 【题1】在C 语言中,引用数组元素时,其数组下标的数据类型允许是。A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 【题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】若有说明:int a[10];则对a 数组元素的正确引用是。 A)a[10] B)a[3.5] C)a(5) D)a[10-10] 【题4】在C 语言中,一维数组的定义方式为:类型说明符数组名; A)[整型常量表达式] B)[整型表达式] C)[整型常量] 或[整型表达式] D)[常量] 【题5】以下能对一维数组a 进行正确初始化的语句是。 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 的正确说明是。 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 数组元素的正确引用是。 A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1) 【题8】若有说明:int a[3][4];则对a 数组元素的非法引用是。 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] 【题9】以下能对二维数组a 进行正确初始化的语句是。 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 进行正确初始化的语句是。 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};

相关文档
相关文档 最新文档