查文林科技月月评文档格式.docx
《查文林科技月月评文档格式.docx》由会员分享,可在线阅读,更多相关《查文林科技月月评文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
i++)s+=i;
returns;
}
A、21B、16C、15D、8
8.下列语句定义x为指向int类型变量a的指针,其中哪一个是正确的。
A、inta,*x=a;
B、inta,*x=&
a;
C、int*x=&
a,a;
D、inta,x=a;
9.声明语句为“inta[3][4];
”,下列表达式中与数组元素a[2][1]等价的是。
A、*(a[2]+1)B、a[9]C、*(a[1]+2)D、*(*(a+2))+1
10.对于以下递归函数f,调用f
(2)的返回值是。
intf(intx)
{return((x<
=0)?
x:
f(x-1)+f(x-2));
}
A、-1B、0C、1D、3
11.下列程序的输出结果是。
#include<
stdio.h>
intf(intn)
{staticintk,s;
n--;
for(k=n;
k>
0;
k--)
s+=k;
returns;
}
voidmain()
{intk;
k=f(3);
printf("
(%d,%d)"
k,f(k));
}
A、(3,3)B、(6,6)C、(3,6)D、(6,12)
12.下列程序段的输出结果是。
int*p,*q,k=5,j=10;
p=&
j;
q=&
k;
p=q;
(*p)++;
printf("
%d"
*q);
A、5B、6C、10D、11
13.不正确的赋值或赋初值的方式是。
A、charstr[6]={'
s'
'
t'
r'
i'
n'
g'
};
B、charstr[10]="
string"
;
C、char*str="
D、charstr[10];
str="
;
14.下列程序段的输出结果是。
intc[]={1,7,12};
int*k=c+1;
*k++);
A、2B、7C、8D、12
15.下列程序段的输出结果是。
char*st[]={"
abcd"
efgh"
ijkl"
mnop"
},**p=st;
p++;
printf(*p+1);
A、cdB、fghC、ijklD、出错
16.下列程序的输出结果是。
#include<
voidp(int*x,int*y)
{++x;
--*y;
voidmain()
{intx=0,y=3;
p(&
x,&
y);
printf("
x,y);
A、(0,2)B、(0,3)C、(1,3)D、(1,2)
17.对于以下递归函数f,调用f(3)的返回值是。
{if(n)returnf(n-1)+n;
elsereturnn;
A、10B、6C、3D、0
18.下列程序的输出结果是。
#include<
intx;
intp(int*y)
{++*y;
returnx-1;
voidmain()
{inty;
y=p(&x);
printf(”(%d,%d)”,x,y);
}
A、(-1,0)B、(1,-1)C、(1,0)D、出错
19.下列程序段的输出结果是(33)。
inti
intf(intx)
{staticintk=1;
x+=k++;
returnx;
i+=f(f
(1));
printf(“%d\n”,i);
A、2B、1C、4D、3
20.下列程序段的输出结果是。
int*k=c;
*++k);
A、2B、7C、1D、以上均不对
二、判断题
1.函数中不可以没有return语句。
2.传值调用的形参只有在被调用时才被创建(分配存储单元)。
3.传值调用时,实参可以是变量名,也可以是表达式。
4.函数f可以用f(f(x))形式调用,因此,f是递归函数。
5.在C语言程序中,在main函数中定义的变量称为全局变量。
6.在C程序中,函数既可以嵌套定义,也可以嵌套调用。
三、阅读程序,写运行结果
1.对下列函数f,计算写出f(f(4))的值。
{staticintk=0;
returnx;
2.写出下列程序的输出结果
#include<
{intx[4][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,10}};
inti,j;
for(i=0;
i<
4;
i++)
for(j=0;
j<
j++)
*(*(x+i)+j)/=*(*(x+i)+i);
{for(j=0;
j++)printf("
%3d"
*(*(x+i)+j));
putchar('
\n'
);
3.写出下列程序的输出结果
voidprn(inta,intb,intc,intmax,intmin)
{max=(max=a>
b?
a:
b)>
c?
max:
c;
min=(min=a<
b)<
min:
max=%dmin=%d\n"
max,min);
{intx,y;
x=y=0;
prn(19,23,-4,x,y);
x,y);
}
4.写出下列程序的输出结果
f(intx)
{if(x==0)return0;
elsereturn(x%10+f(x/10));
main()
{printf("
%d,%d,"
f(0),f(267));
5.写出下列程序的输出结果
#include<
#include<
string.h>
voidmain()
{charc,*a="
Office"
inti;
for(i=0;
strlen(a)/2;
i++)
{c=*a;
strcpy(a,a+1);
a[strlen(a)]=c;
a[strlen(a)+1]='
\0'
puts(a);
}
6.写出下列程序的输出结果
voidsort(int*a,intn)
{inti,k,m,t;
for(i=0;
i<
n-1;
i++){
k=i;
for(m=i+1;
m<
n;
m++)
if(a[k]<
a[m])k=m;
t=a[k];
a[k]=a[i];
a[i]=t;
voidmain()
{
intk,a[]={1,2,3,4};
sort(a,3);
for(k=0;
k<
4;
k++)
%d,"
a[k]);
7.输入elephant?
后,写出下面程序的输出结果。
{inti=0,k,ch;
staticintnum[5];
charalpha[]={‘a’,‘e’,‘i’,‘o’,‘u’},in[80];
while((in[i++]=getchar())!
=’?
’);
in[i]=’\0’;
i=0;
while((in[i])
{for(k=0;
k<
5;
k++)
if(in[i]==alpha[k])
{num[k]++;
break;
i++;
for(k=0;
if(num[k])
%c%d,"
alpha[k],num[k]);
\n"
);
四、程序填空
1.下列程序求二维数组a中的最大值与b中的最大值之差,填空将下列程序补充完整。
floatfind_max(
(1))
{inti,j;
floatmax=*x;
m;
if(*(x+i*m+j))>
max)max=
(2)
returnmax;
{float(3);
i++)for(j=0;
j++)scanf("
%f"
&
a[i][j]);
6;
b[i][j]);
%f\n"
find_max((4))-find_max(b[0],6,4));
2.输入100个整数,将其中的前20个数从小到大排序,然后输出这100个数。
#include"
stdio.h"
voidsort(
(1))
if(
(2))k=m;
(3)
intk,a[100];
100;
scanf("
&
a[k]);
(4);
for(k=0;
%d"
(1)A、inta,intnB、int*a,intnC、int*a,int*nD、inta[]
(2)A、a[m-1]>
a[m]B、a[m-1]<
a[m]C、a[k]<
a[m]D、a[k]>
a[m]
(3)A、a[k]=a[i];
a[i]=a[k];
B、a[k]=t;
C、t=a[k];
D、a[i]=a[k];
(4)A、sort(a,20)B、sort(a[],20)C、sort(a[20])D、sort(a[])
3.下面程序用于计算f(k,n)=1k+2k+…+nk,其中函数power(m,n)计算mn,函数sum(k,n)计算f(k,n)。
longsum(intk,intn)
main()
{intk,n;
scanf("
%d%d"
n,&
k);
printf(“f(%d,%d)=%d\n”,k,n,sum(k,n));
longpower(intm,intn)
{inti;
(1);
for(i=1;
=n;
(2);
returnp;
longsum(intk,intn)
(3);
(4);
returns;
(1)A、longp=1B、intpower=1C、longp=0D、intp=0
(2)A、p=p*nB、p=p*mC、p=p*iD、p=p+m
(3)A、ints=1B、ints=0C、longs=0D、longs=1
(4)A、s+=power(k,i)B、s+=power(i,k)C、s*=power(i,k)D、s*=power(k,i)
五、编程
1.编制递归函数doublemypower(intn,floatx),计算并返回xn。
2.编制函数,在主调函数的一维数组中查找最大值及该元素下标、最小值及该元素下标。
请适当选择参数,使所求结果能传递到主调函数。
3.输入一个正整数n,求1+1/2!
+1/3!
+……1/n!
的值,要求定义并调用函数fact(n)计算n的阶乘,函数返回值的类型是单精度浮点型。
5.两个正整数m和n(n>
=m),求从m到n之间(包括m和n)所有素数的和。
要求定义并调用函数isprimek来判断x是否为素数(素数是除1以外只能被1或自身整除的自然数)。
参考答案
1.1A1.2B1.3顺序、分支、循环结构1.4[1].C[2].OBJ[3].EXE
3.1(sqrt
(2)+exp(x))/(log(x)+abs(x))3.2A3.3B3.4×
3.510,12,a
3.6A3.7A3.8C3.9C3.102.43.11A3.12D3.13–264
3.146,3,93.1533.16×
4.1B4.21234.3B5.1√
5.2×
5.3√5.4√5.5B5.6D5.7C5.8d=205.9first
third
5.10C6.1B6.2D6.3C6.4A6.5C6.6B6.7C
6.8*6.9D6.10B
**
***
****