else if(m>a[mid]) ;
else return (mid);
}
return -1;
}
int main()
{int a[10]={1,2,3,4,5,6,7,8,9,10};
int m,index;
scanf("%d",m);
index=binary(a,m);
printf("%dn",index);
return 0;
}
A.high=mid-1 B.low=mid+1 C.high=mid+1 D.low=mid-1
A.high=mid-1 B.low=mid+1 C.high=mid+1 D.low=mid-1
9. 以下程序的运行结果是 。
#include
void fun(int x)
{if(x/2>0) fun(x/2-2);
printf("%d",x);
}
int main()
{fun(20);
printf("n");
return 0;
}
A.2082-1 B.2820 C.8 D.-12820
答案:
1. A 2. B 3. C 4. B 5. B C 6. C A 7. A 8. A B 9. D
二、填空题
1. 为使以下程序顺利进行,请填空补充完整程序。当输入的数值为5 7时,该
程序的运行结果是 。
#include
int main()
{double x,y;
scanf("%lf%lf",&x,&y);
printf("%lfn",max(y,x));
return 0;
}
double max(double a,double b)
{return (a>b)?b-a:a-b;}
2. 以下函数fun的功能是:将输入的大写字母,先转换为与其对应的小写字母,
然后再转换成该小写字母后的第3个字母,返回后输出。例如,若输入的字母为
E,输出的字母则为h;若输入的字母为Y,输出的字母则为b。请填空。
#include
#include
char fun(char c)
{c= ;
if(c>='a' && c<='w') c=c+3;
else if(c>='x' && c<='z') c= ;
return c;
}
int main()
{char c;
c=getchar();
c=fun(c);
putchar(c);
return 0;
}
3. 若输入的值是-125,则以下程序的运行结果是 。
#include
#include
void fun(int);
int main()
{int n;
scanf("%d",&n);
printf("%d=",n);
if(n<0) printf("-");
n=abs(n);
fun(n);
printf("n");
return 0;
}
void fun(int n)
{int k,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("%dn",n);
}
4. 下面add函数的功能是求两个参数的和,并将和值返回调用函数。函数中错
误的部分是 ,改正后为 。
void add(float a,float b)
{float c;
c=a+b;
return c;
}
5. 以下函数fun的功能是:统计一个数中位值为0的个数,以及位值为1的个数。
若输入111001,则输出为值为零的个数是2,位置为1的个数是4。请填空。
#include
void fun(long n)
{int coun0=0,coun1=0,m;
do
{m= ;
if(m==0) coun0++;
if(m==1) coun1++;
n= ;
}while(n);
printf("coun0=%d,coun1=%dn",coun0,coun1);
}
int main()
{long n;
printf("ninput n:n");
scanf("%ld",&n);
printf("n=%ldn",n);
fun(n);
return 0;
}
6. 以下函数fun的功能是:将输入的一个偶数写成两个素数之和的形式。例如,
若输入数值8,则输出8=3+5。请填空。
#include
#include
void fun(int a)
{int b,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= ;
else break;
for(c=2;c<=sqrt(d);c++) if(d%c==0) break;
if(c>sqrt(d)) printf("%d=%d+%dn",a,b,d);
}
}
int main()
{int a;
printf("ninput a:n");
scanf("%d",&a);
fun(a);
return 0;
}
7. 以下程序的功能是根据输入的y(Y)与n(N),在屏幕上分别显示出This is
YES. 与 This is NO.。请填空。
#include
void YesNo(char ch)
{switch(ch)
{case 'y':
case 'Y': printf("nThis is YES.n"); ;
case 'n':
case 'N': printf("nThis is NO.n");
}
}
int main()
{char ch;
printf("nEnter a char 'y','Y' or 'n','N':");
ch= ;
printf("ch:%c",ch);
YesNo(ch);
return 0;
}
8. 以下Check函数的功能是对value中的值进行四舍五入,若计算后的值与ponse
值相等,则显示WELL DONE!!,否则显示计算后的值。已有函数调用语句
Check(ponse,value);请填空。
#include
void Check(int ponse,float value)
{int val;
val= ;
printf("计算后的值:%d",val);
if( ) printf("nWELL DONE!!n");
else printf("nSorry the correct answer is %dn",val);
}
9. 以下程序的运行结果是“output:153 370 371 407”,该程序的功能
是 。
#include
int f(int n)
{int i,j,k;
i=n/100; j=n/10-i*10;k=n%10;
if(n==i*i*i+j*j*j+k*k*k) return n;
else return 0;
}
int main()
{int n,k;
printf("output: ");
for(n=100;n<1000;n++)
{k=f(n);
if(k!=0) printf("%5d",k);
}
printf("n");
return 0;
}
10. 若输入一个整数10,则以下程序的运行结果是 。
#include
int sub(int a);
int main()
{int a,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");
return 0;
}
int sub(int a)
{int c;
c=a%2;
return c;
}
11. 以下程序的功能是求3个数的最小公倍数。请填空。
#include
int max(int x,int y,int z)
{if(x>y && x>z) return x;
else if( ) return y;
else return z;
}
int main()
{int x1,x2,x3,i=1,j,x0;
printf("Input 3 numbers:");
scanf("%d%d%d",&x1,&x2,&x3);
x0=max(x1,x2,x3);
while(1)
{j=x0*i;
if( ) break;
i++;
}
printf("The zuixiaogongbei of three number %d,%d,%d is: %dn",x1,x2,x3,j);
return 0;
}
12. 函数gongyue的作用是求整数num1和num2的最大公约数,并返回该值。
请填空。
#include
int gongyue(int num1,int num2)
{int temp,a,b;
if(num1 num2)
{temp=num1;num1=num2;num2=temp;}
a=num1;b=num2;
while( )
{temp=a%b; a=b; b=temp;}
return a;
}
发布评论