elseif(m>a[mid]);
elsereturn(mid);
}
return-1;
}
intmain()
{inta[10]={1,2,3,4,5,6,7,8,9,10};
intm,index;
scanf("%d",m);
index=binary(a,m);
printf("%d\n",index);
return0;
}
A.high=mid-1B.low=mid+1C.high=mid+1D.low=mid-1
A.high=mid-1B.low=mid+1C.high=mid+1D.low=mid-1
9.以下程序的运行结果是。
#include
voidfun(intx)
{if(x/2>0)fun(x/2-2);
printf("%d",x);
}
intmain()
{fun(20);
printf("\n");
return0;
}
A.2082-1B.2820C.8D.-12820
答案:
1.A2.B3.C4.B5.BC6.CA7.A8.AB9.D
二、填空题
1.为使以下程序顺利进行,请填空补充完整程序。
当输入的数值为57时,该程序的运行结果是。
#include
intmain()
{doublex,y;
scanf("%lf%lf",&x,&y);
printf("%lf\n",max(y,x));
return0;
}
doublemax(doublea,doubleb)
{return(a>b)?
b-a:
a-b;}
2.以下函数fun的功能是:
将输入的大写字母,先转换为与其对应的小写字母,然后再转换成该小写字母后的第3个字母,返回后输出。
例如,若输入的字母为E,输出的字母则为h;若输入的字母为Y,输出的字母则为b。
请填空。
#include
#include
charfun(charc)
{c=;
if(c>='a'&&c<='w')c=c+3;
elseif(c>='x'&&c<='z')c=;
returnc;
}
intmain()
{charc;
c=getchar();
c=fun(c);
putchar(c);
return0;
}
3.若输入的值是-125,则以下程序的运行结果是。
#include
#include
voidfun(int);
intmain()
{intn;
scanf("%d",&n);
printf("%d=",n);
if(n<0)printf("-");
n=abs(n);
fun(n);
printf("\n");
return0;
}
voidfun(intn)
{intk,r;
for(k=2;k<=sqrt(n);k++)
{r=n%k;
while(r==0)
{printf("%d",k);
n=n/k;
if(n>1)printf("*");
r=n%k;
}
}
if(n!
=1)printf("%d\n",n);
}
4.下面add函数的功能是求两个参数的和,并将和值返回调用函数。
函数中错误的部分是,改正后为。
voidadd(floata,floatb)
{floatc;
c=a+b;
returnc;
}
5.以下函数fun的功能是:
统计一个数中位值为0的个数,以及位值为1的个数。
若输入111001,则输出为值为零的个数是2,位置为1的个数是4。
请填空。
#include
voidfun(longn)
{intcoun0=0,coun1=0,m;
do
{m=;
if(m==0)coun0++;
if(m==1)coun1++;
n=;
}while(n);
printf("coun0=%d,coun1=%d\n",coun0,coun1);
}
intmain()
{longn;
printf("\ninputn:
\n");
scanf("%ld",&n);
printf("n=%ld\n",n);
fun(n);
return0;
}
6.以下函数fun的功能是:
将输入的一个偶数写成两个素数之和的形式。
例如,若输入数值8,则输出8=3+5。
请填空。
#include
#include
voidfun(inta)
{intb,c,d;
for(b=3;b<=a/2;b=)
{for(c=2;c<=sqrt(b);c++)if(b%c==0)break;
if(c>sqrt(b))d=;
elsebreak;
for(c=2;c<=sqrt(d);c++)if(d%c==0)break;
if(c>sqrt(d))printf("%d=%d+%d\n",a,b,d);
}
}
intmain()
{inta;
printf("\ninputa:
\n");
scanf("%d",&a);
fun(a);
return0;
}
7.以下程序的功能是根据输入的y(Y)与n(N),在屏幕上分别显示出ThisisYES.与ThisisNO.。
请填空。
#include
voidYesNo(charch)
{switch(ch)
{case'y':
case'Y':
printf("\nThisisYES.\n");;
case'n':
case'N':
printf("\nThisisNO.\n");
}
}
intmain()
{charch;
printf("\nEnterachar'y','Y'or'n','N':
");
ch=;
printf("ch:
%c",ch);
YesNo(ch);
return0;
}
8.以下Check函数的功能是对value中的值进行四舍五入,若计算后的值与ponse值相等,则显示WELLDONE!
!
,否则显示计算后的值。
已有函数调用语句Check(ponse,value);请填空。
#include
voidCheck(intponse,floatvalue)
{intval;
val=;
printf("计算后的值:
%d",val);
if()printf("\nWELLDONE!
!
\n");
elseprintf("\nSorrythecorrectansweris%d\n",val);
}
9.以下程序的运行结果是“output:
153370371407”,该程序的功能是。
#include
intf(intn)
{inti,j,k;
i=n/100;j=n/10-i*10;k=n%10;
if(n==i*i*i+j*j*j+k*k*k)returnn;
elsereturn0;
}
intmain()
{intn,k;
printf("output:
");
for(n=100;n<1000;n++)
{k=f(n);
if(k!
=0)printf("%5d",k);
}
printf("\n");
return0;
}
10.若输入一个整数10,则以下程序的运行结果是。
#include
intsub(inta);
intmain()
{inta,e[10],c,i=0;
printf("输入一个整数:
");
scanf("%d",&a);
while(a!
=0)
{c=sub(a);
a=a/2;
e[i]=c;
i++;
}
for(;i>0;i--)printf("%d",e[i-1]);
printf("\n");
return0;
}
intsub(inta)
{intc;
c=a%2;
returnc;
}
11.以下程序的功能是求3个数的最小公倍数。
请填空。
#include
intmax(intx,inty,intz)
{if(x>y&&x>z)returnx;
elseif()returny;
elsereturnz;
}
intmain()
{intx1,x2,x3,i=1,j,x0;
printf("Input3numbers:
");
scanf("%d%d%d",&x1,&x2,&x3);
x0=max(x1,x2,x3);
while
(1)
{j=x0*i;
if()break;
i++;
}
printf("Thezuixiaogongbeiofthreenumber%d,%d,%dis:
%d\n",x1,x2,x3,j);
return0;
}
12.函数gongyue的作用是求整数num1和num2的最大公约数,并返回该值。
请填空。
#include
intgongyue(intnum1,intnum2)
{inttemp,a,b;
if(num1num2)
{temp=num1;num1=num2;num2=temp;}
a=num1;b=num2;
while()
{temp=a%b;a=b;b=temp;}
returna;
}
intmain()
{intn1,n2;
printf("请输入两个整数:
");
scanf("%d%d",&n1,&n2);
printf("Thezuidagongyueoftwonumbers%dand%dis:
%d\n",n1,n2,gongyue(n1,n2));
return0;
}
13.以下程序的运行结果是。
#include
voidadd(intx,inty,intz);
intmain()
{intx=2,y=3,z=0;
printf("
(1)x=%dy=%dz=%d\n",x,y,z);
add(x,y,z);
printf("(3)x=%dy=%dz=%d\n",x,y,z);
return0;
}
voidadd(intx,inty,intz)
{z=x+y;x=x*x;y=y*y;
printf("
(2)x=%dy=%dz=%d\n",x,y,z);
}
17.以下程序的运行结果是。
#include
#include
intfun(inty,intx)
{intz;
z=abs(x-y);
returnz;
}
intmain()
{inta=-1,b=-5,c;
c=fun(a,b);
printf("%d\n",c);
return0;
}
20.以下程序的运行结果是。
#include
intfact(intvalue);
intmain()
{printf("FACT(5):
%d\n",fact(5));
printf("FACT
(1):
%d\n",fact
(1));
fact(-5);
return0;
}
intfact(intvalue)
{if(value<0){printf("FACT(-1):
Error!
\n");return-1;}
elseif(value==1||value==0)return1;
elsereturn(value*fact(value-1));
}
21.下面程序的运行结果是。
#include
longfib(intg)
{switch(g)
{case0:
return0;
case1:
case2:
return1;
}
return(fib(g-1)+fib(g-2));
}
intmain()
{longk;
k=fib(7);
printf("k=%d\n",k);
return0;
}
22.下面程序的运行结果是。
#include
intsub(intn);
intmain()
{inti=5;
printf("%d\n",sub(i));
return0;
}
intsub(intn)
{inta;
if(n==1)return1;
a=n+sub(n-1);
returna;
}
23.以下程序是应用递归算法求某数a的平方根,请填空。
求平方根的迭代公式为:
x1=(x0+a/x0)/2。
#include
#include
doublemysqrt(doublea,doublex0)
{doublex1,y;
x1=;
if(fabs(x1-x0)>0.00001)y=mysqrt();
elsey=x1;
returny;
}
intmain()
{doublex;
printf("Enterx:
");scanf("%lf",&x);
printf("Thesqrtof%f=%f\n",x,mysqrt(x,1.0));
return0;
}
24.以下程序的运行结果是。
#include
voidf(inta[])
{inti=0;
while(a[i]<=10)
{printf("%5d",a[i]);
i++;
}
printf("\n");
}
intmain()
{inta[]={1,5,10,9,11,7};
f(a+1);
return0;
}
25.以下程序的运行结果是。
#include
intfunc(inta[][3]);
intmain()
{inta[3][3]={1,3,5,7,9,11,13,15,17};
intsum;
sum=func(a);
printf("\nsum=%d\n",sum);
return0;
}
intfunc(inta[][3])
{inti,j,sum=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{a[i][j]=i+j;
if(i==j)sum=sum+a[i][j];
}
returnsum;
}
26.阅读下面程序,完成下列问题中的填空。
问题
(1):
此程序在调用函数f后的运行结果是。
问题
(2):
若将函数f中的for(j=i+1;j<4;j++)改为for(j=0;j<3-i;j++),则程序的运行结果是。
#include
voidf(ints[][4])
{inti,j,k;
for(i=0;i<3;i++)
for(j=i+1;j<4;j++)
{k=s[i][j];s[i][j]=s[j][i];s[j][i]=k;}
}
intmain()
{ints[4][4],i,j;
for(i=0;i<4;i++)
for(j=0;j<4;j++)s[i][j]=i-j;
f(s);
for(i=0;i<4;i++)
{printf("\n");
for(j=0;j<4;j++)
printf("%4d",s[i][j]);
}
putchar('\n');
return0;
}
27.以下search函数的功能是利用顺序查找法从数组a的10个元素中对关键字m进行查找。
顺序查找法的思路是:
从第一个元素开始,从前向后依次与关键字比较,直到找到此元素或查找到数组尾部时结束。
若找到,则返回此元素的下标;若未找到,则返回值-1。
请填空。
#include
intsearch(inta[10],intm)
{inti;
for(i=0;i<=9;i++)if()returni;
return-1;
}
intmain()
{inta[10],m,i,no;
printf("Pleaseenter10numbers:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("Pleaseenteranumbertosearch:
");
scanf("%d",&m);
no=search();
if()printf("\nOKFOUND!
%d\n",no+1);
elseprintf("\nSorryNotFound!
\n");
return0;
}
28.已定义一个含有30个元素的数组s,函数fav1的功能是按顺序分别赋予各元素从2开始的偶数,函数fav2则按顺序每5个元素求一个平均值,并将该值存放在数组w中。
请填空。
#include
#defineSIZE30
voidfav1(floats[])
{inti;
floatk=2.0;
for(i=0;i{;
k+=2;
}
}
voidfav2(floats[],floatw[])
{floatsum;
intk,i;
sum=0.0;
for(k=0,i=0;i{sum+=s[i];
if((i+1)%5==0)
{w[k]=sum/5;
;
k++;
}
}
}
intmain()
{floats[SIZE],w[SIZE/5];inti