考研综合练习题(答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
综合练习题
一、从下列四个供选择的答案中选出正确的一个答案
1、语句printf(“%%d%d”, 123); 将输出:
A) %123%d B) %%d123 C) %d123 D)上述语句语法有错
“%%”格式表示输出一个“%”。
2、执行下列程序段后, a值为:
int a, b;
a=15; b=12;
a=(a-- ==b++)? a%5 : a/5;
A) 0 B) 2.8 C ) 4 D) 2
先计算a--==b++的值:
a--的值为15,执行后a=14;b++的值为12,执行后b=13;15==12为假执行a/5即14/5值为2 结果: a = 2
3、判断字符变量c的值为数字(‟0‟---‟9‟)则返回1,否则返回0, 可用表达式:
A) …0‟<=c<=…9‟ B) …0‟<=c && c<=…9‟C) …0‟<=c || c<= …9‟ D)以上均不是
4、对于int x, y; 语句if (x<0) y= -1; else if (!x) y=0; else y=1; 等价于:
A) y=0; if (x>=0) if (x) y=1; else y= -1;
B) if (x!=0) if (x>0) y=1; else y= -1; else y=0;
C) if (x<0) y= -1; if (x!=0) y=1; else y=0;
D) y= -1; if (x!=0) if (x>0) y=1; else y=0;
语句if (x<0) y= -1; else if (!x) y=0; else y=1; 等价于:
if (x < 0)
y = -1;
else {
if (!x)
y = 0;
else
y = 1;
}
即:
-1 x < 0
y = 0 x = 0
1 x > 0
5、循环for(i=0, j=5; ++i!=--j; ) printf(“%d %d”, i, j); 将执行
A) 6次B) 3次C) 0次D) 无限次
i = 0, j = 5, (++i→1) != (--j→4) 成立: i = 1, j = 4
i = 1, j = 4, (++i→2) != (--j→3) 成立: i = 2, j = 3
i = 2, j = 3, (++i→3) != (--j→2) 成立: i = 3, j = 2
……
6、下列程序段执行后s值为:
int i=5, s=0;
do if (i%2) continue; else s+=i; while (--i);
A) 15 B) 9 C) 6 D) 以上均不是
写成规范形式:
do
if (i % 2)
continue;
else
s += i;
while (--i);
i = 5, s = 0: i % 2 = 1: i = 4
i = 4, s = 0: i % 2 = 0: s = 0 + 4 = 4; i = 3
i = 3, s = 4: i % 2 = 1: i = 2
i = 2, s = 4: i % 2 = 0: s = 4 + 2 = 6; i = 1
i = 1, s = 6: i % 2 = 1: i = 0
7、对于int a,要使((1<<2>>1)|a)==a; 则a 可以是:
A) 2 B) 6 C) 10 D) 2,6,10均可
1: 0000 0000 0000 0001
1<<2: 0000 0000 0000 0100
1<<2>>1: 0000 0000 0000 0010
(1<<2>>1) | 2: 0000 0000 0000 0010 (2)
(1<<2>>1) | 6: 0000 0000 0000 0110 (6)
(1<<2>>1) | 10: 0000 0000 0000 1010 (10) 8、对于以下宏定义:
#define SQ(x) x*x
#define DD(x,y) SQ(x)-SQ(y)
宏调用DD(2*3, 2+3)执行后值为:
A) 43B) 11 C) 25 D) 以上均不是
DD(2*3,2+3)
→SQ(2*3)-SQ(2+3)
→2*3*2*3-2+3*2+3
→43
9、对于以下结构定义:
struct { int len;
char *str;
} *p;
*p->str++中的++加在
A) 指针str上B) 指针p上C) str所指的内容上D) 以上均不是
优先级: “->” > “*” = “++”, ++是右结合
*p->str++ *((p->str)++)
例子:
则*p->str++的值为…H‟, 执行后, str指向‟e‟单元.
10、将s所指节点加到p所指节点之后(如下图), 其语句应为:
A) s->next = p+1; p->next = s;
B) p->next = s; s->next = p->next;
C) s->next=p->next; p->next=s->next;
D) s->next = p->next; p->next = s;
11、语句if (a>b) k=0; else k=1; (int a, b, k) 等价于:
A) k=(a>b)?1:0; B) k=a>b; C) k=a<=b;D) 以上均不是
12、对于int i; char c, s[20];从输入序列123ab45efg中将123读入i; ‟ b‟读入c; “45efg”读入s, 则scanf语句应写为:
A) scanf(“%da%c%s”, i, c, s) B) scanf(“%d%*c%c%s”,&i, &c, s);
C) scanf(“%da%c%s”, &i,&c,&s) D) scanf(“%d%c%c%s”, &i, &c, s);
13、若有以下说明和语句, 已知int和double类型分别占2和8个字节,则sizeof(st)的值为:
struct st {
char a[10];
union {
int i;
double y;
}
};
A) 18 B) 20 C) 12 D) 以上均不是
14、对于以下程序段, 运行后i值为:
enum WEEKS {1,2,3,4,5,6,7} ;
enum WEEKS a=1;
int i=0;