C语言程序设计试题A文档格式.docx
《C语言程序设计试题A文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计试题A文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
{inta=3;
printf(“%d\n”,(a+=a-=a*a));
}
A)–6B)12C)0D)–12
6.设有如下程序段:
intx=2002,y=2003;
printf("
%d\n"
(x,y));
则以下叙述中正确的是()
A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出
B)运行时产生出错信息
C)输出值为2002
D)输出值为2003
7.以下不能正确定义二维数组的选项是()
A)inta[2][2]={{1},{2}};
B)inta[2][]={{1,2},{3,4},{5,6}};
C)inta[2][2]={{1},2,3};
D)inta[][2]={1,2,3,4};
8.能正确计算变量a所占内存字节数的表达式是()
unionU
{charst[4];
inti;
longl;
};
structAA
{intc;
unionUu;
}a;
A)sizeof(U)B)5sizeof(l)C)sizeof(AA)D)sizeof(u)
9.对于以下递归函数f,调用f(4),其返回值为()
intf(intn)
{if(n>
0)
returnf(n-1)+n;
else
return0;
A)10B)11C)0D)以上均不是
10.以下程序的运行结果是()
#defineMIN(x,y)(x)<
(y)?
(x):
(y)
main()
{inti=10,j=13,k;
k=10*MIN(i,j);
printf(“%d\n”,k);
}
A)10B)130C)100D)13
11.设有inti;
则表达式i=1,++i,++i||++i,i的值为()
A)4B)3C)2D)1
12.以下程序的运行结果是()
charstr[]=”ABC”,*p=str;
printf(“%d\n”,*(p+3));
A)67B)0C)字符‘C’的地址D)字符‘C’
13.以下程序的运行结果是()
{chara[]=”language”,b[]=”programe”;
char*p1,*p2;
intk;
p1=a;
p2=b;
for(k=0;
k<
=7;
k++)
if(*(p1+k)!
=*(p2+k))
printf(“%c”,*(p1+k));
}
A)gaeB)lanugC)languageD)programe
14.以下程序的运行结果是()
{intx[5]={1,3,5,7,9},*p,**pp;
p=x;
pp=&
p;
printf(“%d”,*(p++));
printf(“%d\n”,**pp);
A)33B)15C)13D)35
15.若有以下说明和语句,则下面表达式中值为1002的是()
structstudent
{intnum;
intage;
};
structstudentstu[3]={{1001,20},{1002,19},{1003,21}};
structstudent*p;
p=stu;
A)(p++)->
numB)(p++)->
ageC)(*p).numD)(*++p).num
二、填空题(共10分,每小题1分)
1.设有以下变量定义,并已赋确定的值,则表达式:
w*x+z-y所求得的数据类型为
charw;
intx;
floaty;
doublez;
2.当a=5,b=4,c=2时,表达式a>
b!
=c的值为
3.用for循环打印147101316192225,其语句应为
for(i=1;
i<
=9;
i++)printf(“%3d”,)
4.执行完下列语句段后,i值为______
inti,j;
j=10*(i=5);
i+=j*=i+2;
5.表达式~3&
(2&
3^4)的值为_______________
6.若有定义:
inta[3][4]={{1,2},{3,7,5},{4,6,8,10}};
则a[1][2]的值为,a[2][1]的值为
7.若有以下定义和语句,则++(*p)的值为
inta[4]={0,1,2,3},*p;
p=&
a[1];
8.若有定义:
inta[3][3]={2,4,6,8,10,12,14,16,18},(*p)[3];
a[1]则a[1][0]的值是,*(*(p+1)+1)的值是
9.对于charc;
若已知其值为小写字母,将其转换为相应大写字母的表达式为
10.若有以下定义和语句,则p+1表示
ints[2][3]={0},(*p)[3];
p=s;
三、分析程序,写出结果(共18分,每小题3分)
1.#include<
stdio.h>
voidmain(void)
{intnum=0;
while(num<
=2)
{num++;
printf(“%d\n”,num);
2.#include<
voidmain(viod)
{inta,s,n,count;
a=2;
s=0;
n=1;
count=1;
while(count<
=7){n=n*a;
s=s+n;
++count;
printf(“s=%d”,s);
3.#include<
voidf(inty,int*x)
{y=y+*x;
*x=*x+y;
{intx=2,y=4;
f(y,&
x);
printf(“%d%d\n”,x,y);
4.#include<
voidmain(void)
{inti,j,row,col,m;
inta[3][4]={{1,2,3,4},{9,8,7,6},{-1,-2,0,5}};
m=a[0][0];
for(i=0;
i<
3;
i++)
for(j=0;
j<
4;
j++)
if(a[i][j]>
m)
{m=a[i][j];
row=i;
col=j;
printf(“m=%d,row=%d,col=%d\n”,m,row,col);
5.#include<
intf(intn)
{staticints=2;
while(n)s*=n--;
returns;
voidmain(void)
{inti,j;
i=f
(2);
j=f(3);
printf("
\nTheoutputof3.5is:
\n"
);
i=%dj=%d\n"
i,j);
6.#include<
{intb[2][3]={2,4,6,8,10,12};
inta[2][3]={2,3,4,4,5,6};
int*p,k;
p=a[0];
6;
{printf(“%4d”,*p);
p++;
四、指出下面程序中的错误并改正(注:
每题仅有一个错误.共10分,每小题2分)
{c;
c=getchar();
putchar(c);
{char*str;
*str=”abc”;
printf(“%s\n”,str);
3.#include<
voidmain(void)
{charx=’a’;
printf(“%f\n”,x=x<
<
=1);
intmax(intx,inty)
{intz;
if(x>
y)z=x;
elsez=y;
return(z);
{inta,*b,c;
scanf(“%d,%d”,&
a,&
b);
c=max(a,*b);
printf(“max=%d”,c);
5.#include<
{inta,b;
scanf(“%d%d”,a,b);
a=a+b;
printf(“%d\n”,a);
五、在下面程序中横线处填上适当字句,使其能正确执行(共12分,每小题4分)
1.有以下程序段:
s=1.0;
for(k=1;
=n;
k++)s=s+1.0/(k*(k+1));
printf(“%f\n”,s);
请填空,使下面的程序段的功能完全与之相同。
s=0.0;
d=1.0;
k=0;
do
{s=s+d;
_________;
d=1.0/(k*(k+1));
while(______);
2.以下程序的功能是:
通过指针操作,找出3个整数中的最小值并输出
#include<
{int*a,*b,*c,num,x,y,z;
a=&
x;
b=&
y,c=&
z;
scanf(“%d%d%d”,a,b,c);
num=*a;
if(*a>
*b);
if(num>
*c);
printf(“num=%d\n”,num);
3.请仔细阅读程序段A,在程序段B中空栏中填入正确的内容,使程序段A与B有相同的功能。
程序A:
intf(intn)
{
if(n<
=1)
returnn;
else
returnf(n-1)+f(n-2);
_______;
t0=0;
t1=1;
t=n;
while(______)
t=____;
t0=t1;
t1=t;
n--;
return____;
六、编程(共20分,第1小题8分,第2小题12分)
1.编写一程序用于计算1-22+32-42+…+992-1002
2.下面findmax函数将找出数字中的最大元素及下标值和地址值。
请按下编写*findmax()函数。
int*findmax(int*s,intt,int*k)
{
{inta[10]={12,23,34,45,56,67,,78,89,11,22},k,*add;
add=findmax(a,10,&
k);
printf(“%d,%d,%0\n”,a[k],k,add);