}
(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
{ 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 { static int a[]={1,3,5,7}; int *p[3]={a+2,a+1,a}; int **q=p; printf(\} 3. 程序填空题 (1)下面程序的功能是将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请填空。 #include { 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 { 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