一、选择题
1. 以下程序的运行结果是         
#include<stdio.h>
int fun(int n)
{int m=0,f=-1,i;
for(i=1;i<=n;i++)
{m=m+i*f;
  f=-f;
}
return m;
}
int main()
{printf("m=%d\n",fun(10));
return 0;
}
A.m=5          B.m=-6            C.m=6            D.m=-5
2. C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是         
A.地址传递
B.单项值传递
C.由实参传给形参,再由形参传回给实参
D.由用户指定传递方式
3. 以下程序有语法性错误,有关错误原因的正确说法是         
#include<stdio.h>
int main()
{int G=5,k;
void prt_char ( );
...
k=prt_char(G);
...
}
A.语句void prt_char( ); 有错,它是函数调用语句,不能用void说明
B.变量名不能使用大写字母
C.函数说明和函数调用语句之间有矛盾
D.函数名不能使用下划线
4. 以下程序的运行结果是         
#include<stdio.h>
int fun(int a,int b)
{if(a>b) return (a+b);
else return (a-b);
}
int main()
{int x=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
printf("%d\n",r);
return 0;
}
A.-16          B.-17          C.17          D.16
5. 以下程序的功能是计算函数F(x,y,z) = (x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。
#include<stdio.h>
#include<math.h>
float f(float,float);
int main( )
{float x,y,z,sum;
scanf("%f%f%f",&x,&y,&z);
sum=f(            )+f(              );
printf("sum=%f\n",sum);
return 0;
}
float f(float a,float b)
{float value;
  value=a/b;
  return value;
}
A.x-y, x+y        B.x+y, x-y        C.z+y, z-y        D.z-y, z+y
A.x-y, x+y        B.x+y, x-y        C.z+y, z-y        D.z-y, z+y
6. 以下程序可选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。请选择填空。
#include<stdio.h>
int sub(int k,int h)
{int a1,a2;
a2=          ;
a1=k -         ;
if((k%3==0 && a2==5) || (k%3==0 && a1==5))
{printf("%5d",k);
  h++;
  return h;
}
else return -1;
}
int main()
{int n=0,k,m;
for(k=10;k<=99;k++)
{m=sub(k,n);
  if(m!=-1) n=m;
}
printf("\nn=%d\n",n);
return 0;
}
A.k*10        B.k%10          C.k/10        D.k*10%10
A.a2*10        B.a2              C.a2/10      D.a2%10
7. 若用数组名作为函数调用的实参,则传递给形参的是         
A.数组的首地址
B.数组的第一个元素的值
C.数组中全部元素的值
D.数组元素的个数
8. 折半查法的思路是:先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值。如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中间点之后的元素;反之,测试中间点之前的元素,测试方法同前。函数binary的作用是应用折半查法
从存有10个有序整数的a数组中对关键字m进行查,若到,返回其下标值;反之,返回-1。请选择填空。
#include<stdio.h>
int binary(int a[10],int m)
{int low=0,high=9,mid;
while(low<=high)
{mid=(low+high)/2;
  if(m<a[mid])             ;
  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("%d\n",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<stdio.h>
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时,该程序的运行结果是         
c语言搜题软件推荐
#include<stdio.h>
                       
int main()
{double x,y;
scanf("%lf%lf",&x,&y);
printf("%lf\n",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<stdio.h>
#include<string.h>
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<stdio.h>
#include<math.h>
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("%d\n",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<stdio.h>
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=%d\n",coun0,coun1);
}
int main()
{long n;
printf("\ninput n:\n");
scanf("%ld",&n);
printf("n=%ld\n",n);
fun(n);
return 0;
}
6. 以下函数fun的功能是:将输入的一个偶数写成两个素数之和的形式。例如,若输入数值8,则输出8=3+5。请填空。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。