一、选择题
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小时内删除。
发表评论