1、海南大学C语言考试大题试题库【程序填空】下面程序接受键盘上的输入,直到按/键为止,这些字符被原样输出,但若有连续的一个以上的空格时只输出一个空格,请填空使程序完整。 */#in clude void mai n()char cx , fron t=0;while (【?】)!=n)if (cx!= ) putchar(cx);if (cx=)if (【?】)putchar(【?】);fron t=cx ;/* 【程序填空】为数组a的元素del删除5,del函数的作用是删除有序数组 a中的指定元素x, n 个数,函数返回删除后的数组 a元素个数。主函数调用 输出删除后的数组,请填(3)空使程序完
2、整。 */#in clude void mai n() int del (int a10,int n,int x);int x10=1,2,3,4,5,6,7,8,9,10;int i,y;y=【?】;for(i=0;i=ap &pn)【?】for (i=p-1; in; i+)【?】return (n-1);/* 【程序填空】下面程序的功能是输入 10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后的 10个数。请填(4)空使程序完整。 */#in cludevoid mai n() int a10,max, min ,i,j,k ;k=O;j=O;for (i=0; i10
3、; i+)sea nf(%d,&ai);【?】=a0;for (i=0; i10; i+)aj=max;【?】;for (i=0; i10; i+)prin tf(%d ”,ai);【程序填空】以下程序的功能是计算函数 f=x/y+y/z ,请填空使程序完整。 */# in elude main ()【?】;/*函数原型声明*/float x,y,z,f ;sca nf(%f,%f,%f, &x,&y, &z);f = fun (【?】);f += fun (【?】); prin tf(f=%f,f);float fun( float a,float b)return (a/b);【程序填空】
4、以下程序是将字符串 b的内容连接字符数组 a的内容后面,形成新字符串a,请填(2)空使程序完整。 */#in clude void main () char a40=Great , b =Wall; int i=0,j=0 ;while (ai!=0) i+ ;while (【?】)ai=bj ; i+ ; j+ ;【?】prin tf(%sn,a);【程序填空】下面程序用”插入法对数组a进行由小到大的排序,请填 (3)空使程序完整。经典算法提示:简单插入排序算法的基本思想使将数组处理 n-1次,第k次处理是将第k个元素插入到目前的位置。第 k次的元素是这样插入的:在第k次处理时,前面的元素
5、a0,a1,ak-1必定已排成了升序,将ak与ak-1,ak-2,a0逐个比较(由后向前),若有ajak,则ak插入到aj之后,否则ak维持原位不变。 */#in clude void main () int a10=191,3,6,4,11,7,25,13,89,10;int i,j,k ;for (i=1; i=0 & ka j ) 【?】j-;【?】=k ;for (i=0; i10; i+) printf(%d ,ai);/* 【程序填空】已知程序的功能是输出数组 a中的最大值,及该元素所在的行号和列号,请填(3)空使程序完整。 */#in cludevoid mai n() int
6、i,j,row=0,col=0,max;max=aOO;for(【?】)for( j=0;j3;j+)if(【?】)【?】;row=i;col=j;prin tf(%d,%d,%d n,max,row,col);/* 【程序填空】F面程序接受键盘上的输入,直到按/键为止,这些字符被原样输出,但若有连续的一个以上的空格时只输出一个空格,请填空使程序完整。 */#in clude void mai n()char cx , fron t=0;* *SPACE *while (【?】)!=n)if (cx!= ) putchar(cx);if (cx=)if (【?】)* *SPACE *putch
7、ar(【?】);fron t=cx ;【程序填空】以下程序是将字符串 b的内容连接字符数组 a的内容后面,形成新字符串a,请填(2)空使程序完整。 */#in clude void main () char a40=Great , b =Wall; int i=0,j=0 ;while (ai!=0) i+ ;while (【?】)ai=bj ; i+ ; j+ ;【?】prin tf(%sn,a);/*【程序填空】下面程序用”插入法对数组a进行由小到大的排序,请填 (3)空使程序完整。经典算法提示:简单插入排序算法的基本思想使将数组处理 n-1次,第k次处理是将第k个元素插入到目前的位置。第
8、 k次的元素是这样插入的:在第k次处理时,前面的元素 a0,a1,ak-1必定已排成了升序,将ak与ak-1,ak-2,a0逐个比较(由后向前),若有ajak,则ak插入到aj之后,否则ak维持原位不变。 */#in clude void main () int a10=191,3,6,4,11,7,25,13,89,10;int i,j,k ;for (i=1; i=0 & kaj ) 【?】j-;【?】=k ;for (i=0; i10; i+) printf(%d ,ai);/* 【程序填空】已知程序的功能是输出数组 a中的最大值,及该元素所在的行号和列号,请填(3)空使程序完整。 */
9、#in clude void mai n() int i,j,row=0,col=0,max;int a43=4,5,6,10,1,23,2,-8,9,9,7,18;max=a00;for(【?】)for( j=0;j3;j+)* *SPACE *if(【?】)* *SPACE *【?】row=i;col=j;prin tf(%d,%d,%d n,max,row,col);习题一F面程序可求出矩阵 a的主对角线上的元素之和,请填 (2)空使程序完整。mai n ()mai n ()Int a33=1,3,5,7,9,11,13,15,17 sum=0,i,j;for (i=0;i3;i+)fo
10、r (j=0;j3;j+)if (i=j)sum=sum+aij;prin tf(sum=%d,sum); int a33=1,3,5,7,9,11,13,15,17, sum=0, i, j ;for (i=0 ; i3 ; i+)for (j=0 ; j=1;j-)prin tf(%d, nu mj);base=【2】 while (base!=0);for (【3 )printf( “ %d ”,num j);下面程序的功能是输入 10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后的 10个数,请填(3)空使程序完整。mai n () int a10,max, min
11、,i,j,k ;for (i=0; i10; i+)scanf( “%d ” ,&ai);max=min=a0;for (i=0; i10; i+) 【1】;【2】;if (aimax) max=ai;【3】;for (i=0; i10; i+)printf( “ d ” ,ai);F面程序用“插入法”对数组 a进行由小到大的排序,请填 (3)空使程序完整。经典算法提示:简单插入排序算法的基本思想使将数组处理 n-1次,第k次处理是将第k个元素插入到目前的位置。第k次的元素是这样插入的:在第k次处理时,前面的元素 a0,a1,ak-1必定已排成了升序,将 ak与ak-1,ak-2,a0逐个比较
12、(由后向mai n () int a10=191,3,6,4,11,7,25,13,89,10;int i,j,k ;for (i=1; i10; i+) k = ai;前),若有ajak,则ak插入到aj之后,否则ak维持原位不变。mai n () int a10=191,3,6,4,11,7,25,13,89,10;int i,j,k ;for (i=1; i=0 & k=0 & kaj ) 【2】;j-;【3】=k ;for (i=0; i10; i+) printf( “d ”,ai);下面程序用两路合并法”把两个已按升序(由小到大) 组,请填(3)空使程序完整。mai n ()int
13、 a3=5,9,10;int b5=12,24,26,37,48;int c10,i=0,j=0,k=0 ;排列的数组合并成一个新的升序数mai n ()int a3=5,9,10;int b5=12,24,26,37,48;int c10,i=0,j=0,k=0 ; while (i3 & jbj)ck=bj ; k+ ; j+ ;elseck=ai ; k+ ; i+ ; while (i=5) ck=ai ; i+ ; k+ ; while (i=3 & j5) ck=bj ; j+ ; k+ ; for (i=0; ik; i+) pri ntf(%d ,ci); while (i3
14、& j5)if (【1】)ck=bj ; k+ ; j+ ; else ck=ai ; k+ ; i+ ;while (【2 ) ck=ai ; i+ ; k+ ; while (【3 ) ck=bj ; j+ ; k+ ; for (i=0; ik; i+) printf( “ d ”,ci);F面程序的功能是将二维数组a中每个元素向右移一列,最右一列换到最左一列,移后的结果保存到b数组中,并按矩阵形式输出 序完整。mai n ()a和b,请填空使程 int a234,5,6,1,2,3, b23, i,j;for (i=0; i2 ; i+)for (j=0; j3 ; j+ ) prin
15、tf( “ %5d ” ,ai j);【1】;mai n ()int a23=4,5,6,1,2,3, for (i=0; i2 ; i+)for (j=0; j3 ; j+ )prin tf(%5d,aij); bij+1=aij;prin tf(n);for (i=0;i2;i+) bi0=ai2;for(i=0;i2;i+)for (j=0; j3 ; j+)prin tf(%5d,bij);b23=0, i,j;prin tf(n ”);printf( “ n ” );for (【2 ) bi0=ai2;for (i=0; i2 ; i+) for (j=0; j3 ; j+) pri
16、ntf( “ 5d ” ,bi j);【3 ;printf( “n ” );下面程序的功能是在一个字符串中查找一个指定的字符, 若字符串中包含该字符则输出该字# in elude mai n () char c= a ; /*需要查找的字符*/char t50;符在字符串中第一次出现的位置(下标值) ,否则输出一1,请填(2)空使程序完整。mai n () char c=a ; /* 需要查找的字符*/char t50;int i,j,k;gets(t);i = strle n( t);for (k=0; ki; k+)if (tk=c) j = k ; break ;else j=-1;in
17、t i,j,k;gets(t);i =【1】;for (k=0; ki; k+)if (【2】) j = k ; break ;else j=-1;printf( “ %d ” ,j);F面程序用“顺序查找法”查找数组 a中是否存在某一关键字,请填 (2)空使程序完整。main ()mai n ()inta10=25,57,48,371,123,291, 18,22,44;int i=0,x ;scan f(%d,& x);while (ai!=x &ii+ ;if(i10)pri ntf(fou nd=%din,i);elseprin tf(ca nt foun d!n); int a10=
18、25,57,48,371,123,291,18,22,44;int i=0,x ;scanf( “ d ”,&x);while (ai!=x& 【1 】)i+ ;if (【2 】)printf( “found=%dn ” ,i);else printf( “can t found!n ” );习题二以下程序是求矩阵 a,b的乘积,结果存放在矩阵阵形式输出,请填(3)空使程序完整。mai n ()int a22=-1,-2,-3,-4, b23=2,10,9,4,5,119;int i,j,k,s,c23;for (i=0; i2; i+)for (j=0; j3; j+) for (k=0;
19、k2; k+) s+= 【2 】ci j=s;for (i=0; i3; i+)for (j=0; j2; j+)printf( “ 6d ” ,cij);【3】;int i=0,j=0 ;while (ai!= 0 ) i+ ;while (【1 】)ai=bj ; i+ ; j+ ;【2】;printf( “ sn ” ,a);下面函数用“折半查找法”从有 10个数的a数组中对关键字 m查找,若找到,返回其下标值,否则返回1,请填(2 )空使程序完整。经典算法提示:折半查找法的思路是先确定待查元素的范围, 将其分成两半,然后比较位于中间点元素的值。之亦反。int search(i nt a
20、10,i nt m) int x1=0,x2=9,mid ;while (x1=x2) mid = (x1+x2)/2;if (mamid) 【2 else return (mid);return (-1);int search(i nt a10,i nt m) int x1=0,x2=9,mid ;while (x1=x2)mid = (x1+x2)/2;if (mamid) x1=mid; 是降序则是X2=MIDelse return (mid);return (-1);这是升序,若果是降序这是升序,若果del函数的作用是删除有序数组 a中的指定元素x, n为数组a的元素个数,函数返回删除
21、后的数组a元素个数,请填(2)空使程序完整。int del (int a10,int n,int x) in t p=0,i ;while (x=ap &p n) 【1 】for (i=p-1; i=ap &pn) p+;for (i=p-1; in; i+) ai=ai+1; return (n-1);/只能删除升序序列# in elude 【1】;mai n () float x,y,z,f ;scanf( “ f,%f,%f ”,&x,&y,&z);f = fun(【2 】);f += fun (【3 】);printf( “f=%d ” ,f);/要改%f输出float fun( fl
22、oat a,float b) return (a/b);avg函数的作用是计算数组 array的平均值返回,请填(3)空使程序完整。float avg(float array10) int i;float avgr,sum=0;for (i=0;i10;i+) sum+=arrayi; avgr=sum/10 ;return(avgr);float avg(float array10) int i ;float avgr , sum=0 ;for (i=0; 【1 】;i+)sum+=【2】avgr = sum / 10 ;【3】;习题二F列程序的输出结果是 16.00,请填(1 )空使程序完
23、整。mai n () int a=9,b=2;float x= 【1 】 ,y=1.1 ,乙z=a/2+b*x/y+1/2;printf( “ %5.2fn ” ,z);mai n ()int a=9,b=2;float x=6.6 , y=1.1 ,乙 z=a/2+b*x/y+1/2;printf( “ %5.2fn ”,z); 以下程序输出x,y,z三个数中的最小值,请填( 使程序完整。mai n () int x=4,y=5,z=8 ;int u,v;u = xy【1】v = uz【2】printf ( “ %d ” ,v);下述程序用“碾转相除法”计算两个整数 m和n的最大公约数。该方法的基本思想是计算m和n相除的余数,如果余数为 0则结束,此时的被除数就是最大公约数。否则,将除数 作为新的被除数,余数作为新的除数,继续计算m和n相除的余数,判断是否为0,等等, 请填(3)空使程序完整。main () int m, n,w;下面程序的功能是输出 1至1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1