第六章数组练习题

更新时间:2024-01-23 13:51:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第六章 数组练习题

一、选择题

1、 在C语言中,引用数组元素时,其数组下标的数据类型允许是( ) A. 整型常量 B. 整型表达式

C. 整型常量或整形表达式 D. 任何类型的表达式 2、 若有说明:int a[10];则对数组元素的正确引用是( ) A. a[10] B. a[3.5] C. a(5) D. a[10-10] 3、 以下对一维整型数组a的定义正确是() A. int a() B. int n,a[10]; C. int n; D. int n;

4、 以下能对一维数组a进行正确初始化的语句是( ) A. int a[10]=(0,0,0,0,0) B. int a[10]={}

C. int a[ ]={0}; D. int a[10]={10*1}; 5、 以下叙述中错误的是 ( C )

A. 对于double类型数组,不可以直接用数组名对数组进行整体输入或输出 B. 数组名代表的是数组所占存储区的首地址,其值不可改变

C. 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出

“下标越界”的出错信息

D. 以通过赋初值的方式确定数组元素的个数

6、假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是( D )。

A. 3 B. 6 C. 10 D. 20 7、有如下程序

main()

{ int n[5]={0,0,0},i,k=2; for(i=0;i

该程序的输出结果是( D )。

A. 不确定的值 B. 2 C. 1 D. 0 8、以下程序的输出结果是( B )

main()

{ int i, a[10];

for(i=9;i>=0;i--) a[i]=10-i;

printf(“%d%d%d”,a[3],a[6],a[9]); }

A. 258 B. 761 C. 852 D. 369

9、以下对二维数组a的正确说明是( ) A. int a[3][ ]; B. float a(3,4) C. double a[1][4]; D. float a(3)(4) 10、以下不能对二维数组进行正确初始化的是( )

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[2][3];,以下选项中对a数组元素正确引用的是(D)

A. a[2][!1] B. a[2][3] C. a[0][3] D. a[1>2][ !1] 12、有以下程序

main()

{int a[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,}},i,k,t; for(i=0;i<3;i++)

for(k=i+i;k<4;k++) if(a[i][i]

程序运行后的输出结果是(B)

A.6,2,1,1, B. 6,4,3,2, C. 1,1,2,6, D. 2,3,4,6, 13、以下程序的输出结果是(B)

main()

{ char cf[3][5]={\printf(\}

A. \ B. \ C. \ D. \14、设有数组定义:char array[]=“china”,则数组array所占的空间为( ) A. 4个字节 B. 5个字节 C. 6个字节 D. 7个字节

15、当执行下面的程序时,如果输入ABC,则输出结果是( )

#include #include void main()

{char ss[10]=“1,2,3,4,5”; gets (ss);

stract(ss,”6789”);

printf(“%s\\n”,ss);}

16、为了判断两个字符串str1和str2是否相等,应当使用( ) A. if(str1==str2) B. if(str1=str2)

C. if(strcmp(str1,str2)) D. if(strcmp(str1,str2)==0) 17、以下程序运行后的输出结果是( ) main()

{char str[][9]={“hello”, “student”, “computer” }; printf(“%s\\n”,str[1]);}

A. h B. hello C. student D. computer 18、以下程序的输出结果是( )

void main() {char k,

w[][10]={“ABCD”,“EFGH”,“IJKL”,“MNOP”}; for(k=1;k<3;k++) printf(“%s\\n”,w[k]); }

A. ABCD B. ABCD C. EFG D. EFGH

19、以下程序的输出结果是( )

void main( ) {char arr[2][4];

strcpy(arr[0],“you”); strcpy(arr[1],“me”); arr[0][3]=?&?; printf(“%s\\n”,arr);

}

A.you&me B.you C.me D.err 20、以下对一维整型数组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];

21、若有说明:int a[3][4]={0};则下面正确的叙述是 。

A. 只有元素a[0][0]可得到初值0 B. 此说明语句不正确

C. 数组a中各元素都可得到初值,但其值不一定为0 D. 数组a中每个元素均可得到初值0

22、若有说明:int a[][4]={0,0};则下面不正确的叙述是 。

A. 数组a的每个元素都可得到初值0 B. 二维数组a的第一维大小为1

C. 因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的

行数为1

D. 只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0 23、下面是有关C语言字符数组的描述,其中错误的是(D) A.不可以用赋值语句给字符数组名赋字符串 B.可以用输入语句把字符串整体输入给字符数组 C.字符数组中的内容不一定是字符串 D.字符数组只能存放字符串

24、下面是对s的初始化,其中不正确的是 。

A. char s[5]={“abc”}; B. char s[5]={?a?,?b?,?c?}; C. char s[5]=” ”; D. char s[5]=”abcdef”; 25、有两个字符数组a,b,则以下正确的输入语句是 。

A. gets(a,b); B. scanf(“%s%s”,a,b); C. scanf(“%s%s”,&a,&b); D. gets(“a”),gets(“b”); 26、对两个数组a和b进行如下初始化:

char a[] = “ABCDEF”;

char b[] = {?A?,?B?,?C?,?D?,?E?,?F?}; 则以下叙述正确的是:

A. a与b完全相同 B. a与b长度相同

C. a与b中都存放字符串 D. a数组比b数组长度长

27、当运行以下程序时输入三行,每行都是在第一列上开始, 代表Entre

键。

#include #define N 6 main()

{ char c[N]; int i = 0;

for(i = 0; i < N; i++) c[i] = getchar(); for(i = 0; i < N; i++) putchar(c[i]); }

a b cdef

则程序的输出结果是:

A. abcdef B. a C. a D. a 28、以下程序段的输出结果是( )

pritnf(“%d\\n”, strlen(“ATS\\n012\\1\\\\”)); A. 11 B. 10 C. 9 D. 8 29、有以下程序 main() {

char a[ ]={?a?,?b?,?c?,?d?,?e?,?f?,?g?,?h?,?\\0?}; int i,j;

i=sizeof(a); j=strlen(a);  printf(“%d,%d\\b”i,j); }

程序运行后的输出结果是( )

A. 9,9 B. 8,9 C. 1,8 D. 9,8

30、已有定义:char a[]=\,以下叙述中正确的是( ) A. 数组a和b的长度相同 B. a数组长度小于b数组长度 C. a数组长度大于b数组长度 D. 上述说法都不对

二、填空题

1、 下面程序的功能是把以下给定的字符读入数组str1中,并输出行列号之和是 2的数组元素。 void main()

{char str[4][3]={?A?,?b?,?c?,?d?,?E?,?f?,?G?,?h?,?I?,?j?, ?K?,?i?}; int x,y,z;

for(x=0;x<4;x++)

for(y=0;_______ y++) {z=x+y;

if(_________) printf(“%c\\n”,str[x][y]); }

2、 若有定义:double x[3][5];则x数组中行下标的下限为_________,列下标的

上限为_________.

3、 若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]

得到的初值是_________,a[2][1]得到的初值为_________。 4、 下面程序以每行4个数据的形式输出a数组,请填空。

#define N 20 main()

{int a[N],i;

for(i=0;i

{if (_____________) _____________ printf(\ }

printf(\}

5、 下面程序可求出矩阵a的主对角线上的元素之和,请填空。

main() {

int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++)

if(_____) sum=sum+_______; printf(\}

6、 以下程序的输出结果是 。

main()

{ int arr[10], i, k = 0; for(i = 0; i < 10; i++) arr[i] = i;

for(i = 0; i < 4; i++) k += arr[i] + i; printf(“%d\\n”, k); }

7、 给出以下程序,其功能是将a矩阵和b矩阵合并成c矩阵,最后将c矩阵按

格式输出。请填空。

3 1 7 5 2 3 1 4 5 4 8 9

a = b= c =

1 2 4 3 5 1 3 6 6 3 7 9

#include main()

{ int a[3][4] = {{3, 1, 7, 5},{1, 2, 4, 3},{6, 3, 0, 2}}; int b[3][4] = {{2, 3, 1, 4},{5, 1, 3, 6},{1, 5, 2, 3}};

int i, j, c[3][4];

for(i = 0; i < 3; i++) for(j = 0; j < 4; j++) c[i][j] = ; for(i = 0; i < 3; i++) { for(j = 0; j < 4; j++) pritnf(“]”, c[i][j]); ; } }

8、 在C语言中,二维数组的元素在内存中的存放顺序是 。 9、下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请填空。

#include #include main()

{ char a[]=\ int i, j, k; k=strlen(a);

for(i=0; i<=k-2; i+=2)

for(j=i+2; j<=k; j+=2 ) if

{ t=a[i]; a[i]=a[j]; a[j]=t; } puts(a); printf(\ }

10、函数调用:strcat(strcpy(str1,str2),str3)的功能是 三、程序阅读题

1、写出下面程序的运行结果。 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(“-”,a[i][j]) ; printf(“\\n”); } }

2、写出下面程序的运行结果。 main ( ) { int i=0;

char a[ ]=”abm”, b[ ]=”aqid”, c[10];

while (a[i]!=?\\0? && b[i]!=?\\0?) { if (a[i]>=b[i]) c[i]=a[i]-32 ; else c[i]=b[i]-32 ; i++; }

c[i]=?\\0?; puts(c); }

3、当运行下面程序时,从键盘上输入AabD↙,则写出下面程序的运行结果。 main ( ) { char s[80]; int i=0; gets(s);

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

if (s[i]<=?z? && s[i]>=?a?) s[i]=?z?+?a?-s[i] ; i++; }

puts(s); }

4、写出下面程序的运行结果。 main ( ) { int i,c;

char s[2][5]={“8980”,”9198”}; for (i=3; i>=0 ; i--) {

c=s[0][i]+s[1][i]-2*?0?; s[0][j] = c % 10 + ?\\0? ; }

for (i=0; i<=1; i++) puts(s[i]); } 5、当运行下面程序时,从键盘上输入7 4 8 9 1 5↙,则写出下面程序的运行结果。 main ( )

{ int a[6],i,j,k,m; for (i=0 ; i<6 ; i++) scanf (“%d”,&a[i]); for (i=5 ; i>=0; i--) { k=a[5];

for (j=4; j>=0; j--) a[j+1]=a[j] ; a[0]=k;

for (m=0 ; m<6 ; m++) printf(“%d ”,a[m]); printf(“\\n”); }

}

6、以下程序运行后的输出结果是 _______ 。  main()

 { int a[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};  int i=0,j=0,s=0;  while(i++<4)  {

 if(i==2||i==4) continue;  j=0;

 do{ s+= a[j]; j++; } while(j<4);  }

 printf(\\\n\ }

7、有以下程序 ,程序运行后的输出结果是 main()

{ int a[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,}},i,j,k,t; for(i=0;i<4;i++) for(j=0;j<3;j++) for(k=j+1;k<4;k++)

if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/ for(i=0;i<4;i++)printf(“%d,”,a[i][j]); }

8、有以下程序运行后的输出结果是 #include main()

{int b [3][3]={O,1,2,0,1,2,O,1,2},i,j,t=1; for(i=0;i<3;i++)

for(j=i;j<=1;j++) t+=b[i][b[j][i]]; printf(\ }

9、下面程序运行后的输出结果是

main()

{ char s[]=\int v1=0,v2=0,v3=0,v4=0,k; for(k=0;s[k];k++) switch(s[k]) { default:v4++; case '1': v1++; case '3': v3++; case '2': v2++; }

printf(\

10、当运行以下程序时,输入abcd,程序的输出结果是: 。 main()

{char str[40];

int i;

scanf(“%s”,str ); i=strlen(str); while(i>0)

{ str[2*i]=str[i]; str[2*i-1]='*';i--;} printf(“%s\\n”,str); } 四、编程题

1、用选择法对10个整数排序。

2、有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。

3、有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母,小写字母,中文字母,中文字符,数字,空格及其他字符的个数。(提示:中文字符是两个字节,且数值均大于128的字符)。

4、对三人的四门课程分别按人和科目求平均成绩,并输出包括平均成绩的二维成绩表。

5、提高题:将一个数组中的值按逆序重新存放。例如:原来顺序为8,6,5,4,1,要求改为1,4,5,6,8。

6、提高题:打印出杨辉三角形(要求打印出10行,课本P141页7.6) 7、提高题:编写程序:

(1)求一个字符串S1的长度;

(2)将一个字符串S1的内容复制给另一个字符串S2;

(3)将两个字符串S1和S2连接起来,结果保存在S1字符串中; (4)搜索一个字符在字符串中的位置(例如:?I?在”CHINA”中的位置为3)。如果没有搜索到,则位置为-1。

(5)比较两个字符串S1和S2,如果S1>S2,输出一个正数;如果S1=S2,输出0;如果S1

以上程序均使用gets或puts函数输入,输出字符串。不能使用string.h中的系统函数。

8、定义一个可以存放10个元素的int数组a,输入10个数,并逆序输出。 9、用数组来保存Fibonacci数列前20项数值,每5个数据为一行进行输出。 10、统计具有10个元素的自然数数组num中的奇数个数。

11、下面程序的功能是从键盘输入一行字符,统计其中有多少单词。假设单词之

间以空格分开。

12、编程实现从键盘任意输入20个整数,统计非负数个数,并计算非负数之和。 13、编程将下列矩阵中的元素向右移动一列,最右一列移至第一列。

1 4 6 8 10 12

14、不用函数strcat(),编程实现字符串连接函数strcat()的功能,将字符串srcStr

连接到字符串dstStr的尾部。

本文来源:https://www.bwwdw.com/article/pf6o.html

Top