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

一、填空题
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<n;i++ )
for(j=0;j<n;j++)
scanf(“%d”,&x[i][j]);
for(i=0;i<n;i++)
for( j=i ;j<n;j++)
s*=x[i][j];
printf(“\n%ld\n”,s);
}
五、编程题:
1.利用顺序查找法从数组a的10个元素中对关键字m进行查找。

要求从键盘输入数组元
素以及要查找的数据值。

(顺序查找法的思路是:从第一个元素开始,从前向后依次与关键字比较,直到找到此元素或查找到数组尾部时结束。

若找到,则查找成功;若直至最后一个元素都不相等,则查找失败。


2.从键盘输入两个字符串a和b,要求不用库函数strcat把串b的前五个字符连接到串a
中;如果b的长度小于5,则把b的所有元素都连接到a中。

试编程。

合集下载

计算机基础与程序设计自考02275第六章数组课后题答案

计算机基础与程序设计自考02275第六章数组课后题答案

计算机基础与程序设计自考02275课后题答案第六章数组一、改错题正确答案:1、int a[5];2、赋值越界,正确应:ss[3]=5.2;3、定义时不能用变量4、在scanf函数中,用%s格式符时,输入项直接写数组名,无需用&,正确:scanf(“%s”,str);5、赋初值时,一维数组长度可省略,二维数组第一维长度可省略,第二维长度不能省略。

6、在scanf函数中,用%c格式符时,输入项不能直接写数组名,需要加上取地址符号&,正确:scanf(“%c”,&c[k]);二、简答题(1)定义了一个数据类型为整型的二维数组t(2)2行(3)5列(4)10个(5)t[1][0]、t[1][1]、t[1][2]、t[1][3]、t[1][4](6)t[0][2]、t[1][2](7)t[0][1]=0;(8)int t[2][5]={0};(9)for(i=0;i<2;i++)for(j=0;j<5;j++)t[i][j]=0;(10)scanf(“%d”,&t[0][0]);(11)he=t[0][3]+t[1][3];ave=he/2;三、填空题1、02、23、地址4、连续、行5、越界四、补充程序1、①N-1 ②N ③a[i]=a[j] ④a[j]=t2、①D ②A ③D ④D五、编写程序1、任意输入20个整数,计算(1)正数的个数和正数的和;(2)负数的个数和负数的和;(3)零的个数;main(){int a[20],i,m=0,n=0,p=0,max=0,min=0;for(i=0;i<20;i++)scanf("%d",&a[i]);for(i=0;i<20;i++)if(a[i]>0){ m=m+1;max=max+a[i];}else if(a[i]==0)n=n+1;else{ p=p+1; min=min+a[i];}printf("zhong:%d,he:%d,fu:%d,he:%d,ling:%d\n",m,max,p,min,n);}2、对一个任意的4行4列的二维整型数组,编辑实现(1)每一列的最大值;(2)每一行的最小值;(3)所有元素的最大值、最小值及其他们的行下标和列下标main(){int i,j,max,min,a[4][4],m=0,n=0,l=0,h=0;for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);max=a[0][0];min=a[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++){ if(a[i][j]>max){max=a[i][j];m=i;n=j;}if(a[i][j]<min){min=a[i][j];l=i;h=j;}}printf("max:%d,hang:%d,lie:%d\n",max,m,n);printf("min:%d,hang:%d,lie:%d\n",min,l,h);}3、把字符数组str2中的全部字符拷贝到字符数组str1中(不要使用strcpy函数)main(){char str1[10],str2[10]={"I am boy"};int i;for(i=0;i<10;i++)str1[i]=str2[i];printf("%s\n",str1);}。

第六章数组习题答案

