CA考试中文.docx
- 文档编号:30057868
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:13
- 大小:23.59KB
CA考试中文.docx
《CA考试中文.docx》由会员分享,可在线阅读,更多相关《CA考试中文.docx(13页珍藏版)》请在冰豆网上搜索。
CA考试中文
CA考试中文
————————————————————————————————作者:
————————————————————————————————日期:
浙江大学2009–2010学年秋冬学期
《程序设计基础及实验》课程期末考试试卷
课程号:
21186020__,开课学院:
_计算机学院__
考试试卷:
√A卷、B卷(请在选定项上打√)
考试形式:
√闭、开卷(请在选定项上打√),允许带____∕__入场
考试日期:
2010年01月27日,考试时间:
120分钟
诚信考试,沉着应考,杜绝违纪。
考生姓名:
学号:
所属院系:
_
(注意:
答题内容必须写在答题卷上,写在本试题卷上无效)
试题一、单选题(每小题2分,共20分)
1.在C语言中,longint型数据在内存中的存储形式是。
A.补码
B.反码
C.原码
D.ASCII码
2.假设有定义:
intk;下面程序段编译运行的情况是_____。
for(k=1;k;k++)printf("%d",k);
A.编译错误
B.能运行,是死循环
C.能运行,正常结束
D.以上说法都不对
3.循环语句while(!
x&&!
y)中的循环条件表达式等价于______。
A.x=0&&y=0
B.!
(x||y)
C.!
(x==0||y==0)
D.!
(x==0&&y==0)
4.对于intx,y;语句if(x<0)y=-1;elseif(!
x)y=0;elsey=1;等价于_____。
A.if(x>=0)y=0;if(x)y=1;elsey=-1;
B.y=0;if(x>=0)if(x)y=1;elsey=-1;
C.if(x!
=0)if(x>0)y=1;elsey=-1;
D.y=0;if(x!
=0)if(x>0)y=1;elsey=-1;
5.语句if(4/5>3/4)a=1;elsea=0;运行后,a的值是_____。
A.1
B.0
C.编译出错
D.与编译器相关
6.下列描述不正确的是_______。
A.外部变量定义在函数外部B.局部变量定义在函数内部
C.自动变量定义在函数内部D.静态变量定义在函数外部
7.假设sizeof(int)的值为4,对数组定义:
inta[3][6];则sizeof(a[0])的值为______。
A.12B.4C.24D.18
8.有如下定义:
intx[]={1,2,3},*p=x,y;则y=*p++;相当于_____。
A.y=x[0],p++
B.y=1,x++
C.y=*(++p)
y=2,p=x+1
9.根据声明intp[5],*a[5];下列表达式正确的是______。
A.p=a
B.p[0]=a
C.*(a+1)=p
D.a[0]=2
10.有如下定义,下列赋值正确的是________。
structnode{
chars[10];
intk;
structnode*next;
}p[5],*q=p;
A.q.k=2
B.p[0]->k=2
C.(p->s)[0]=‘a’
D.q->s=“a”
试题二、填空题(每小题2分,共30分)
1.表示“当x的取值在[-10,0]或[10,15]的范围内为真,否则为假”的C语言表达式是_____。
2.若inta=6,b=0,c=3,则表达式a&&b||b-c的结果是_____。
3.表达式!
!
”2010-01-27”的值为_______。
4.假设字符变量ch中存放有大写英文字母,将其转换为相应的小写英文字母的表达式是______。
5.执行下面程序代码后,s值为_____。
inti,s;
for(i=5,s=0;i>s;i--){
if(i==0)break;
if(i%2)continue;
s+=--i;
}
6.执行下面程序代码的输出结果是_____。
char*s1="abcd",*s2="abbb";
while(*s1++==*s2++);
printf("%d#",*s1-*s2);
7.执行下面程序代码后,s值为_____。
inta=1,b=2,s=0;
switch(a>b){
default:
switch(s){
case0:
s+=1;
default:
s+=2;break;
}
case1:
s+=3;break;
}
8.已知字符0和a的ASCII分别为48和97,当输入12e<回车>时,下列程序输出是_____。
charc;
ints=0;
while((c=getchar())!
='\n')
if('0'<=c<='9')
s=s*10+c-'0';
printf("%d\n",s);
9.下列命令行参数程序生成的执行程序为command.exe,执行commandabc111222<回车>,输出结果是_______。
#include
main(intargc,char*argv[])
{
argc--;
while(--argc)
printf("%s#",argv[argc]);
}
10.下列程序段的输出是_______。
#defineDF(a,b)(a+2*b)
ints=5;
intk=DF(s+1,s-3);
printf("%d",k);
11.下列程序段输出_______。
intfun(intx)
{
return(x<3?
1:
(fun(x-1)+2*fun(x-2)));
}
intmain()
{
printf("%d",fun(4)+fun(5));
}
12.下列程序段输出_______。
inta=1;intb=2;
voidchange(int*p)
{
int*temp=&b;
p=temp;
*p=3;
}
intmain()
{
int*p=&a;
change(p);
printf("%d",*p);
}
13.用typedef写出类型定义,使得NEWSTR表示含有20个元素的字符数组类型。
14.有定义:
inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*q[4],k;则下列程序段的输出是_______。
for(k=0;k<4;k++)q[k]=&a[k*3];
printf("%d#",q[3][0]);
15.下列程序段执行后,z的值是_______。
staticstruct{
intx,y[3];
}a[3]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*p=&a[-1];
intz;
z=*((int*)(++p+1)-1);
试题三、程序阅读题(每小题5分,共30分)
1.下列程序的输出是_______。
#include
intx,y,z,w;
voidp(int*y,intx)
{
staticintw;
*y++;x++;w=x+*--y;
printf("%d#%d#%d#%d#",x,*y,z,w);
}
intmain(void)
{
intx,y,z,w;
x=y=z=w=1;
do{
staticintx;
p(&x,y);
printf("%d#%d#%d#%d#",x,y,z,w);
}while(0);
return0;
}
2.下列程序的输出是_______。
#include
#include
intmain()
{
chara[20]="cehiknqtw";
char*s="fbla",*p;
inti,j;
for(p=s;*p;p++){
j=0;
while(*p>=a[j]&&a[j]!
='\0')j++;
for(i=strlen(a);i>=j;i--)a[i+1]=a[i];
a[j]=*p;
}
puts(a);
return0;
}
3.有一单向链表h如下图所示,表示整数序列(1,1,2,4,4,3,5,5,5,4)。
h
有关变量定义:
structnode{
intinfo;
structnode*next;
}*h,*p,*q;
现执行以下程序段,则输出的结果是:
_______。
q=h;
if(h&&h->next!
=NULL)p=h->next;
elsereturn0;
while(p!
=NULL){
if(q->info!
=p->info){
q=p;p=p->next;
}else{
p=p->next;free(q->next);q->next=p;
}
}
p=h;
while(p!
=NULL){
printf("%d",p->info);
p=p->next;
}
4.当输入:
3123456789时,下列程序的输出是_______。
#include
#defineN10
voidmt(int*a,intn)
{
inti,j,t;
for(i=0;i for(j=i+1;j t=*(a+i*N+j);*(a+i*N+j)=*(a+j*N+i);*(a+N*j+i)=t; } return; } intmain() { inta[N][N],n,i,j; scanf("%d",&n); for(i=0;i for(j=0;j scanf("%d",&a[i][j]); mt(&a[0][0],n); for(i=0;i for(j=0;j printf("%d#",a[i][j]); } return0; } 5.当输入: 532658<回车>时,下列程序的输出为_______。 #include #include voidmain() { int*p,flag,i,n,s; scanf("%d",&n); p=(int*)malloc(n*sizeof(int)); for(i=0;i s=*p; flag=1; while(flag){ for(i=1;i if(s%*(p+i)! =0){ s+=*p;break; } if(i==n)flag=0; } printf("%d",s); free(p); } 6.当输入: 1005125181216<回车>时,下列程序的输出为_______。 #include char*p="0123456789ABCDEFGHIJKM"; voidfun(intn,intm); voidmain() { intn,m,i; for(i=0;i<3;i++){ scanf("%d%d",&n,&m); fun(n,m); printf("#"); } } voidfun(intn,intm) { if(n/m)fun(n/m,m); printf("%c",*(p+n%m)); } 试题四、程序(段)填空题(每空2分,共20分) 1.已知一个单向链表h。 函数KthBackNode(h,k)查找链表h中倒数第k(k>0)个位置上的结点。 若查找成功,返回该结点的data域值,否则返回-1。 该程序思路: 指针p、q初始均指向第一个结点,p指针先沿链表移动,当与q指针相差k个结点时,p、q指针同步移动。 structnode{ intdata; structnode*next; }; intKthBackNode(structnode*h,intk)/*h为表头指针*/ {___ (1)____; intcount=0; p=q=h; while(p! =NULL&&count p=p->next; ___ (2)____; } while(p! =NULL){ ___(3)____; q=q->next; } if(count return___(4)____; } 2.下列程序通过命令行参数方式(progfile1file2)将两个文本文件中的两个从小到大的整数序列合并为一个从小到大的序列。 注: fscanf()函数返回值为读入的整数个数;end1和end2分别用于标记两个文件的整数是否读完(值1代表读完)。 例如: 如果file1和file2文件中的内容分别为: 123和0256,则输出为: 0122356。 #include intmain(intargc,char*argv[]) { ___(5)____; intn,m,end1=0,end2=0; if(___(6)____){ printf("Usage: progfile1file2\n");exit(0); } if((fp1=fopen(argv[1],"r"))==NULL||(___(7)____)){ printf("Cannotopenfiles\n");exit(0); } if(fscanf(fp1,"%d",&n)! =1)end1=1; if(fscanf(fp2,"%d",&m)! =1)end2=1; while(___(8)____) if(n>m){ printf("%d",m); if(fscanf(fp2,"%d",&m)! =1)end2=1; }else{ printf("%d",n); ___(9)____; } while(! end1){ printf("%d",n);if(fscanf(fp1,"%d",&n)! =1)end1=1; } while(! end2){ printf("%d",m);if(fscanf(fp2,"%d",&m)! =1)end2=1; } ___(10)____;/*关闭打开的文件*/ return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CA 考试 中文