C语言数组试题 下载本文

}

(4)有以下程序, 执行后输出结果是( ) main()

{ int x[8]={8,7,6,5,0},*s; s=x+3;

printf(\}

A. 随机值 B. 0 C. 5 D. 6

(5)若有定义:int a[][3]={1,2,3,4,5,6,7,8}; ,则a数组的行数为( )。

A.3 B.2 C.无确定值 D.1 (6)下列描述中不正确的是 ( )。

A. 字符型数组中可以存放字符串 B. 可以对字符型串进行整体输入、输出

C. 可以对整型数组进行整体输入、输出

D. 不能在赋值语句中通过赋值运算符\对字符型数组进行整体赋值 (7)运行下列程序的输出结果是( )。

main()

{ int a[]={1,2,3,4,5},i,*p=a+2; printf(\}

A. 出错,因下标不能为负值 B. 2 C. 1 D. 3 (8)以下printf语句的输出结果是( )。 printf(\

A. 7 B. 6 C. 存在语法错误 D. 不定值

(9)若有语句:char s1[10], s2[10]=\,则能将字符串books赋给数组s1的语句是( )。

A. s1=\ B. strcpy(s1, s2); C. s1=s2; D. strcpy(s2, s1); (10)以下语句或语句组中,能正确进行字符串赋值的是( )。

A. char *sp; *sp=\ B. char s[10]; s=\C. char s[10]; *s=\ D. char *sp=\2. 程序分析题(阅读程序,写出运行结果) (1) main()

{ int x[6],a=0,b,c=14; do

{ x[a]=c%2;a++;c=c/2;}while(c>=1); for(b=a-1;b>=0;b--) printf(\ printf(\} (2) main()

{ int i,n[6]={0};

70

for(i=1;i<=4;i++) { n[i]=n[i-1]*2+1; printf(\ } }

(3)

#include

#include main()

{ char c='a',t[]=\ int n,k,j; n=strlen(t); for(k=0;k

if(t[k]==c) {j=k;break;} else j=-1; printf(\} (4)

#include

main()

{ char str1[20]=\ int i, k, num;

i=strlen(str1); k=strlen(str2); num=i

printf(\} (5)

#include main()

{ static int a[]={1,3,5,7}; int *p[3]={a+2,a+1,a}; int **q=p;

printf(\}

3. 程序填空题

(1)下面程序的功能是将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请填空。

#include #include main()

{ char a[]=\ int i,j,k; k=strlen(a); for(i=0;i<=k-2;i+=2)

71

for(j=i+2;j

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

(2)下列程序的功能是在字符串s中找出与字符串t相同的子串的个数。请填空。 #include main()

{ char s[]=\ n=0;q=s; while(*q) { p=q;r=t; while(*r)

if( ③ ) { r++; p++;} else break;

if( ④ ) n++; q++; }

printf(\} (3)下面程序的功能是把给定的字符按其矩阵格式读入数组str中,并输出行号与列号之和为3的数组元素。请填空。

main( )

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

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

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

if( ⑥ )

printf(\ } } (4)下面程序的功能是输入一个3×3的实数矩阵,求两条对角线元素中各自的最大值。请填空。

main()

{ float s[3][3],max1,max2,x; int i,j;

for(i=0;i<3;i++) for(j=0;j<3;j++)

{ scanf(\ max1= ⑦ ; for(i=1;i<3;i++)

if(max1

72

max2= ⑧ ;

if(max2

main()

{ long int a[40]={1,1}; int i;

for(i=2;i<40;i++)

a[i]= ⑨ ; for(i=0;i<40;i++)

{ if( ⑩ ) printf(\ printf(\ } }

4. 程序设计题

(1)给定一维整型数组,输入数据并求第一个值为奇数元素之前的元素和。

(2)给定一维整型数组,输入数据并对前一半元素升序排序,对后一半元素降序排序。 (3)输入字符串并统计各数字字符出现的次数。

(4)给定N×N矩阵,输入矩阵元素并互换主次对角线元素值。

(5)给定二维数组a[M][N],输入数据并将元素按照行序存入到一维数组b中。

4.4 实验题目

(1)数组a中存放N个非0整数,编写程序,将数组a中的所有正数存放在数组的前面,负数存放在数组的后面。

(2)将数组a中的N个元素后移m位,移出的m位顺序存放在数组的前m位。

(3)有5名学生,每名学生有语文、数学、物理和外语四门课的考试成绩,编程统计各学生的总分和平均分,以及所有学生各科的总分和平均分。 (4)将整型N×N矩阵主对角线元素进行升序排序。

(5)将4×4阶矩阵的4个最小值按升序存放在主对角线上。 (6)求N×N矩阵每行最大值的和。

(7)由键盘输入一个字符串,按照ASCII码由小到大的顺序排序,要求删除所输入的重复字符。如输入\,则应输出\。

(8)从键盘输入一个字符串,去掉所有非十六进制字符后转换成十进制数输出。要求如输入\,输出值为:10431。

4.5 思考题

(1)定义二维数组时是否可以省略第一维长度?省略时系统如何计算长度? (2)定义一维数组与引用一维数组元素时,“[]”内数据的含义是什么?

73