第六章数组习题答案
int a,s=0;
for(a=0;ch[a]>=’0’&&ch[a]<=’9’;a++)
s=10*s+ch[a]-‘0’;
printf(“%d\n”,s);
}
10.以下程序的输出结果是。
#include <stdio.h>
main( )
{
char str[ ]={‘A’,’A’,’A’,’A’,’A’,’A’};
}
程序运行后的输出结果是(C)。
A)20 9 B) 9 9 C) 20 11 D) 11 11
9.有以下程序
#include <stdio.h>
#include <string.h>
main( )
{ char p[20]={‘a’,’b’,’c’,’d’},q[ ]=”abc”,r[ ]=”abcde”;
8.有以下程序
#include <stdio.h>
#include <string.h>
main( )
{ char p[20]={‘a’,’b’,’c’,’d’},q[ ]=”abc”,r[ ]=”ab Nhomakorabeade”;
strcpy(p+strlen(q),r);
strcat(p,q);
printf(“%d %d\n”,sizeof(p),strlen(p));
}
6.以下程序的输出结果是1234。
#include <stdio.h>
main( )
{
char str[ ]=””;
str[4]=’\0’;
printf(“%s\n”,str);

第六~八章 概念练习题-附参考答案

第六~八章 概念练习题-附参考答案
A)auto B)static C)extern D)register
11.若有函数定义:
int func()
{
static int m=0;
return m++;
}
以下程序段运行后屏幕输出为()。
int i;
for(i=1;i<=4;i++)
func();
printf("%d",func());
A.0 B.1C.4 D.5
B.函数的定义不可以嵌套,但函数的调用可以嵌套
C.函数的定义和函数的调用均不可以嵌套
D.函数的定义和函数的均可以嵌套
5.以下叙述中正确的是
A)构成C程序的基本单位是函数
B)可以在一个函数中定义另一个函数
C)main()函数必须放在其它函数之前
D)所有被调用的函数一定要在调用之前进行定义
6.用数组名作为函数调用时的实参时,传递给形参的是。
9.下列说法中正确的是:()
A.局部变量在一定范围内有效,且可与该范围外的变量同名。
B如果一个源文件中,全局变量与局部变量同名,则在局部变量范围内,局部变量不起作用。
C.局部变量缺省情况下都是静态变量。
D.函数体内的局部静态变量,在函数体外也有效。
10.未指定存储类别的变量,其隐含的存储类别为()。
main()
{ char s[]=“ABCD”, *P;
for(p=s+1; p<s+4; p++) printf (“%s\n”,p);}
该程序的输出结果是
A) ABCDB) AC) BD)BCD
BCDBCCD
CDCDD
DD

第六章作业及答案

第六章作业及答案

第六章作业一、选择题1.若不考虑结点的数据信息的组合情况,具有3个结点的树共有种()形态,而二叉树共有( )种形态。

A.2 B。

3C。

4 D。

52.对任何一棵二叉树,若n0,n1,n2分别是度为0,1,2的结点的个数,则n0= ()A.n1+1B.n1+n2C.n2+1 D。

2n1+13。

已知某非空二叉树采用顺序存储结构,树中结点的数据信息依次存放在一个一维数组中,即ABC□DFE□□G□□H□□,该二叉树的中序遍历序列为()A。

G,D,B,A,F,H,C,E B。

G,B,D,A,F,H,C,EC。

B,D,G,A,F,H,C,E D.B,G,D,A,F,H,C,E4、具有65个结点的完全二叉树的高度为()。

(根的层次号为1)A.8 B.7 C.6 D.55、在有N个叶子结点的哈夫曼树中,其结点总数为()。

A 不确定B 2NC 2N+1D 2N—16、以二叉链表作为二叉树存储结构,在有N个结点的二叉链表中,值为非空的链域的个数为().A N-1B 2N-1C N+1D 2N+17、树的后根遍历序列等同于该树对应的二叉树的( )。

A. 先序序列B。

中序序列 C. 后序序列8、已知一棵完全二叉树的第6层(设根为第1层)有8个叶结点,则完全二叉树的结点个数最多是()A.39 B.52 C.111 D。

1199、在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶节点个数是()A.41 B.82 C。

113 D.122二、填空题。

1、对于一个具有N个结点的二叉树,当它为一颗_____ 二叉树时,具有最小高度。

2、对于一颗具有N个结点的二叉树,当进行链接存储时,其二叉链表中的指针域的总数为_____ 个,其中_____个用于链接孩子结点,_____ 个空闲着。

3、一颗深度为K的满二叉树的结点总数为_____ ,一颗深度为K的完全二叉树的结点总数的最小值为_____ ,最大值为_____ 。

C语言程序设计第六章数组习题及答案

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的初始化,错误的是_。

第06章 数组补充练习题答案

第06章 数组补充练习题答案
arg1=sun1/4.0;
arg2=sun2/4.0;
cout<<'\t'<<sun0<<'\t'<<setw(8)<<sun1<<'\t'<<setw(6)<<sun2<<'\n';
cout<<'\t'<<arg0<<'\t'<<setw(8)<<arg1<<'\t'<<setw(6)<<arg2<<'\n';
cout<<y[i]<<'\t';
cout<<endl;
reverse(y,sizeof(y)/sizeof(float));
cout<<"输出逆序实型数组:\n";
for( i=0;i<sizeof(y)/sizeof(float);i++)
cout<<y[i]<<'\t';
cout<<endl;
void rotate(Matrix);
void main()
{
Matrix m={11,22,33,44,55,66,77,88,99};
print(m);
rotate(m);
print(m);
}
void print(Matrix a)
for(j=i;y[j];j++)y[j]=y[j+1];

习题答案(第六章)

1、R n 中分量满足下列条件的全体向量1(,,)n x x 的集合,是否构成R n的子空间?①10n x x ++=;②120n x x x ⋅⋅⋅=;③2211n x x ++=。

