第7章 数组
- 格式:docx
- 大小:21.05 KB
- 文档页数:3
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};A.1DB.3C.9D.A. B.\"c:\\abc.dat\" C."c:\abc.dat" D."c:\\abc.dat"A. B.C. D.A. B.C. D.A. a[2][4]B. a[lC. a[l+l][0]D. a(2)(1) 确定A. a[0][2*1]B. a[l][3]C. a[4-2][0]D. a[0][4]A. 2B. 3C. 4D.A. 3 5 7B. 3 6 9C. 1 5 9 D 1 4 7A. j*m+iB. i*m+jC. i*m+j-1D. i*m+j+1 确定A. B.C. D.A.1DB.3C.9D.A. B.\"c:\\abc.dat\" C."c:\abc.dat" D."c:\\abc.dat"A. if(s1>s2)B. if(strcmp(s1,s2))C. if(strcmp(s2,s1)>O)D. if(strcmp(s1A. B.C. D.A. int a[3][ ];B. float a(3C. double a[1][4];D. float a(3)(4);A. a[2][4]B. a[lC. a[l+l][0]D. a(2)(1)A. 2B. 3C. 4D.A. 3 5 7B. 3 6 9C. 1 5 9 D 1 4 7A BC DA BC DA BC DA BC DA BD C整体赋值A BC DA BC DA BC DA BC DA BC DA BCD 值A B C DA B C DA B C DA B C DA) abcdefA) abcdA) abcdA) abcdef确定[C] 教师批改:36、给出以下定义:char x[ ]="abcdefg";char y[ ]={…a…,…b…,…c…,…d…,…e…,…f…,…g…};则正确的叙述为A)数组X和数组Y等价B)数组x和数组Y的长度相同C)数组X的长度大于数组Y的长度D)数组X的长度小于数组Y的长度确定[C] 教师批改:37、设有static char str[ ]="Beijing";则执行printf("%d\n", strlen(strcpy(str,"China")));后的输出结果为A) 5 B) 7C) 12 D) 14确定[A] 教师批改:38、请选出以下程序段的输出结果#include<stdio.h>main(){ char sl[10], s2[10], s3[10], s4[10];scanf("%s%s",s1,s2); gets(s3); gets(s4);puts(s1); puts(s2); puts(s3); puts(s4);}输入数据如下:(此处<CR>代表回车符)aaaa bbbb<CR>A bbbbB bbbbC) aaaa bbbbD ccccA BC DA不可以直接用数组名对数组进行整体输入或输出BC数组元素的下标超出所定义的下标范围时,系统将给出DA BC DA B C DA B C DA B C DA BC DA B C D。
第7章数组1.下列数组声明中,正确的是()。
(a)int a[5]={0}; (b) int a[ ]={0 1 2};(c) int a[5]=0; (d) int a[ ];2.下列数组声明中,正确的是()。
(a)int a[10];(b)int n = 10, a[n];(c)int N =10; int a[N];(d)int n; scanf(" %d ", &n); int a[n];3.已知int a[10];则对a数组元素引用不正确的是()。
(a)a[10] (b) a[3+5] (c) a[10-10](d) a[5]4.以下数组定义中,正确的是()。
(a)int a[2][3] = {1, 2, 3, 4, 5, 6, 7};(b)int a[ ][ ] = {{1, 2, 3},{4, 5, 6},{7, 8,9}};(c)int a[2][ ] = {1, 2, 3, 4, 5, 6};(d)int a[ ][4] = {6};5.若有定义: int a[3] = {0, 1, 2}; 则a[1]的值为()。
(a)0 (b) 1 (c) 2 (d)36.若有定义:inta[3][4]={{1,2},{0},{1,2,3}};则a[1][1]的值为()。
(a)0 (b) {1,2} (c) 1 (d)37.有如下定义int a[ ][3] = {1,2,3,4,5,6,7,8};则数组a 的行数是()。
(a) 2 (b) 3 (c) 4 (d) 无法确定的8.getchar( )函数的功能是从终端输入()。
(a)一个整型变量值(b) 一个实型变量值(c)多个字符(d) 一个字符9.设已定义chars[ ]="\"Name\\Address\023\n";,则字符串所占的字节数是()。
(a)19 (b) 15 (c) 18(d)1410.以下程序段运行后屏幕输出为()。
第七章数组数组是相同数据类型数据的集合。
通过数组名和下标可以访问数组中指定的元素。
7.1 一维数组一维数组只有一个下标,它可用于表示一个线性的数据队列。
在程序设计中要先声明数组,对它进行初始化,然后才能使用数组。
7.1.1 一维数组的声明一维数组的声明要解决三个问题。
第一、确定数组的数据类型。
第二、给数组定义一个名字,以便在程序中使用。
第三、指明数组的大小,也就是数组中元素的个数。
声明一维数组的一般形式如下:数据类型数组名[常量表达式]={初值表};7.1.2 一维数组的使用访问一维数组元素的一般形式是:数组名[下标表达式]下标表达式是一个整型表达式。
它是一个由整型常量、整型变量以及运算符组成的式子,也可以是返回值为整型值的函数调用。
C++规定,数组的下标从0开始,因此对于大小为N的一维数组,其下标的取值范围是0到N-1,其中0称为数组的下界,N-1称为数组的上界。
下标表达式的值应该在下标的取值范围之内,否则会产生不可预计的问题。
7.1.3一维数组的初始化通过在初值表中给出初值可以对数组元素进行初始化。
初值用一对花括号界定,初值之间用逗号进行分隔。
例7-4 int y[5]={1,2,3,4,5};1,2,3,4,5为初值表,该语句把y[0]、y[1]、y[2]、y[3]、y[4] 分别初始化为1、2、3、4、5。
通过初值表中初值的个数决定数组的大小,省略常量表达式。
例7-5 double d[]={1.5,2.3,5.6};该声明语句省略了常量表达式,数组的长度由初值表中初值的个数决定。
它说明了有三个元素的双精度数组d。
并且d[0]=1.5, d[1]=2.3, d[2]=5.6。
7.1.4 数组的运算以及数组作为函数参数1 数组的运算数组的运算最终都要归结到对数组元素的操作。
因此,数组的运算与其元素的数据类型以及系统或程序对该数据类型提供何种操作有关。
对于int、float、以及double类型的数组,赋值运算、各种算术运算、++、--等都是允许的,原因是C++提供的这些操作的操作语义支持这些数据类型的运算。
第7章数组
一、选择题
1.以下对一维数组a的正确说明是:( )。
A) char a(10);B) int a[];
C) int k=5,a[k];D) char a[3]={‘a’,‘b’,‘c’};
2.以下能对一维数组a进行初始化的语句是: ( )。
A) int a[5]=(0,1,2,3,4,) B) int a(5)={ }
C) int a[3]={0,1,2} D) int a{5}={10*1}
3.在C语言中对一维整型数组的正确定义为 ( )。
A) int a(10); B) int n=10,a[n];
C) int n;a[n]; D) #define N 10
int a[N];
4、已知:int a[10]; 则对a数组元素的正确引用是()。
A) a[10] B) a[3.5] C) a(5) D) a[0]
5. 执行下面的程序段后,变量k中的值为( )。
int k=3, s[2];
s[0]=k; k=s[0]*10;
A) 不定值 B) 33 C) 30 D) 10
6.下述对C语言中字符数组的描述错误的是 ( )。
A)字符数组可以存放字符串
B)字符数组中的字符串可以整体输入和输出
C)可在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D)可在对字符数组定义时通过赋值运算符“=”对字符数组整体初始化
7.若有以下数组说明,则数值最大的和最小的元素下标分别是 ( )。
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
A)1,12 B)0,11 C)1,11 D)0,12
8.下面初始化与此初始化charc[ ]=“I am happy”;等价的是 ( )。
A) char c[ ]={‘I’,’’,’a’,’m’,’’,’h’,’a’,’p’,’p’,’y’,’\0’};
B) char c[ ]={‘I’,’am’,’happy’};
C) char c[ ]={‘I’, ’’,’a’,’m’,’’,’h’,’a’,’p’,’p’,’y’};
D)char c[ ]={‘I’,’am’,’happy’,’\0’};
9. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是
( )。
A) 3 B) 6 C) 10 D) 20
10.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为: ( )
A) 2 B) 3 C) 4 D)无确定值
11.以下定义语句中,错误的是 ( )
A) int a[]={1,2}; B) char *a;
C) char s[10]=“test”; D) int n=5,a[n];
12.下面程序段的输出结果是: ( )
int i;
int x[3][3]={1,2,3,4,5,6,7,8,9};
for (i=0;i<3;i++)
printf("%2d ",x[i][2-i]);
A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 9
13.对二维数组的正确定义是()
A) int a[ ] [ ]={1,2,3,4,5,6}; B)int a[2] [ ]={1,2,3,4,5,6};
C)int a[ ] [3]={1,2,3,4,5,6}; D)int a[2,3]={1,2,3,4,5,6};
14.已知int a[3][4];则对数组元素引用正确的是 ( )
A)a[2][4] B)a[1,3] C)a[2][0] D)a(2)(1)
15. 合法的数组定义是 ( )
A)int a[]={“string”}; B) int a[5]={0,1,2,3,4,5};
C)char a[]= “string”; D) char a[5]={0,1,2,3,4,5};
二、编程题
1.输入9个已由小到大排列的数据,要求输入一个新数据,将此数按照原来的规律插入到数
组中。
2.输入10个数据存入数组中,要求将这些数据逆序重新存放,并输出。
3.编写程序实现两个字符串:str1和str2的比较,如果str1>str2,输出+1,如果str1<str2,
输出-1,如果str1=str2,输出0。
(不使用strcmp函数)
4.输入20个数据,求平均值,并将其按相反的顺序输出。
答案
一、选择题
DCDDC BCADB DCCCC
二、编程题
1. #include<stdio.h>
main( )
{ int a[10],i,x;
printf("please input nine numbers:\n");
for(i=0;i<9;i++)
scanf("%d",&a[i]);
printf("please input a new number:\n");
scanf("%d",&x);
for(i=8;i>=0;i--)
{if(x>a[i]) {a[i+1]=x;break;}
else a[i+1]=a[i];}
if(i==-1) a[0]=x;
for(i=0;i<10;i++)
printf("%5d",a[i]);
}
2. #include<stdio.h>
main( )
{ int a[10],i,t;
printf("please input ten numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<5;i++)
{ t=a[i];a[i]=a[9-i];a[9-i]=t;}
for(i=0;i<10;i++)
printf("%6d",a[i]);
}
3. #include <stdio.h>
main( )
{ char str1[81],str2[81];
int i,t=0;
gets(str1);
gets(str2);
for(i=0;str1[i]!='\0'&& str2[i]!='\0'; i++)
{ if(str1[i]<str2[i]) {t=-1;break;}
else if(str1[i]>str2[i]) {t=1;break;}
}
if(t==-1) printf("%d\t%s<%s\n",t,str1,str2);
else if(t==1) printf("%d\t%s>%s\n",t,str1,str2);
else printf("%d\t%s=%s\n",t,str1,str2);
}
4. #include <stdio.h>
main( )
{int i,a[20],s=0;
printf("please input 20 numbers:\n");
for(i=0;i<20;i++)
{scanf("%d",&a[i]);s=s+a[i];}
printf("average=%.2f\n",s/20.0);
for(i=19;i>=0;i--)
printf("%5d",a[i]);
printf("\n");
}。