海南大学C语言考试大题试题库.docx

上传人:b****5 文档编号:6350821 上传时间:2023-01-05 格式:DOCX 页数:26 大小:153.28KB
下载 相关 举报
海南大学C语言考试大题试题库.docx_第1页
第1页 / 共26页
海南大学C语言考试大题试题库.docx_第2页
第2页 / 共26页
海南大学C语言考试大题试题库.docx_第3页
第3页 / 共26页
海南大学C语言考试大题试题库.docx_第4页
第4页 / 共26页
海南大学C语言考试大题试题库.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

海南大学C语言考试大题试题库.docx

《海南大学C语言考试大题试题库.docx》由会员分享,可在线阅读,更多相关《海南大学C语言考试大题试题库.docx(26页珍藏版)》请在冰豆网上搜索。

海南大学C语言考试大题试题库.docx

海南大学C语言考试大题试题库

【程序填空】

下面程序接受键盘上的输入,直到按/键为止,这些字符被原样

输出,但若有连续的一个以上的空格时只输出一个空格,请填

空使程序完整。

*/

#includevoidmain()

{

charcx,front='\0';

 

while((【?

】)!

='\n')

{

if(cx!

='')putchar(cx);

if(cx=='')

 

if(【?

】)

 

putchar(【?

】);

front=cx;

/*

【程序填空】

为数组a的元素

del删除5,

del函数的作用是删除有序数组a中的指定元素x,n个数,函数返回删除后的数组a元素个数。

主函数调用输出删除后的数组,请填(3)空使程序完整。

*/

#includevoidmain()

{intdel(inta[10],intn,intx);

intx[10]={1,2,3,4,5,6,7,8,9,10};

inti,y;

y=【?

】;

for(i=0;i

printf("%d”,x[i]);

}

intdel(inta[10],intn,intx){intp=0,i;

while(x>=a[p]&&p

 

【?

for(i=p-1;i

【?

return(n-1);

}

/*

【程序填空】

下面程序的功能是输入10个数,找出最大值和最小值所在的位置,

并把两者对调,然后输出调整后的10个数。

请填(4)空使程序完整。

*/

#include

voidmain()

{inta[10],max,min,i,j,k;

k=O;j=O;

for(i=0;i<10;i++)

seanf("%d",&a[i]);

【?

】=a[0];

for(i=0;i<10;i++)

{

 

a[j]=max;

【?

】;

for(i=0;i<10;i++)

printf("%d”,a[i]);

【程序填空】

以下程序的功能是计算函数f=x/y+y/z,请填⑶空使程序完整。

*/

#inelude

main()

 

{【?

】;/*函数原型声明*/

floatx,y,z,f;

scanf("%f,%f,%f",&x,&y,&z);

 

f=fun(【?

】);

f+=fun(【?

】);printf("f=%f',f);

}

floatfun(floata,floatb)

{

return(a/b);

【程序填空】

以下程序是将字符串b的内容连接字符数组a的内容后面,形成新

字符串a,请填

(2)空使程序完整。

*/

#includevoidmain()

{chara[40]="Great",b[]="Wall";inti=0,j=0;

while(a[i]!

='\0')i++;

while(【?

】){

a[i]=b[j];i++;j++;

}

【?

printf("%s\n",a);

【程序填空】

下面程序用”插入法"对数组a进行由小到大的排序,请填(3)空使

程序完整。

经典算法提示:

简单插入排序算法的基本思想使将数组处理n-1次,第k次处理是

将第k个元素插入到目前的位置。

第k次的元素是这样插入的:

第k次处理时,前面的元素a[0],a[1],…,a[k-1]必定已排成了升

序,将a[k]与a[k-1],a[k-2],…a[0]逐个比较(由后向前),若

有a[j]

*/

#includevoidmain()

{inta[10]={191,3,6,4,11,7,25,13,89,10};

inti,j,k;

for(i=1;i<10;i++){

k=a[i];

*********SPACE*********

while(j>=0&&k

【?

j--;

}

【?

】=k;

}

for(i=0;i<10;i++)printf("%d",a[i]);

/*

【程序填空】

已知程序的功能是输出数组a中的最大值,及该元素所在的行号

和列号,请填(3)空使程序完整。

*/

#include

voidmain(){inti,j,row=0,col=0,max;

max=a[O][O];

 

for(【?

】)

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

 

if(【?

】)

{

【?

】;

row=i;

col=j;

}

printf("%d,%d,%d\n",max,row,col);

}

/*

【程序填空】

F面程序接受键盘上的输入,直到按/键为止,这些字符被原样

输出,但若有连续的一个以上的空格时只输出一个空格,请填

空使程序完整。

*/

#includevoidmain()

{

charcx,front='\0';

 

*********SPACE*********

while((【?

】)!

='\n')

{

if(cx!

='')putchar(cx);

if(cx=='')

 

if(【?

】)

 

*********SPACE*********

putchar(【?

】);

front=cx;

【程序填空】

以下程序是将字符串b的内容连接字符数组a的内容后面,形成新

字符串a,请填

(2)空使程序完整。

*/

#includevoidmain()

{chara[40]="Great",b[]="Wall";inti=0,j=0;

while(a[i]!

='\0')i++;

while(【?

】){

a[i]=b[j];i++;j++;

}

【?

printf("%s\n",a);

/*

【程序填空】

下面程序用”插入法"对数组a进行由小到大的排序,请填(3)空使

程序完整。

经典算法提示:

简单插入排序算法的基本思想使将数组处理n-1次,第k次处理是

将第k个元素插入到目前的位置。

第k次的元素是这样插入的:

第k次处理时,前面的元素a[0],a[1],…,a[k-1]必定已排成了升

序,将a[k]与a[k-1],a[k-2],…a[0]逐个比较(由后向前),若

有a[j]

*/

#includevoidmain()

{inta[10]={191,3,6,4,11,7,25,13,89,10};

inti,j,k;

for(i=1;i<10;i++){

k=a[i];

 

j=【?

】;

while(j>=0&&k

【?

j--;

}

 

【?

】=k;

}

for(i=0;i<10;i++)printf("%d",a[i]);

}

/*

【程序填空】

已知程序的功能是输出数组a中的最大值,及该元素所在的行号

和列号,请填(3)空使程序完整。

*/

#includevoidmain()

{inti,j,row=0,col=0,max;

inta[4][3]={{4,5,6},{10,1,23},{2,-8,9},{9,7,18}};

max=a[0][0];

 

for(【?

】)

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

*********SPACE*********

if(【?

】)

*********SPACE*********

 

【?

row=i;

col=j;

}

printf("%d,%d,%d\n",max,row,col);

}

习题一

F面程序可求出矩阵a的主对角线上的元素之和,请填

(2)空使程序完整。

main()

main()

{

Inta[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(i==j)

sum=sum+a[i][j];

printf("sum=%d",sum);

}

{inta[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(【1】)

sum=sum+【2】;

printf(“sum=%d”,sum);

base转换成n进制,请填⑶空使程序完整。

下面程序将十进制整数

main()

{inti=O,base,n,j,num[20]={0};scanf(“%d”,&n);scanf(“%d”,&base);do{

i++;

num[i]=

【1]

main()

{

inti=0,base,n,j,num[20]={0};scanf("%d",&n);

scanf("%d",&base);

do{

i++;

num[i]=base%n;base=base/n;

}while(base!

=0);

for(j=i;j>=1;j--)

printf("%d",num[j]);

}

base=【2】

}while(base!

=0);

for(【3])

printf(“%d”,num[j]);

 

下面程序的功能是输入10个数,找出最大值和最小值所在的

位置,并把两者对调,然后输出调整后的10个数,请填(3)

空使程序完整。

main()

{inta[10],max,min,i,j,k;

for(i=0;i<10;i++)

scanf(“%d”,&a[i]);

max=min=a[0];

for(i=0;i<10;i++){

【1】;}

【2】;}

if(a[i]max){max=a[i];

}

【3】;

for(i=0;i<10;i++)

printf(“%d”,a[i]);

F面程序用“插入法”对数组a进行由小到大的排序,请填(3)空使程序完整。

经典算法提示:

简单插入排序算法的基本思想使将数组处理n-1次,第k次处理是将第k个元素插入

到目前的位置。

第k次的元素是这样插入的:

在第k次处理时,前面的元素a[0],a[1],…,a[k-1]必定已排成了升序,将a[k]与a[k-1],a[k-2],…a[0]逐个比较(由后向

main()

{inta[10]={191,3,6,4,11,7,25,13,89,10};

inti,j,k;

for(i=1;i<10;i++){

k=a[i];

前),若有a[j]

main()

{inta[10]={191,3,6,4,11,7,25,13,89,10};

inti,j,k;

for(i=1;i<10;i++)

{

k=a[i];

j=i-1;

while(j>=0&&k

{

a[j+1]=a[j];

j--;

}

a[j+1]=k;〃a[3]=a[5]最小的放后面

while(j>=0&&k

【2】;

j--;

}

【3】=k;

}

for(i=0;i<10;i++)printf(“%d”,a[i]);

}

下面程序用"两路合并法”把两个已按升序(由小到大)组,请填(3)空使程序完整。

main()

{

inta[3]={5,9,10};

intb[5]={12,24,26,37,48};

intc[10],i=0,j=0,k=0;

排列的数组合并成一个新的升序数

main()

{

inta[3]={5,9,10};

intb[5]={12,24,26,37,48};

intc[10],i=0,j=0,k=0;while(i<3&&j<5)

if(a[i]>b[j])

{c[k]=b[j];k++;j++;}

else

{c[k]=a[i];k++;i++;}while(i<3&&j>=5)

{c[k]=a[i];i++;k++;}while(i>=3&&j<5)

{c[k]=b[j];j++;k++;}

for(i=0;i

while(i<3&&j<5)

if(【1】){

c[k]=b[j];k++;j++;

}else{

c[k]=a[i];k++;i++;

}

while(【2]){

{c[k]=a[i];i++;k++;}

while(【3]){

{c[k]=b[j];j++;k++;}

for(i=0;i

 

F面程序的功能是将二维数组

a中每个元素向右移

一列,最右一列换到最左一列,移后的结果保存到

b数组中,并按矩阵形式输出序完整。

main()

a和b,请填⑶空使程

{inta[2][3]{{4,5,6},{1,2,3}},b[2][3],i,j;

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

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

printf(“%5d”,a[i][j]);

【1】;

main()

{

inta[2][3]={{4,5,6},{1,2,3}},for(i=0;i<2;i++)

{

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

{

printf("%5d",a[i][j]);b[i][j+1]=a[i][j];

}

printf("\n");

}

for(i=0;i<2;i++)b[i][0]=a[i][2];

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

{

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

{

printf("%5d",b[i][j]);

b[2][3]={0},i,j;

}

printf("\n”);

}

 

printf(“\n”);

}

for(【2])b[i][0]=a[i][2];

for(i=0;i<2;i++){

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

printf(“%5d”,b[i][j]);

【3];

}

printf(“\n”);

}

}

下面程序的功能是在一个字符串中查找一个指定的字符,若字符串中包含该字符则输出该字

#inelude

main()

{charc='a';/*需要查找的字符*/

chart[50];

符在字符串中第一次出现的位置(下标值),否则输出一1,请填

(2)空使程序完整。

main()

{charc='a';/*需要查找的

字符*/

chart[50];

inti,j,k;

gets(t);

i=strlen(t);

for(k=0;k

if(t[k]==c)

{j=k;break;}

elsej=-1;

inti,j,k;

gets(t);

i=【1】;

for(k=0;k

if(【2】)

{j=k;break;}

elsej=-1;

printf(“%d”,j);

F面程序用“顺序查找法”查找数组a中是否存在某一关键字,请填

(2)空使程序完整。

main()

main()

{

int

a[10]={25,57,48,371,123,291,18,22,44};

inti=0,x;

scanf("%d",&x);

while(a[i]!

=x&&i

i++;

if(i<10)printf("found=%d\in",

i);

else

printf("can'tfound!

\n");

{inta[10]={25,57,48,371,123,291,18,22,44};

inti=0,x;

scanf(“%d”,&x);

while(a[i]!

=x&&【1】)i++;

if(【2】)printf(“found=%d\n”,i);

elseprintf(“can'tfound!

\n”);

}

 

习题二

以下程序是求矩阵a,b的乘积,结果存放在矩阵

阵形式输出,请填(3)空使程序完整。

main()

{inta[2][2]={-1,-2,-3,-4},b[2][3]={2,10,9,4,5,119};

inti,j,k,s,c[2][3];

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

}

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

for(k=0;k<2;k++)s+=【2】

c[i][j]=s;

}

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

{for(j=0;j<2;j++)

printf(“%6d”,c[i][j]);

【3】;

}

}

inti=0,j=0;

while(a[i]!

='\0')i++;

while(【1】){

a[i]=b[j];i++;j++;

}

【2】;

printf(“%s\n”,a);

}

下面函数用“折半查找法”从有10个数的a数组中对关键字m查找,若找到,返回其下

标值,否则返回—1,请填

(2)空使程序完整。

经典算法提示:

折半查找法的思路是先确定待查元素的范围,将其分成两半,然后比较位于中间点元素的值。

 

之亦反。

intsearch(inta[10],intm)

{intx1=0,x2=9,mid;

while(x1<=x2){

mid=(x1+x2)/2;

if(m

elseif(m>a[mid])【2]

elsereturn(mid);

}

return(-1);

intsearch(inta[10],intm)

{intx1=0,x2=9,mid;

while(x1<=x2)

{

mid=(x1+x2)/2;

if(m

elseif(m>a[mid])x1=mid;〃是降序则是X2=MID

elsereturn(mid);

}

return(-1);

}

这是升序,若果是降序

这是升序,若果

del函数的作用是删除有序数组a中的指定元素x,n为数组a的元素个数,函数返回删除

后的数组a元素个数,请填

(2)空使程序完整。

intdel(inta[10],intn,intx)

 

{intp=0,i;

while(x>=a[p]&&p

for(i=p-1;i

return(n-1);

intdel(inta[10],intn,intx)

{

intp=0,i;

while(x>=a[p]&&p

for(i=p-1;i

}//只能删除升序序列

#inelude

【1】;

main()

{floatx,y,z,f;

scanf(“%f,%f,%f”,&x,&y,&z);

f=fun(【2】);

f+=fun(【3】);

printf(“f=%d”,f);

}//要改%f输出

floatfun(floata,floatb)

{return(a/b);

}

avg函数的作用是计算数组array的平均值返回,请填(3)空使程序完整。

floatavg(floatarray[10]){

inti;

floatavgr,sum=0;

for(i=0;i<10;i++)sum+=array[i];avgr=sum/10;

return(avgr);

}

floatavg(floatarray[10])

{inti;

floatavgr,sum=0;

for(i=0;【1】;i++)

sum+=【2】

avgr=sum/10;

【3】;

习题二

F列程序的输出结果是16.00,请填

(1)空使程序完整。

main()

{inta=9,b=2;

floatx=【1】,y=1.1,乙

z=a/2+b*x/y+1/2;

printf(“%5.2f\n”,z);

main()

{

inta=9,b=2;

floatx=6.6,y=1.1,乙z=a/2+b*x/y+1/2;

printf(“%5.2f\n”,z);}

以下程序输出x,y,z三个数中的最小值,请填(使程序完整。

main()

{intx=4,y=5,z=8;

intu,v;

u=x

【1】

v=u

【2】

 

printf(“%d”,v);

下述程序用“碾转相除法”计算两个整数m和n的最大公约数。

该方法的基本思想是计算

m和n相除的余数,如果余数为0则结束,此时的被除数就是最大公约数。

否则,将除数作为新的被除数,余数作为新的除数,继续计算m和n相除的余数,判断是否为0,等等,请填(3)空使程序完整。

main()

{intm,n,w;

 

下面程序的功能是输出1至1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1