解:①是,设(){}111,,|0n n V x x x x =++=,显然V 1≠∅,1,,,a b F V ξη∀∈∀∈,设1212(,,),(,,)x x y y ξη==,则()()()1111,,,,,,n n n n a b a x x b y y ax by ax by ξη+=+=++,而1111()()()()000n n n n ax by ax by a x x b y y a b ++++=+++++=+=所以1a b V ξη+∈,所以V 1是R n 的子空间; ②不是,取(1,0,,0),(0,1,,1)αβ==,则(){}11,,,|0n n V x x x x αβ∈=⋅⋅=,但(1,1,,1)V αβ+=∉,所以V 不是R n 的子空间;③不是,取(1,0,,0),(0,1,0,,0)αβ==,则(){}2211,,,|1n n V x x x x αβ∈=++=,但(1,1,0,,0)V αβ+=∉,所以V 不是R n 的子空间。

2、子集{}1|,,V X AX XB A B n ==为已知的阶矩阵是否是()n M F 的子集?解:是()n M F 的子集;证:显然1V ≠∅,1,,,X Y V a b F ∀∈∈,有()()A aX bY aAX bAY aXB bYB aX bY B +=+=+=+,所以1aX bY V +∈,所以1V 是()n M F 的子集。

3、设12(1,0,1,0),(1,1,2,0)αα==-,求含12,αα的R 4的一组基。

解:因为101010101010112001100010⎛⎫⎛⎫⎛⎫→→⎪ ⎪ ⎪---⎝⎭⎝⎭⎝⎭,取34(0,0,1,0),(0,0,0,1)αα==,所以{}1234,,,αααα为R 4的一组基。

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

一、填空题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. 3B. 6C. 7D. 53.以下不能对二维数组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 )。

c语言练习题6(数组与链表,有答案)

1、(1)数据结构中,与所使用的计算机无关的是数据的_C_______。

A)存储结构B)物理结构C)逻辑结构D)物理和存储结构评析:数据结构概念一般包括3个方面的内容,数据的逻辑结构、存储结构及数据上的运算集合。

数据的逻辑结构只抽象的反映数据元素之间的逻辑关系,而不管它在计算机中的存储表示形式。

2、栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是____D____。

A)ABCED B)DBCEA C)CDABE D)DCBEA评析:栈操作原则上“后进先出”,栈底至栈顶依次存放元素A、B、c、D,则表明这4个元素中D是最后进栈,B、c处于中间,A最早进栈。

所以出栈时一定是先出D,再出c,最后出A。

3、线性表的顺序存储结构和线性表的链式存储结构分别是____B____。

A)顺序存取的存储结构、随机存取的存储结构B)随机存取的存储结构、顺序存取的存储结构C)随机存取的存储结构、随机存取的存储结构D)任意存取的存储结构、任意存取的存储结构评析:顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)。

LOC(a1)+(i-1)L计算得到,从而实现了随机存取。

对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。

4、在单链表中,增加头结点的目的是____A__。

A)方便运算的实现B)使单链表至少有一个结点C)标识表结点中首结点的位置D)说明单链表是线性表的链式存储实现评析:头结点不仅标识了表中首结点的位置,而且根据单链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点目的是为了便于运算的实现。

5、数据处理的最小单位是___C_____。

A)数据B)数据元素C)数据项D)数据结构评析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。

C++中国大学MOOC第6章作业数组答案

中国大学慕课spoc第六章C++数组答案1最大值(100分)问题描述先输入一个正整数n(1到20之间),再输入n个整数,计算其中的最大值和相应下标。

输入描述先输入要处理的整数的个数n(1<=n<=20),再输入n个整数,并用空格分开。

输出描述依次输出n个整数中的最大值和相应下标(若多个整数与最大值相同,则从小到大输出相应下标),之间用空格分隔。

输入样例154 6 7 2 5输出样例17 2输入样例254 6 7 2 7输出样例27 2 4#include <bits/stdc++.h>using namespace std;int main(){int n,i,j,a[20],max;cin>>n;for(i=0;i<n;i++){cin>>a[i];}max=a[0];for(i=0;i<n;i++){if(max<a[i])max=a[i];}cout<<max;for(i=0;i<n;i++){if(a[i]==max){cout<<" "<<i;}}}2峰值个数(100分)问题描述先输入一个正整数n(3到20之间),再输入n个整数,计算其中的峰值个数。

峰值是满足大于或小于左右两个元素的元素,例如12,45,32,0,14,25,62,48,51序列中,峰值有45,0,62,48,峰值个数为4。

输入描述先输入要处理的整数的个数n(3<=n<=20),再输入n个整数,并用空格分开。

输出描述一个整数,表示n个整数中有多少个峰值。

输入样例54 6 7 2 5输出样例2#include <bits/stdc++.h>using namespace std;int main(){int n,i,a[20],j=0;cin>>n;for(i=0;i<n;i++){cin>>a[i];}for(i=1;i<n-1;i++){if((a[i]>a[i-1]&&a[i]>a[i+1])||(a[i]<a[i-1]&&a[i]<a[i+1]))j++;}cout<<j;}3互为相反数(100分)问题描述先输入一个正整数n(2到20之间),再输入n个数(可重复,可为浮点数),计算其中有多少对互为相反数(仅有符号不同的两数互为相反数)。

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