海南大学C语言考试大题题库Word下载.docx
《海南大学C语言考试大题题库Word下载.docx》由会员分享,可在线阅读,更多相关《海南大学C语言考试大题题库Word下载.docx(27页珍藏版)》请在冰点文库上搜索。
putchar(【?
】);
front=cx;
}
}
del函数的作用是删除有序数组a中的指定元素x,n为数组a的元素
个数,函数返回删除后的数组a元素个数。
主函数调用del删除5,
输出删除后的数组,请填(3)空使程序完整。
voidmain()
{intdel(inta[10],intn,intx);
intx[10]={1,2,3,4,5,6,7,8,9,10};
inti,y;
y=【?
】;
for(i=0;
i<
y;
i++)
printf("
%d"
x[i]);
intdel(inta[10],intn,intx)
{intp=0,i;
while(x>
=a[p]&
&
p<
n)
【?
for(i=p-1;
i<
n;
i++)
return(n-1);
下面程序的功能是输入10个数,找出最大值和最小值所在的位置,
并把两者对调,然后输出调整后的10个数。
请填(4)空使程序完整。
--------------------------------------------------------*/
{inta[10],max,min,i,j,k;
k=0;
j=0;
for(i=0;
10;
scanf("
%d"
&
a[i]);
】=a[0];
i++)
if(a[i]<
min){min=a[i];
【?
if(a[i]>
max){max=a[i];
a[j]=max;
a[i]);
以下程序的功能是计算函数f=x/y+y/z,请填(3)空使程序完整。
#include<
main()
{【?
/*函数原型声明*/
floatx,y,z,f;
%f,%f,%f"
x,&
y,&
z);
f=fun(【?
f+=fun(【?
f=%f"
f);
floatfun(floata,floatb)
{
return(a/b);
以下程序是将字符串b的内容连接字符数组a的内容后面,形成新
字符串a,请填
(2)空使程序完整。
voidmain()
{chara[40]="
Great"
b[]="
Wall"
;
inti=0,j=0;
while(a[i]!
)i++;
while(【?
】){
a[i]=b[j];
i++;
j++;
%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]<
a[k],则a[k]插入到a[j]之后,否则a[k]维持原位不变。
{inta[10]={191,3,6,4,11,7,25,13,89,10};
inti,j,k;
for(i=1;
i++){
k=a[i];
j=【?
while(j>
=0&
k<
a[j]){
j--;
】=k;
i++)printf("
已知程序的功能是输出数组a中的最大值,及该元素所在的行号
和列号,请填(3)空使程序完整。
{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++)
if(【?
row=i;
col=j;
%d,%d,%d\n"
max,row,col);
习题一
下面程序可求出矩阵a的主对角线上的元素之和,请填
(2)空使程序完整。
{inta[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;
{
Inta[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;
for(j=0;
if(i==j)
sum=sum+a[i][j];
sum=%d"
sum);
for(i=0;
3;
for(j=0;
j<
j++)
if(【1】)
sum=sum+【2】;
printf(“sum=%d”,sum);
下面程序将十进制整数base转换成n进制,请填(3)空使程序完整。
inti=0,base,n,j,num[20]={0};
n);
base);
do{
i++;
num[i]=base%n;
base=base/n;
}while(base!
=0);
for(j=i;
j>
=1;
j--)
num[j]);
{inti=0,base,n,j,num[20]={0};
scanf(“%d”,&
do{
i++;
num[i]=【1】;
base=【2】;
}while(base!
for(【3】)
printf(“%d”,num[j]);
inta[10],max,min,i,j,k=0;
max=min=a[0];
k=i;
j=i;
a[k]=max;
a[j]=min;
下面程序的功能是输入10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后的10个数,请填(3)空使程序完整。
for(i=0;
max=min=a[0];
if(a[i]<
【1】;
if(a[i]>
max){max=a[i];
【2】;
【3】;
printf(“%d”,a[i]);
下面程序用“插入法”对数组a进行由小到大的排序,请填(3)空使程序完整。
简单插入排序算法的基本思想使将数组处理n-1次,第k次处理是将第k个元素插入到目前的位置。
在第k次处理时,前面的元素a[0],a[1],…,a[k-1]必定已排成了升序,将a[k]与a[k-1],a[k-2],…a[0]逐个比较(由后向前),若有a[j]<
k=a[i];
j=i-1;
a[j])
a[j+1]=a[j];
a[j+1]=k;
//a[3]=a[5]最小的放后面
inti,j,k;
for(i=1;
k=a[i];
j=【1】;
while(j>
【2】;
j--;
【3】=k;
i++)printf(“%d”,a[i]);
inta[3]={5,9,10};
intb[5]={12,24,26,37,48};
intc[10],i=0,j=0,k=0;
while(i<
3&
5)
b[j])
{c[k]=b[j];
k++;
}
else
{c[k]=a[i];
while(i<
j>
=5)
{c[k]=a[i];
while(i>
=3&
{c[k]=b[j];
k;
c[i]);
下面程序用“两路合并法”把两个已按升序(由小到大)排列的数组合并成一个新的升序数组,请填(3)空使程序完整。
intb[5]={12,24,26,37,48};
intc[10],i=0,j=0,k=0;
while(i<
if(【1】){
c[k]=b[j];
}else{
c[k]=a[i];
while(【2】){
{c[k]=a[i];
while(【3】){
{c[k]=b[j];
i++)printf(“%d”,c[i]);
inta[2][3]={{4,5,6},{1,2,3}},b[2][3]={0},i,j;
2;
for(j=0;
j++)
%5d"
a[i][j]);
b[i][j+1]=a[i][j];
\n"
);
2;
i++)b[i][0]=a[i][2];
i++)
j++)
b[i][j]);
下面程序的功能是将二维数组a中每个元素向右移一列,最右一列换到最左一列,移后的结果保存到b数组中,并