C 编程模拟测试(C Programming Mock Test)
本节介绍与C Programming Framework相关的各种模拟测试。 您可以在本地计算机上下载这些示例模拟测试,并在方便时离线解决。 每个模拟测试都提供一个模拟测试密钥,让您自己验证最终得分和评分。
.B, .answer-sheet{ display:none !important; } .Q a{ pointer-events: none; cursor: default; }C Programming Mock Test I
问题1 - 以下代码段的输出是什么?
#include<stdio.h>
main()
{
int const a = 5;
a++;
printf(“%d”,a);
}
Answer : D
说明 (Explanation)
编译错误 - 不能修改常量变量。
main()
{
int const a = 5;
a++;
printf(“%d”,a);
}
问题2 - 以下代码段的输出是什么?
#include<stdio.h>
main()
{
const int a = 5;
a++;
printf("%d", a);
}
Answer : D
说明 (Explanation)
编译错误 - 不能修改常量变量。
main()
{
const int a = 5;
a++;
printf("%d", a);
}
问3 - 以下代码段的输出是什么?
#include<stdio.h>
main()
{
char s[]="hello", t[]="hello";
if(s==t){
printf("eqaul strings");
}
}
Answer : C
说明 (Explanation)
没有输出,因为我们比较两个基地址并且它们不相同。
问题4 - 以下代码段的输出是什么?
#include<stdio.h>
main()
{
int a = 5, b = 3, c = 4;
printf("a = %d, b = %d\n", a, b, c);
}
Answer : A
说明 (Explanation)
a = 5,b = 3,因为只有两个用于打印的格式说明符。
问题5 - 以下代码段的输出是什么?
#include<stdio.h>
main()
{
int a = 1;
float b = 1.3;
double c;
c = a + b;
printf("%.2lf", c);
}
Answer : A
说明 (Explanation)
2.30,添加有效,小数点后指定为2个位置。
问题6 - 以下程序的输出是什么?
#include<stdio.h>
main()
{
enum { india, is=7, GREAT };
printf("%d %d", india, GREAT);
}
Answer : C
说明 (Explanation)
0 8,枚举给出从0开始的序列。如果赋值,则序列从指定的值继续。
问题7 - 以下代码段的输出是什么?
#include<stdio.h>
main()
{
char c = 'A'+255;
printf("%c", c);
}
Answer : A
说明 (Explanation)
A,ASCII字符的ASCII值范围是0-255。 因此,加法操作循环回到'A'
问题8 - 以下代码段的输出是什么?
#include<stdio.h>
main()
{
short unsigned int i = 0;
printf("%u\n", i--);
}
Answer : A
说明 (Explanation)
0,使用post减量运算符的变量值将被视为表达式的值,然后逐渐减少。
问题9 - 以下代码段的输出是什么?
#include<stdio.h>
main()
{
unsigned x = 5, y=&x, *p = y+0;
printf("%u",*p);
}
Answer : D
说明 (Explanation)
在图5中,p保持x的地址,即y + 0
问题10 - 您对以下C语句有何评论?
signed int *p=(int*)malloc(sizeof(unsigned int));
Answer : D
说明 (Explanation)
选项(d),因为int和unsigned的大小相同,分配内存没问题。
问题11 - 以下代码段的输出是什么?
#include<stdio.h>
main()
{
int x = 5;
if(x==5)
{
if(x==5) break;
printf("Hello");
}
printf("Hi");
}
Answer : A
说明 (Explanation)
编译错误,关键字break只能出现在loop/switch语句中。
问题12 - 以下代码段的输出是什么?
#include<stdio.h>
main()
{
int x = 5;
if(x=5)
{
if(x=5) break;
printf("Hello");
}
printf("Hi");
}
Answer : A
说明 (Explanation)
编译错误,关键字break只能出现在loop/switch语句中。
问题13 - 以下代码段的输出是什么?
#include<stdio.h>
main()
{
int x = 5;
if(x=5)
{
if(x=5) printf("Hello");
}
printf("Hi");
}
Answer : A
说明 (Explanation)
HelloHi,if语句的表达式的计算结果为true。
问题14 - 以下代码片段的输出是什么?
#include<stdio.h>
main()
{
for(;;)printf("Hello");
}
Answer : A
说明 (Explanation)
无限循环,第二个'for'表达式缺席,默认情况下视为true。
问题15 - 以下代码段的输出是什么?
#include<stdio.h>
main()
{
for()printf("Hello");
}
Answer : D
说明 (Explanation)
编译器错误,半冒号需要出现虽然表达式对于'for'循环是可选的。
问题16 - 以下代码段的输出是什么?
#include<stdio.h>
main()
{
for(1;2;3)
printf("Hello");
}
Answer : A
说明 (Explanation)
无限循环,因为第二个表达式是非0,因此条件始终为真。
Q 17 - int x = ~1; 'x'的价值是多少?
Answer : D
说明 (Explanation)
-2,1的赞美是1110(二进制),相当于2的2的赞美,即-2。
问题18 - 以下程序的输出是什么?
#include<stdio.h>
void f()
{
static int i;
++i;
printf("%d", i);
}
main()
{
f();
f();
f();
}
Answer : D
说明 (Explanation)
1 2 3,静态局部变量在函数调用之间保留其值,默认值为0。
问题19 - 以下代码段的输出是什么?
#include<stdio.h>
main()
{
int *p = 15;
printf("%d",*p);
}
Answer : C
说明 (Explanation)
运行时错误,因为指针变量没有保持正确的地址,从相同的写入/读取数据引发运行时错误。
问20 - 以下程序的输出是什么?
#include<stdio.h>
main()
{
register int x = 5;
int *p;
p=&x;
x++;
printf("%d",*p);
}
Answer : A
说明 (Explanation)
编译错误,我们不能取寄存器变量的地址。
问题21 - 以下程序的输出是什么?
#include<stdio.h>
main()
{
int x = 65, *p = &x;
void *q=p;
char *r=q;
printf("%c",*r);
}
Answer : B
说明 (Explanation)
A,void指针是一个通用指针,可以保存任何变量的地址。 值65的ASCII字符是'A'
问22 - 以下程序的输出是什么?
#include<stdio.h>
void f()
{
printf(“Hello\n”);
}
main()
{
;
}
Answer : A
说明 (Explanation)
没有输出,除了选项(a)对选项的其余评论无效。
问23 - 以下程序的输出是什么?
#include<stdio.h>
main()
{
printf("\");
}
Answer : D
说明 (Explanation)
编译错误,printf的格式字符串未终止。
问24 - 以下程序的输出是什么?
#include<stdio.h>
{
int x = 1;
switch(x)
{
default: printf("Hello");
case 1: printf("hi"); break;
}
}
Answer : B
说明 (Explanation)
嗨,在比较其余的大小写常量后,控制达到了默认情况。
问25 - 以下程序的输出是什么?
#include<stdio.h>
main()
{
struct { int x;} var = {5}, *p = &var;
printf("%d %d %d",var.x,p->x,(*p).x);
}
Answer : A
说明 (Explanation)
5 5 5,使用指针访问结构元素的两种可能方法是使用 - >(箭头操作符)OR *。
问26 - 以下程序的输出是什么?
#include<stdio.h>
void swap(int m, int n)
{
int x = m;
m = n;
n = x;
}
main()
{
int x=5, y=3;
swap(x,y);
printf("%d %d", x, y);
}
Answer : B
说明 (Explanation)
5 3,按值调用机制不能改变实际参数。
#include <stdio.h>
void swap(int m, int n)
{
int x = m;
m = n;
n = x;
}
main()
{
int x=5, y=3;
swap(x,y);
printf("%d %d", x, y);
}
问题27 - 以下声明将打印什么?
#include<stdio.h>
main()
{
printf("%d",strcmp("strcmp()","strcmp()"));
}
Answer : A
说明 (Explanation)
0,如果两个字符串相等,则strcmp返回0
问28 - 以下程序在做什么?
#include<stdio.h>
main()
{
FILE *stream=fopen("a.txt",'r');
}
C - “stream” is an invalid identifier
Answer : D
说明 (Explanation)
编译错误,fopen的第二个参数无效,应该是一个字符串。
问29 - 以下程序的输出是什么?
#include<stdio.h>
main()
{
int r, x = 2;
float y = 5;
r = y%x;
printf("%d", r);
}
Answer : D
说明 (Explanation)
编译错误,模数运算符(%)的任一操作数都是实数,这是无效的。
问30 - 在下一行中使用哪个运算符继续定义宏?
Answer : D
说明 (Explanation)
\,前两个分别是stringize和token粘贴操作符。 没有这样的运算符叫$。
问题31 - 以下联合定义的大小是多少?
#include<stdio.h>
union abc {
char a,b,c,d,e,f,g,h;
int i;
}abc;
main()
{
printf( "%d", sizeof( abc ));
}
Answer : C
说明 (Explanation)
联合大小是它的最大元素大小。 联盟的所有元素都有共同的记忆。
问32 - 'int'的大小是多少?
Answer : D
说明 (Explanation)
'int'的大小取决于编译器,即它是16位还是32位。
问题33 - 类型名称/保留字“短”是___
Answer : D
说明 (Explanation)
short用作short int的替代。
问34 - 以下代码片段的'y'值是多少?
#include<stdio.h>
main()
{
int x = 1;
float y = x>>2;
printf( "%f", y );
}
Answer : C
说明 (Explanation)
0,对于上述移位操作,数据位丢失,因此该值为0。
问35 - 以下程序的输出是什么?
#include<stdio.h>
main()
{
float t = 2;
switch(t)
{
case 2: printf("Hi");
default: printf("Hello");
}
}
Answer : D
说明 (Explanation)
错误,切换表达式不能是浮点值。
问36 - 以下程序的输出是什么?
#include<stdio.h>
main()
{
int i = 1;
while(++i <= 5)
printf("%d ",i++);
}
Answer : B
说明 (Explanation)
2 4,在第一次递增时稍后进行比较,并在printf中首先打印并稍后递增
问37 - 以下程序的输出是什么?
#include<stdio.h>
main()
{
int i = 1;
while( i++<=5 )
printf("%d ",i++);
}
Answer : C
说明 (Explanation)
2 4 6,在第一次比较时,后来递增并在printf中首先打印并稍后递增。
问38 - 以下程序的输出是什么?
#include<stdio.h>
main()
{
int i = 1;
while(i++<=5);
printf("%d ",i++);
}
Answer : B
说明 (Explanation)
6,'while'后面有一个空语句。
问39 - 以下程序的输出是什么?
#include<stdio.h>
main()
{
int x = 1;
do
printf("%d ", x);
while(x++<=1);
}
Answer : B
说明 (Explanation)
1 2,do..while是一个入口控制循环。 由于表达式x ++是post表单循环,也是第二次继续。
问40 - 以下程序的输出是什么?
#include<stdio.h>
main()
{
int a[] = {1,2}, *p = a;
printf("%d", p[1]);
}
Answer : B
说明 (Explanation)
2,因为'p'保存基地址然后我们可以使用'p'访问数组,就像'a'一样
问题41 - 以下程序的输出是什么?
#include<stdio.h>
main()
{
int a[3] = {2,1};
printf("%d", a[a[1]]);
}
Answer : B
说明 (Explanation)
1,内部间接求值为1,外部间接索引1的值为1。
问42 - 以下程序的输出是什么?
#include<stdio.h>
main()
{
int a[3] = {2,,1};
printf("%d", a[a[0]]);
}
Answer : D
说明 (Explanation)
初始化数组时编译错误,语法无效。
问43 - 以下程序的输出是什么?
#include<stdio.h>
main()
{
int a[] = {2,1};
printf("%d", *a);
}
Answer : C
说明 (Explanation)
2,因为'a'指的是基地址。
问44 - 以下程序的输出是什么?
#include<stdio.h>
main()
{
int i = 1;
Charminar:
printf("%d ",i++);
if(i==3) break;
if(i<=5) goto Charminar;
}
Answer : D
说明 (Explanation)
编译错误,出现'break'的错误位置。
问题45 - 以下程序的输出是什么?
#include<stdio.h>
main()
{
int i = 13, j = 60;
i ^= j;
j ^= i;
i ^= j;
printf("%d %d", i, j);
}
Answer : B
说明 (Explanation)
60 13,它的交换。
问46 - 以下程序的输出是什么?
#include<stdio.h>
main()
{
union abc {
int x;
char ch;
}var;
var.ch = 'A';
printf("%d", var.x);
}
Answer : C
说明 (Explanation)
65,因为联合变量共享其所有元素的公共存储器,x得到'A',其ASCII值为65并被打印。
问47 - 从以下方面确定不正确的文件打开模式。
Answer : C
说明 (Explanation)
x,没有这种称为“x”的模式。
Q 48 - 使用模式“r +”的函数fopen()尝试打开__文件
Answer : A
说明 (Explanation)
选项(a),文件应该存在并打开以进行读写。
问49 - 将fseek()函数中使用的无效常量标识为'whence'引用。
Answer : C
说明 (Explanation)
SEEK_BEG,其余都是'stdio.h'中定义的有效常量
问题50 - 使用C编程语言设计的第一个操作系统。
Answer : C
说明 (Explanation)
UNIX。 C实际上发明了编写一个名为UNIX的操作系统。 到1973年,整个UNIX OS都是用C语言设计的。
答题卡
问题编号 | 答案钥匙 |
---|---|
1 | D |
2 | D |
3 | C |
4 | A |
5 | A |
6 | C |
7 | A |
8 | A |
9 | D |
10 | D |
11 | A |
12 | A |
13 | A |
14 | A |
15 | D |
16 | A |
17 | D |
18 | D |
19 | C |
20 | A |
21 | B |
22 | A |
23 | D |
24 | B |
25 | A |
26 | B |
27 | A |
28 | D |
29 | D |
30 | D |
31 | C |
32 | D |
33 | D |
34 | C |
35 | D |
36 | B |
37 | C |
38 | B |
39 | B |
40 | B |
41 | B |
42 | D |
43 | C |
44 | D |
45 | B |
46 | C |
47 | C |
48 | A |
49 | C |
50 | C |