109A数组是C语言的一种构造数据类型,其元素的类型可以是整型、实型或者字符串类型。B若需定义一个包含2行3列共6个元素的二维整型数组a,并对其最后1行的3个元素进行初始化,可用如下语句实现:inta[][3]={{5,6,7}};BC语言程序在编译过程中,编译器会检查数组下标是否越界。B以下程序段在运行时,若通过键盘输入“123456”,则输出结果为“142536”。inta[2][3],b[3]j;for(i=0;i<2;i++)for(j=0;j<3;j++){scanf(*%(!*,&a[i][j]);b[j][i]=a[i][j];}for(i=0;i<3;i++)for(j=0;j<2;j++)printf('%d",b[i][j]);A在定义数组时,只允许使用整型常量表达式来定义数组的长度,其值必须是正整数。B对于数值型数组而言,只能单个引用数组元素,不能一次引用整个数组。A若在以下程序段的下划线位置添加代码,则输出结果为数组a包含的两位数奇数。inta[8]={5,8,22,13,75,46,129,63),i;for(i=0;i<8;i++)if()printff%d;B以下程序段的输出结果是:15101051。
110inta[6][6],i,j;for(i=0;i<6;i++){a[i][0]=l;a[i][i]=l;}for(i=2;i<6;i++)for(j=l;j=0;i—)printfa[i]);A数组名是一个【地址】常量,不能对它进行自增、自减和赋值运算。地址以下程序段用折半查找法在数组a中查找指定数值x,请填空。doublea[7]={1.5,6.2,8.94,11.3,14.9,20.1,35.7},x;intlow=0,high=6,mid;scanf&x);while(low<=high){
111mid=(low+high)/2;if(a[mid]>x)[]elseif(a[mid]112”,x);break;}}if(low>high)printf("数组中不存在数值%f
113”,x);high=mid-1low=mid+l以下程序段的输出结果是【】Ointa[4][4]={l,2,3,4,5,6,7,8,9,10),i,j,s=0;for(i=0;i<4;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d
114",s);31以下程序段通过键盘输入为数组中的所有元素赋值,请填空。inta[10],i=0;doscanf[]);while(i<10);&a[i++]以下程序段将数值k插入到有序数组a中,操作完成后数组a保持有序,请填空。inta[10]={3,5,8,12,20,39},k,n=6,i=0,j;scanf("%d",&k);while([])i++;for(j=n-l;j>=i;j—)a[j+l]=a[j];
115a[i]=k;a[i]116”,d);d+=month[i]以下程序段重排二维数组的每1行:以每行的第1个元素m为比较标准,该行中小于m的数都放在m的左侧,大于m的数都放在m的右侧。请填空。inta[3][6]={{6,8,9,5,7,2},{3,1,5,6,2,8},[8,3,8,4,9,7}},m,n,i,j,k;for(i=0;i<3;i++){m=a[i][0]:for(j=l;j<6;j++)if(a[i][j]O:k—)[];a[i][0]=n;))a[i][k]=a[i][k-1]第七章关于函数的定义,以下正确的描述是O(A)如果函数不返回值,可以省略类型说明符(B)可以在同程序中定义同名的函数,只要保证它们的返回值类型或形参列表不相同即可(0同一函数中的形参名必须唯一,但可以与其他函数中的变量同名
117(D)如果函数体为空,则函数最外层的一对花括号可以省略C若有函数定义:intfun(){doublex=23.5;returnx;},则函数的返回结果是o(A)23(B)23.0(C)23.5(D)24A在函数调用过程中,如果函数A调用函数B,函数B又调用函数A,则这种函数调用被称为o(A)间接递归调用(B)直接递归调用(C)间接循环调用(D)直接循环调用A以下程序的输出结果是O#includeintfun(intx){return++x;}voidmain(){inti=0;while(fun(i)<10)i++;printf("%d
118",i);}(A)11(B)10(C)8(D)9D关于函数调用时的参数传递,以下错误的描述是o(A)实参可以是常量、变量或表达式(B)形参可以是常量、变量或表达式(0实参与形参的个数相等、类型一致(D)实参必须有确定的赋值
119B若有以下程序,则下划线所在位置应填入的语句是—#includevoidmain(){doubleres;res=fun(3.7f,4.5f);doublefun(floatx,floaty){returnx*y;}(A)doublefun(float);(B)doublefun();(C)floatfun(float,float);(D)doublefun(float,float);D用一维数组名作为函数的实参时,传递给对应形参的是.(A)整个数组(B)第一个数组元素的地址(0数组的首地址(D)(B)和(C)都是正确的D以下程序的输出结果是o#includevoidfun(intb[5],intn){inti,t;for(i=0;i120fun(a,5);for(i=0;i<5;i++)printf("%d)(A)13579(B)31975(097531(D)编译时报错
121在C语言程序中定义全局变量,如果该变量使用关键字static作为存储类别说明符,则它的作用域是o(A)整个程序范围(B)定义该变量的源文件范围(0main函数内部(D)从定义该变量的位置开始直至程序结束B若有数组定义语句inta[6];和函数调用语句fun(a);则在fun函数的定义中,对形参数组array的错误定义方式是。(A)voidfun(intarray[intN=6])(B)voidfun(intarray[10])(C)voidfun(intarray[])(D)voidfun(intarray[3])A以下程序执行完毕后,变量res的值是o#includeintX=35;intfun(intn){intX=15;returnX%n?++X:—X;)voidmainO(doubleres;res=X/fun(3);}(A)1.0(B)2.1875(C)2.0(D)2.5C以下说法正确的是o(A)在函数中可以使用多条return语句来返回多个处理结果
122(B)在函数中最多只能有一条return语句(0一个函数不可能既是被调用函数,又是主调函数(D)如果函数值的类型与返回值的类型不一致,以函数值类型为准D以下程序执行完毕后,变量s的值是O#includeintfun(intn){staticintk=l;k*=n;returnk;}voidmain(){inti,s=0;for(i=l;i<5;i++)s+=fun(i);}(A)10(B)33(C)15(D)153B以下程序的输出结果是o#includeintfun(intn){if(n==2)returnn;elsereturnn*fun(n-2);voidmainO{printfC%d
123*,fun(7));}
124(A)105(B)2(C)35(D)递归无法正常结束D以下说法错误的是.(A)局部变量使用static作为存储类别说明符,其生存期将得到延长(B)自动变量一定是局部变量(0全局变量使用static作为存储类别说明符,其作用域将被扩大(D)寄存器变量的分配方式采用动态分配C下列程序在运行时,若通过键盘输入的数据为“24”,则输出结果是.#includeintisprime(intn){inti;for(i=2;i<=n/2;i++)if(n%i==0)return0;return1;}intfun(intn){inti;for(i=3;i<=n/2;i++)if(isprime(i)&&isprime(n-i))returni;return0;}voidmain(){intx;scanf("%d",&x);if(x%2==0&&x>=6)printf(〃%d,%d\rT,fun(x),x-fun(x));}(A)5,19(B)7,17(C)0,0(D)11,13A以下说法正确的是o
125(A)在函数定义时,如果不明确指定函数的返回值类型,则默认返回值类型为“void”(B)所有的函数都是平行的,一个函数并不从属于另一个函数(0属于一个C语言程序的不同文件中不允许定义同名的全局变量(D)函数被调用时形参才分配存储单元,函数调用结束后形参不释放占据的存储单元B在C语言中定义无参函数时,函数名后的一对圆括号可以保留,也可以省略。B被调用函数执行过程中形参值的变化不会影响主调函数中的实参值。A以下函数的功能是计算1+1/2+1/3+...+l/nodoublefun(intn){inti;doubles=0.0;for(i=l;i<=n;i++)s+=l/i;returns;}B如果被调用函数的定义出现在主调函数之前,必须使用函数原型对其进行声明。B以下程序的输出结果是:234567。#includevoidfun(intb[3]){inti;for(i=0;i<6;i++)b[i]++;)voidmainO{inta[6],i;for(i=0;i<6;i++)a[i]=i+l;
126fun(a);for(i=0;i<6;i++)printf(zz%d”,}A在函数中使用全局变量,可以得到一个以上的处理结果。AC语言不允许嵌套定义函数,因此在main函数内部不可能出现“doublefun(inta,floatb);”这样的语句。B在定义静态局部变量时如果不对其进行初始化,则系统会自动为该变量赋默认初值。A以下程序的功能是输出二维数组中每行元素的平均值,则在下划线所在位置应填入的代码是“avg(x)”。#includedoubleavg(inta[5]){inti;doubles=0;for(i=0;i<5;i++)s+=a[i];returns/5;}voidmainO(intx[3][5]={{8,12,1,7,5},{4,14,6},{2,9,3,3)},i;for(i=0;i<3;i++)printf;B以下函数的功能是输出m和n(m>n)两个正整数的最大公约数,则
127在下划线所在位置应填入的代码是wgcd(n,nftn)w。intgcd(intm,intn){if(n==0)returnm;elsereturn;)A若有函数定义:staticintfun(){},表明fun函数只能被所在文件内的函数调用,而不能被其他文件内的函数所调用。A在一个函数调用过程中又调用另一个函数称为函数的【】。嵌套调用以下程序的功能是输出1-3+5-7+..・+45-47+49的运算结果,请填空。#includeintfun(intn){ints=0,t=l,i;for(i=l;i<=n;i+=2){[];t=-t;}returns;}voidmain(){printf(z,%d
128/z,fun(50));}s+=t*i以下程序的功能是将二维数组中每行的最大值与该行的第一个元素进行互换,请填空。#includevoidfun(intx[4]){intm,i;for(m=0,i=l;i<4;i++)if(x[m]129if(m!=0){i=x[m];x[m]=x[0];x[0]=i;}}voidmain(){inta[3][4]={{6,9,15,10},{24,17,8,16},{33,29,7,40}},i;for(i=0;i<3;i++)[];}fun(a[i])以下程序执行完毕后,变量x的值是【】。#includeintfun(intn){returnn>2?fun(n-l)+fun(n-2):1;}voidmain(){intx=fun(6);}8以下程序在运行时,如果通过键盘输入“123456”,则输出结果是【】。#includettdefineN6intcnt=0;voidfun(intn){while(cnt=0;i-一){t=a[i];a[i]=a[i+N/2];a[i+N/2]=t;}for(i=0;i130}456123以下程序的功能是输出l+(l+2)+(l+2+3)+(l+2+3+4)的运算结果,请填空。#includeintfunl(inti){staticints=0;s+=i;returns;}intfun2(inti){staticints=0;[J;returns;)voidmain(){inti,s;for(i=l;i<5;i++)s=fun2(i);printfs);)s+=funl(i)以下程序的输出结果是【】。#includeintt=0;
131voidfun(intx){inta[5],i,j;a[t++]=x;if(t=5)for(i=0;i<4;i++)for(j=i+l;j<5;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidmain(){inta[5]={9,4,5,8,7},i;for(i=0;i<5;i++)fun(a[i]);for(i=0;i<5;i++)printf(*%d”,}94587第八章若有语句:inti,*p=&i;则均表示变量地址的选项是(A)*&p,*p,&i(B)i,p,&*i(C)*&i,&i,*p(D)&i,p,&*pD以下程序的输出结果是o#includevoidfun(int*pl,int*p2){int*p;*p=*pl;*pl=*p2;*p2=*p;voidmainO(intx=5,y=8;
132fun(&x,&y);printfC%d,%d
133z,,x,y);}(A)5,8(B)8,5(C)程序运行时报错(D)程序编译时报错C若有语句:intx=6,*p=&x;则下面正确的表达式是o(A)++&x(B)(*p)—(C)&(x+5)(D)p=1000B若有语句:inta[10],*pl=a+8,*p2=&a[3];则pl-p2的值是。(A)20(B)4(C)16(D)5D以下程序段执行完毕后,变量a和b的值分别是ointa=4,b=5,*pl=&a,*p2=&b;a=2*(*pl%-*p2)+5;b=*pl**p2++;(A)13,65(B)-3,-15(C)-3,-18(D)13,78A以下程序段调用scanf函数为变量x赋值,则填入下划线所在位置的错误代码是Ointx,*p=&x;scanf;(A)&x(B)*p(C)p(D)&*pB若有语句:inta[]={l,3,2,7,3,4},*p=a+3,k;则变量k的值不等于3的选项是o(A)k=(p++,*p++)(B)k=(p-=2,*p-)(0k=(p—,*—p)(D)k=(p++,*++p)
134D以下程序段在运行时,若通过键盘输入“26975”,则输出结果是ointa[5],*p,t;for(p=a;pvoidfun(int*p,int*q){int*t;if(*p>*q){t=p;p=q;q=t;}}voidmain(){inta=13,b=9;fun(&a,&b);(A)9,13(B)13,13(C)13,9(D)9,9c以下程序输出数组a中的最小值,则下划线所在位置应填入的代码是#include
135intfindmin(int*p,intn){int*m,*q=p+n;for(m=p;p136",findmin(a,6));)(A)pm(C)*p>*m(D)*p<*mD以下说法正确的是o(A)可以将整型常量作为存储单元地址存放到指针变量中。(B)指针变量的值是指针。(0可以采用为数组名重新赋值的方法使其指向不同的元素。(D)使用地址值作为实参、指针变量作为形参,形参值的改变可以使实参值发生变化。B以下对程序输出结果的判断中,正确的是。#includevoidfun(intx,inta[50]){do{*a++=x%10;x=x/10;
137printf*(a-l));}while(x);voidmainO(intx=6985,a[50];fun(x,a);}(A)程序能正常运行,输出结果为5896(B)程序编译时报错,因为形参数组名不能进行自增运算(0程序能正常运行,输出结果为6985(D)程序能正常运行,输出结果为随机数A若有函数定义:doublefun(inta[10]){...},则在对该函数进行原型声明时,错误的声明语句是o(A)doublefun(int[]);(B)doublefun(intb[10]);(C)doublefun(inta);(D)doublefun(int*a);若有语句:intx,*p=&x;则与该语句等价的语句是o(A)intx,*p;*p=&x;(B)intx,*p;p=&x;(C)intx,*p;*p=x;(D)intx,*p;p=x;B当两个指针变量指向同一数组时,两个指针变量相减的差值即为两个指针变量相隔的字节个数。B
138如果某个指针变量赋值为0,表示该指针变量不指向任何变量。A若有语句:intx□二{5,7,3,8},*p=x+2,y;y=++*p--;则变量y的值是3。B若有函数定义:intfun(int*a){return*a;},则函数的返回值是形参a中存放的地址值。B以下程序段的功能是交换变量a和b的值。inta=9,b=7,*p=&a,*q=&b;*p=*p+*q-(*q=*p);A以下程序段在数组a中查找数值x,则在下划线所在位置应填入的代码是“*p!=x"。doublea[5]={l.4,0.78,23.6,-4.5,19.3),x,*p=a;scanf&x);for(p=a;;p++);if(p139");elseprintf(*NotFind!
140");B
141intx=61,a[100],*p=a;while(x){*p++=x%8;x=x/8;}for(p=p_l;p>=a;p-){printf("%d",*p);}A以下程序执行完毕后,全局变量X和局部变量r的值分别是0和5o#includeintX=4;intfun(intx,int*p){staticintm=5;X*=m-x;m=++*p;returnm;}voidmain(){inta=2,b=3,r;r=fun(fun(a,&b),&b);}A以下程序执行完毕后,main函数中数组a各元素的值依次是1、9、6、5、8、7、3。
142#includeinti,t,*p;for(i=l;i<=m;i++){t=*(a+n-1);for(p=a+n-2;p>=a;p—)*(p+l)=*p;*a=t;}}voidmain(){inta[7]={8,7,3,5,1,9,6);fun(a,7,3);}B作为形参的数组名并不表示数组的首地址,其实质是一个【】。指针变量以下程序执行完毕后,变量x的值是【】。#includevoidfun(int*p,intm,intn){if(n<=m)fun(p,m/2,2*n);*p+=n;}voidmain(){intx=0;
143fun(&x,16,1);
14415以下程序对数组a进行由大到小排序,请填空。#include#defineN6voidfun(int*p,int*q){intt;t=*p;*p=*q;*q=t;)voidmain(){inta[N]={l,2,3,4,5,6},*p,*q;for(p=a;p145fun(a,&n)以下程序段的输出结果是【】ointa[5]={6,5,9,8,*q;for(p=q=a+2;q*q){*p=*p+*q;*q=*p-*q;*p=*p-*q;}for(p=a;p