全国自考计算机基础与程序设计考前密卷02275含答案.docx
《全国自考计算机基础与程序设计考前密卷02275含答案.docx》由会员分享,可在线阅读,更多相关《全国自考计算机基础与程序设计考前密卷02275含答案.docx(28页珍藏版)》请在冰点文库上搜索。
全国自考计算机基础与程序设计考前密卷02275含答案
2014年10月全国自考计算机基础与程序设计考前密卷02275(含答案)
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
第1题设有定义语句“double d1,d2;”,则表达式“d1=1,d2=d1+5/2”的值是【】
A.1
B.3
C.3.0
D.3.5
【正确答案】C
【你的答案】
本题分数1分
第2题设有定义语句“int s[]={2,4,6,8,10},*p=s;”,则值为8的表达式是【】
A.*p+3
B.*p+4
C.*(p+4)
D.*(s+3)
【正确答案】D
【你的答案】
本题分数1分
第3题能正确表达逻辑关系“-1<x<1并且-1<y<1”的表达式是【】
A.(-1<x<1)&&(-1<y<1)
B.(-1<x<1)&(-1<y<1)
C.((-1<x)||(x<1))&&((-1<y)||(y<1))
D.(-1<x)&&(x<1)&&(-1<y)&&(y<1)
【正确答案】D
【你的答案】
本题分数1分
第4题下列关于结构型变量的定义语句中,错误的是【】
【正确答案】C
【你的答案】
本题分数1分
第5题feof函数用来判断文件是否结束,如果文件没有结束,则返回值是【】
A.0
B.-1
C.1
D.EOF
【正确答案】A
【你的答案】
本题分数1分
第6题设有如下定义:
struck sk
{ int a;
float b;
} data;
int *p;
若要使p指向data中的a域,正确的赋值语句是【】
A.p=&a;
B.p=data.a;
C.p=&data.a;
D.*p=data.a;
【正确答案】B
【你的答案】
本题分数1分
第7题在下述程序中,判断语句i>j共执行的次数是【】
main()
{ int i=0,j=10,k=2,s=0;
for(;;)
{ i+=k;
if(i>j)
{ printf("%d",s);
break;
}s+=i;
}
}
A.4
B.7
C.5
D.6
【正确答案】D
【你的答案】
本题分数1分
第8题C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符【】
A.必须为字母
B.必须为下划线
C.必须为字母或下划线
D.可以是字母,数字和下划线中任一字符
【正确答案】C
【你的答案】
本题分数1分
第9题下列程序的输出结果是【】
main()
{
int a=2;a%=4-1;
printf("%d",a);a+=a*=a-=a*=3;
printf(",%d",a);
}
A.2,12
B.-1,12
C.1,0
D.2,0
【正确答案】D
【你的答案】
本题分数1分
第10题若运行时给变量x输入12,则以下程序的运行结果是【】
main()
{ int x,y;
scanf("%d",&x);
y=x>12?
x+10:
x-12;
printf("%d\n",y);
}
A.0
B.22
C.12
D.10
【正确答案】A
【你的答案】
本题分数1分
第11题有以下程序
#define F(X,Y) (X)*(Y)
main()
{ int a=3,b=4;
printf("%d\n",F(a++,b++));
}
程序运行后的输出结果是【】
A.12
B.15
C.16
D.20
【正确答案】A
【你的答案】
本题分数1分
第12题有以下程序
main()
{ char a[ ]={'a','b','c','d','e','f','g','h','\0'};int i,j;
i=sizeof(a);j=strlen(a);
printf("%d,%d\b",i,j);
}
程序运行后的输出结果是【】
A.9,9
B.8,9
C.1,8
D.9,8
【正确答案】D
【你的答案】
本题分数1分
第13题已知学生记录描述为
struct student
{ int no;
char name[20],sex;
struct
{ int year,month,day;
} birth;
};
struct student s;
设变量s中的“生日”是“1984年11月12日”,对“birth”正确赋值的程序段是【】
A.year=1984;month=11;day=12;
B.s.year=1984;s.month=11;s.day=12;
C.birth.year=1984;birth.month=11;birth.day=12;
D.s.birth.year=1984;s.birth.month=11;s.birth.day=12;
【正确答案】D
【你的答案】
本题分数1分
第14题请选出正确的程序段【】
【正确答案】C
【你的答案】
本题分数1分
第15题C语言规定,函数返回值的类型是由【】
A.return语句中的表达式类型所决定
B.调用该函数时的主调函数类型所决定
C.调用该函数时系统临时决定
D.在定义该函数时所指定的函数类型所决定
【正确答案】D
【你的答案】
本题分数1分
第16题如下程序
main()
{
int a=2,b=-1,c=2;
if(a
if(b<0)c=0;
else c++;
printf("%d\n",c);
}该程序的输出结果是【】
A.0
B.1
C.2
D.3
【正确答案】C
【你的答案】
本题分数1分
第17题设x,y均为整型变量,且x=10 y=3,则以下语句的输出结果是【】
printf("%d,%d\n",x--,--y);
A.10,3
B.9,3
C.9,2
D.10,2
【正确答案】D
【你的答案】
本题分数1分
第18题已知各变量的类型说明如下:
int k,a,b;
unsigned long w=5;
double x=1.42;
则以下不符合C语言语法的表达式是【】
A.x%(-3)
B.w+=-2
C.k=(a=2,b=3,a+b)
D.a+=a-=(b=4)*(a=3)
【正确答案】A
【你的答案】
本题分数1分
第19题下面程序的输出结果为【】
main()
{ int a,b;b=(a=3*5,a*4,a*5);
printf("%d",b);
}
A.60
B.75
C.65
D.无确定值
【正确答案】B
【你的答案】
本题分数1分
第20题下面程序的执行结果是【】
#define SUM(X) X*X
main()
{
int a=6;int i=1,j=2;
a+=SUM(i+j)/SUM(i+j);
printf("%d\n",a);
}
A.15
B.2
C.7
D.0
【正确答案】A
二、多项选择题(本大题共5小题,每小题2分,共10分)在每小题列出的五个备选项中至少有两个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选、少选或未选均无分。
第1题在C语言中,属于正确的转义符有【】
A.\n
B.\t
C.\f
D.\b
E./a
【正确答案】ABCD
【你的答案】
本题分数2分
第2题下列数据中,合法的C语言实型数据的是【】
A.0.123
B.123e3
C.2.1e3.5
D.789.0
E.10.369
【正确答案】ABDE
【你的答案】
本题分数2分
第3题下列字符列中,不是用来表达转义字符的是【】
A.\\
B.\'
C.074
D.\0
E.n
【正确答案】CE
【你的答案】
本题分数2分
第4题若有说明:
int a[][4]={0,0};则下面不正确的叙述是【】
A.数组a的每个元素都可得到初值0
B.二维数组a的第一维大小为1
C.当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小
D.只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值
E.此题语法有错误
【正确答案】DE
【你的答案】
本题分数2分
第5题若有定义:
char *st="how are you";下列程序段中错误的是【】
A.chara[11],*p;strcpy(p=a+1,&st[4]);
B.chara[11];strcpy(++a,st);
C.chara[11];strcpy(a,st);
D.chara[],*p;strcpy(p=&a[1],st+2);
E.chara[11],*p=&a[1];strcpy(p,st);
【正确答案】ABE
【你的答案】
三、简答题(本大题共4小题,每小题4分,共16分)
第1题符号"a"和'a'的区别是什么?
【正确答案】(P29)'a'和"a"分别是字符常量和字符串常量,'a'存储时占用一个字节,而"a"包含字符a和一个转义字符'\\0',存储时占用两个字节。
【你的答案】
本题分数4分
你的得分
修改分数
第2题C语言中常见的语句有哪些?
【正确答案】(P44)C语句可分为以下五类:
(1)表达式语句
(2)函数调用语句
(3)控制语句
(4)复合语句
(5)空语句
【你的答案】
本题分数4分
你的得分
修改分数
第3题试简述给一维数组元素赋值有哪些方法?
【正确答案】(P86)一维数组初始化的方法概括起来有三种方法:
(1)对所有元素赋初值。
如:
int a[3]={6,8,10};
(2)对部分元素赋初值。
如:
int a[5]={6,5,3};
(3)对所有元素赋初值时,可以省略数组的长度。
如:
int a[]={6,8,10};
【你的答案】
本题分数4分
你的得分
修改分数
第4题引用结构体变量成员的形式是什么样的?
【正确答案】(P162)引用结构体成员的方式:
结构体变量名.成员名。
“.”是“成员运算符”(分量运算符),如果成员本身又属一个结构体类型,则要若干个成员运算符,一级一级地找到最低一级的成员。
只能对最低级的成员进行赋值或存取以及运算。
【你的答案】
四、阅读分析题(本大题共6小题,每小题5分,共30分)
第1题下面程序的运行结果是_________
main()
{ int i,a[5];
for(i=0;i<5;i++)
a[i]=9*(i-2+4*(i>2))%5;
for(i=4;i>=0;i--)
printf("%3d",a[i]);
}
【正确答案】(P71)400-4-3
[解析]我们可以按照程序中语句执行的顺序,记录各个变量及数组元素值的方法来解决这种阅读程序写运行结果的问题。
首先执行第1个for循环。
i=0, i<5的条件成立,执行循环体。
a[0]=9*(0-2+4*(0>2))%5
=9*(-2)%5=-18%5
=-3
i=1,i<5的条件成立,执行循环体。
a[1]=9*(1-2十4*(1>2))%5
=9*(-1)%5=-9%5
=-4
i=2,i<5的条件成立,执行循环体。
a[2]=9*(2-2十4*(2>2))%5
=9*(0)%5=0%5
=0
i=3,i<5的条件成立,执行循环体。
a[3]=9*(3-2+4*(3>2))%5
=9*(5)%5=45%5
=0
i=4,i<5的条件成立,执行循环体。
a[4]=9*(4-2+4*(4>2))%5
=9*(6)%5=54%5
=4
i=5,i<5的条件不成立,退出第1个for循环。
注意,计算中的“i>2”是关系运算,结果只能为1或0。
“x%5”是模运算,结果是x除5的余数,且余数的符号和x符号相同。
再执行第2个for循环。
i=4,i>=0的条件成立,执行循环体。
输出数组元素a[4]的值,等于4
i=3,i>=0的条件成立,执行循环体。
输出数组元素a[3]的值,等于0
i=2,1>=0的条件成立,执行循环体。
输出数组元素a[2]的位,等于0
i=1,i>=0的条件成立,执行循环体。
输出数组元素a[1]的值,等于-4
i=0,1>=0的条件成立,执行循环体。
输出数组元素a[0]的值,等于-3
i=-1,i>=0的条件不成立,退出第2个for循环。
【你的答案】
本题分数5分
你的得分
修改分数
第2题有以下程序:
#include
union pw
{ int i;
char ch[2];}a;
main()
{a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);}
程序运行后的输出结果是_____________
【正确答案】(P177)13
[解析]本题中,首先定义了一个共用体pw,其中有两个域:
整型变量i和字符数组ch,因为共用体中的域是共享内存空间的,又数组的元素由低到高存储:
ch[0]在低字节,ch[1]在高字节。
整型变量i占两个字节,高位与ch[1]共用存储空间,低位与ch[0]共用存储空间。
而高位ch[1]的值为0,所以输出的成员变量i的值就是ch[0]的值13。
【你的答案】
本题分数5分
你的得分
修改分数
第3题以下程序的运行结果是_____________。
#include "stdio.h"
main()
{
int a,b,c,s,w,t;
s=w=t=0;
a= -1; b=3; c=3;
if (c>0) s=a+b;
if (a<=0)
{ if (b>0)
if (c<=0) w=a-b;
}
else if (c>0) w=a-b;
else t=c;
printf("%d %d %d", s,w,t);
}
【正确答案】(P56)200
[解析]参看如下的注释语句。
if (c>0) s=a+b; /* c=3>0为真,所以执行s=a+b语句;即:
s=2*/
if (a<=0) /*由于a= -1, 故a<=0为真,所以执行其后的大括号内的语句*/
{ if (b>0) /*由于b=3, 故b>0为真,可以继续下面的语句*/
if (c<=0) w=a-b; /*由于c=3,c<=0为假,其后w=a-b不会执行*/
}
else if (c>0) w=a-b;/*这一对if-else因a<=0为真,所以没有机会执行到*/
else t=c;
【你的答案】
本题分数5分
你的得分
修改分数
第4题下面程序的输出结果是____________________
fun(int x)
{
int a=3;
a*=x;
return a;
}
main()
{
int x=2,y=1,n;
n=fun(x);
n=fun(y);
printf("%d\n",n);
}
【正确答案】(P109)3
[解析]每次调用fun函数时都会对n进行重新赋值。
最后n的值为fun(y)的值。
【你的答案】
本题分数5分
你的得分
修改分数
第5题阅读程序
main()
{
int a,b,c,max,min;
printf("input three numbers:
");
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{max=a;min=b;}
else
{max=b;min=a;}
if(max max=c;
else
if(min>c)
min=c;
printf("max=%d\\nmin=%d",max,min);
}
如果输入12 34 56,那么这段程序的输出结果是_______________
【正确答案】(P57)max=56
min=12
【你的答案】
本题分数5分
你的得分
修改分数
第6题阅读下列程序,试写出程序运行的结果。
main()
{ int i,b,c,a\[\]={1,10,-3,-21,7,13},*p_b,*p_c;
b=c=1;p_b=p_c=a;
for(i=0;i<6; i++)
{ if(b<*(a+i)) {b=*(a+i); p_b=&a[i]; }
if(c>*(a+i)) {c=*(a+i); p_c=&a[i]; }
}
i=*a;*a=*p_b;*p_b=i;i=*(a+5);*(a+5)=*p_c;*p_c=i;
printf("%d,%d,%d,%d,%d,%d\n", a[0],a[1],a[2],a[3], a[4], a[5]);
}
【正确答案】(P136)程序输出内容是:
13, 10,-3, l, 7,-21.
[解析]程序定义了一个整型数组。
由给它所赋的初值知,该数组有六个元素。
程序另定义了三个整型变量i、b、c和两个指针变量p_b、p_c。
程序首先置变量b和c都为1,p_b和p_c都指向数组a 的首元素a[0]。
接着执行六次循环,循环体由两个if语句。
第一个if语句是当 b的值小于*(a+i)(就是a)时,将*(a+i)的值复制到b,并让p_b指向a,这是在a中找最大值,将最大值存于b,最大值元素的指针存于指针变量p_b。
第二个if语句是当c的值大于*(a+i)(就是a)时,将*(a+i) 的值复制到c,并让p_c指向a。
这是在a中找最小值,将最小值存于c,最小值元素的指针存于指针变量p_c。
循环结束后的前三个语句实现最大元素与a[0]交换。
接着三个语句是在已经过前面交换的基础上,将最小元与a[5]交换。
最后程序顺序输出数组a的六个元素。
若数组a的初值由输入任意指定,上述程序对一种特殊情况不能完成功能的要求,即最小元素若是a[0],p_c所指元素已被移到p_b指针所指位置,实际与a[5]交换的不再是数组中的最小元素,而是最大元素。
【你的答案】
五、程序设计题(本大题共2小题,每小题12分,共24分)
第1题编程序从键盘上输入一个字符串(长度小于或等于80),分别统计其中的字母、数字和其他字符的数目。
本题要求用指向数组首地址的指针变量来处理字符串中的字符。
while(*p!
='\0')
{ if((*p>='a')&&(*p<='z'))
c1++;
else if((*p>='A')&&(*p<='Z'))
c1++;
else if((*p>='0')&&(*p<='9'))
c2++;
else
c3++;
p++;
}
printf("c1=%d c2=%d c3=%d\n", c1,c2,c3);