当前位置: 首页 > 文档资料 > 学习 C 语言 >

C 编程模拟测试(C Programming Mock Test)

优质
小牛编辑
137浏览
2023-12-01

本节介绍与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); 
} 

A - 5

B - 6

C - 运行时错误

D - 编译错误

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); 
}

A - 5

B - 6

C - 运行时错误

D - 编译错误

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");
	}
}

A - 相等的字符串

B - 不等的字符串

C - 没有输出

D - 编译错误

Answer : C

说明 (Explanation)

没有输出,因为我们比较两个基地址并且它们不相同。

问题4 - 以下代码段的输出是什么?

#include<stdio.h>
main() 
{ 
   int a = 5, b = 3, c = 4; 
   printf("a = %d, b = %d\n", a, b, c);
}

A - a=5, b=3

B - a=5, b=3, c=0

C - a=5, b=3, 0

D - 编译错误

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);
}

A - 2.30

B - 2.3

C - 编译错误

D - 2.0

Answer : A

说明 (Explanation)

2.30,添加有效,小数点后指定为2个位置。

问题6 - 以下程序的输出是什么?

#include<stdio.h>
main() 
{
      enum { india, is=7, GREAT };
      printf("%d %d", india, GREAT);
}

A - 0 1.

B - 0 2

C - 0 8

D - 编译错误

Answer : C

说明 (Explanation)

0 8,枚举给出从0开始的序列。如果赋值,则序列从指定的值继续。

问题7 - 以下代码段的输出是什么?

#include<stdio.h>
main() 
{
    char c = 'A'+255;
    printf("%c", c);
}

A - A.

B - B.

C - 运行时溢出错误

D - 编译错误

Answer : A

说明 (Explanation)

A,ASCII字符的ASCII值范围是0-255。 因此,加法操作循环回到'A'

问题8 - 以下代码段的输出是什么?

#include<stdio.h>
main() 
{
   short unsigned int i = 0; 
   printf("%u\n", i--);
}

A - 0

B - 编译错误

C - 65535

D - 32767

Answer : A

说明 (Explanation)

0,使用post减量运算符的变量值将被视为表达式的值,然后逐渐减少。

问题9 - 以下代码段的输出是什么?

#include<stdio.h>
main() 
{
   unsigned x = 5, y=&x, *p = y+0; 
   printf("%u",*p);
}

A - x的地址

B - y的地址

C - p的地址

D - 5

Answer : D

说明 (Explanation)

在图5中,p保持x的地址,即y + 0

问题10 - 您对以下C语句有何评论?

   signed int *p=(int*)malloc(sizeof(unsigned int));

A - 不正确的铸造类型

B - 会抛出运行时错误

C - 将分配内存但不能在内存中保存int值

D - No issue with statement

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");
}

A - 编译错误

B - Hi

C - HelloHi

D - Hello

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");
}

A - 编译错误

B - Hi

C - HelloHi

D - 编译器警告

Answer : A

说明 (Explanation)

编译错误,关键字break只能出现在loop/switch语句中。

问题13 - 以下代码段的输出是什么?

#include<stdio.h>
main() 
{
   int x = 5;
   if(x=5)
   {	
      if(x=5) printf("Hello");
   } 
   printf("Hi");
}

A - HelloHi

B - Hi

C - Hello

D - 编译器错误

Answer : A

说明 (Explanation)

HelloHi,if语句的表达式的计算结果为true。

问题14 - 以下代码片段的输出是什么?

#include<stdio.h>
main() 
{
   for(;;)printf("Hello");
}

A - 无限循环

B - 打印一次“Hello”。

C - 没有输出

D - 编译错误

Answer : A

说明 (Explanation)

无限循环,第二个'for'表达式缺席,默认情况下视为true。

问题15 - 以下代码段的输出是什么?

#include<stdio.h>
main() 
{
   for()printf("Hello");
}

A - 无限循环

B - 打印一次“Hello”。

C - 没有输出

D - 编译错误

Answer : D

说明 (Explanation)

编译器错误,半冒号需要出现虽然表达式对于'for'循环是可选的。

问题16 - 以下代码段的输出是什么?

#include<stdio.h>
main() 
{
   for(1;2;3)
      printf("Hello");
}

A - 无限循环

B - 打印一次“Hello”。

C - 没有输出

D - 编译错误

Answer : A

说明 (Explanation)

无限循环,因为第二个表达式是非0,因此条件始终为真。

Q 17 - int x = ~1; 'x'的价值是多少?

A - 1

B - -1

C - 2

D - -2

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(); 
}

A - 1 1 1

B - 0 0 0

C - 3 2 1

D - 1 2 3

Answer : D

说明 (Explanation)

1 2 3,静态局部变量在函数调用之间保留其值,默认值为0。

问题19 - 以下代码段的输出是什么?

#include<stdio.h>
main()
{ 
   int *p = 15; 
   printf("%d",*p);
}

A - 15

B - Garbage value

C - 运行时错误

D - 编译器错误

Answer : C

说明 (Explanation)

运行时错误,因为指针变量没有保持正确的地址,从相同的写入/读取数据引发运行时错误。

问20 - 以下程序的输出是什么?

#include<stdio.h>
main()
{	
    register int x = 5;
    int *p;
    p=&x;
    x++;
    printf("%d",*p);
}

A - 编译错误

B - 5

C - 6

D - Garbage value

Answer : A

说明 (Explanation)

编译错误,我们不能取寄存器变量的地址。

问题21 - 以下程序的输出是什么?

#include<stdio.h>
main()
{
   int x = 65, *p = &x;
   void *q=p;
   char *r=q;
   printf("%c",*r);
}

A - Garbage character.

B - A.

C - 65

D - 编译错误

Answer : B

说明 (Explanation)

A,void指针是一个通用指针,可以保存任何变量的地址。 值65的ASCII字符是'A'

问22 - 以下程序的输出是什么?

#include<stdio.h>
void f() 
{
    printf(“Hello\n”);
}
main() 
{
 ;
}

A - 没有输出

B - 错误,因为未调用该函数。

C - 错误,因为函数是在没有声明的情况下定义的

D -Error,因为main()函数为空

Answer : A

说明 (Explanation)

没有输出,除了选项(a)对选项的其余评论无效。

问23 - 以下程序的输出是什么?

#include<stdio.h>
main()
{
   printf("\");
}

A - \

B - \"

C - "

D - 编译错误

Answer : D

说明 (Explanation)

编译错误,printf的格式字符串未终止。

问24 - 以下程序的输出是什么?

#include<stdio.h>
{ 
   int x = 1;
   switch(x) 
   {
      default: printf("Hello");
      case 1: printf("hi"); break;
   }
}

A - Hello

B - Hi

C - HelloHi

D - 编译错误

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); 
}

A - 5 5 5

B - 5 5 garbage value

C - 5 5 0

D - 编译错误

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);
}

A - 3 5

B - 5 3

C - 5 5

D - 编译错误

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()"));
}

A - 0

B - 1

C - -1

D - 无效使用strcmp()函数

Answer : A

说明 (Explanation)

0,如果两个字符串相等,则strcmp返回0

问28 - 以下程序在做什么?

#include<stdio.h>
main()
{
   FILE *stream=fopen("a.txt",'r');
}

A - 尝试在读取模式下打开“a.txt”

B - 尝试在写入模式下打开“a.txt”。

C - “stream” is an invalid identifier

D - 编译错误

Answer : D

说明 (Explanation)

编译错误,fopen的第二个参数无效,应该是一个字符串。

问29 - 以下程序的输出是什么?

#include<stdio.h>
main()
{   
   int r, x = 2;
   float y = 5;
   r = y%x;
   printf("%d", r); 
}

A - 1

B - 0

C - 2

D - 编译错误

Answer : D

说明 (Explanation)

编译错误,模数运算符(%)的任一操作数都是实数,这是无效的。

问30 - 在下一行中使用哪个运算符继续定义宏?

A - #

B - ##

C - $

D - \

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 ));
}

A - 1

B - 2

C - 4

D - 8

Answer : C

说明 (Explanation)

联合大小是它的最大元素大小。 联盟的所有元素都有共同的记忆。

问32 - 'int'的大小是多少?

A - 2

B - 4

C - 8

D - 编译器依赖

Answer : D

说明 (Explanation)

'int'的大小取决于编译器,即它是16位还是32位。

问题33 - 类型名称/保留字“短”是___

A - short long

B - short char

C - short float

D - short int

Answer : D

说明 (Explanation)

short用作short int的替代。

问34 - 以下代码片段的'y'值是多少?

#include<stdio.h>
main()
{
   int x = 1;
   float y = x>>2;
   printf( "%f", y );
}

A - 4

B - 0.5

C - 0

D - 1

Answer : C

说明 (Explanation)

0,对于上述移位操作,数据位丢失,因此该值为0。

问35 - 以下程序的输出是什么?

#include<stdio.h>
main()
{  
   float t = 2;
   switch(t)
   {
       case 2: printf("Hi");
       default: printf("Hello");
   }
}

A - Hi

B - HiHello

C - Hello

D - 错误

Answer : D

说明 (Explanation)

错误,切换表达式不能是浮点值。

问36 - 以下程序的输出是什么?

#include<stdio.h>
main()
{
   int i = 1;
   while(++i <= 5)
      printf("%d ",i++);
}

A - 1 3 5

B - 2 4

C - 2 4 6

D - 2

Answer : B

说明 (Explanation)

2 4,在第一次递增时稍后进行比较,并在printf中首先打印并稍后递增

问37 - 以下程序的输出是什么?

#include<stdio.h>
main()
{
   int i = 1;
   while( i++<=5 )
      printf("%d ",i++);
}

A - 1 3 5

B - 2 4

C - 2 4 6

D - 2

Answer : C

说明 (Explanation)

2 4 6,在第一次比较时,后来递增并在printf中首先打印并稍后递增。

问38 - 以下程序的输出是什么?

#include<stdio.h>
main()
{
   int i = 1;
   while(i++<=5);
       printf("%d ",i++);
}

A - 4

B - 6

C - 2 6

D - 2 4

Answer : B

说明 (Explanation)

6,'while'后面有一个空语句。

问39 - 以下程序的输出是什么?

#include<stdio.h>
main()
{
   int x = 1;
   do
      printf("%d ", x);
   while(x++<=1);
}

A - 1

B - 1 2

C - 没有输出

D - 编译错误

Answer : B

说明 (Explanation)

1 2,do..while是一个入口控制循环。 由于表达式x ++是post表单循环,也是第二次继续。

问40 - 以下程序的输出是什么?

#include<stdio.h>
main()
{ 
   int a[] = {1,2}, *p = a;
   printf("%d", p[1]); 
}

A - 1

B - 2

C - 编译错误

D - 运行时错误

Answer : B

说明 (Explanation)

2,因为'p'保存基地址然后我们可以使用'p'访问数组,就像'a'一样

问题41 - 以下程序的输出是什么?

#include<stdio.h>
main()
{ 
   int a[3] = {2,1};
   printf("%d", a[a[1]]); 
}

A - 0

B - 1

C - 2

D - 3

Answer : B

说明 (Explanation)

1,内部间接求值为1,外部间接索引1的值为1。

问42 - 以下程序的输出是什么?

#include<stdio.h>
main()
{ 
   int a[3] = {2,,1};
   printf("%d", a[a[0]]); 
}

A - 0

B - 1

C - 2

D - 编译错误

Answer : D

说明 (Explanation)

初始化数组时编译错误,语法无效。

问43 - 以下程序的输出是什么?

#include<stdio.h>
main()
{ 
   int a[] = {2,1};
   printf("%d", *a); 
}

A - 0

B - 1

C - 2

D - 编译错误。

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;
}

A - 1 2

B - 1 2 3

C - 1 2 4 5

D - 编译错误

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);
}

A - 73 73

B - 60 13

C - 13 60

D - 60 60

Answer : B

说明 (Explanation)

60 13,它的交换。

问46 - 以下程序的输出是什么?

#include<stdio.h>
main()
{	
   union abc {
      int x;
      char ch;
   }var;
   var.ch = 'A';
   printf("%d", var.x);
}

A - A.

B - Garbage value

C - 65

D - 97

Answer : C

说明 (Explanation)

65,因为联合变量共享其所有元素的公共存储器,x得到'A',其ASCII值为65并被打印。

问47 - 从以下方面确定不正确的文件打开模式。

A - r

B - w

C - x

D - a

Answer : C

说明 (Explanation)

x,没有这种称为“x”的模式。

Q 48 - 使用模式“r +”的函数fopen()尝试打开__文件

A - 阅读和写作

B - 阅读和添加新内容

C - only for reading

D - 它仅适用于目录

Answer : A

说明 (Explanation)

选项(a),文件应该存在并打开以进行读写。

问49 - 将fseek()函数中使用的无效常量标识为'whence'引用。

A - SEEK_SET

B - SEEK_CUR

C - SEEK_BEG

D - SEEK_END

Answer : C

说明 (Explanation)

SEEK_BEG,其余都是'stdio.h'中定义的有效常量

问题50 - 使用C编程语言设计的第一个操作系统。

A - DOS

B - Windows

C - UNIX

D - Mac

Answer : C

说明 (Explanation)

UNIX。 C实际上发明了编写一个名为UNIX的操作系统。 到1973年,整个UNIX OS都是用C语言设计的。

答题卡

问题编号答案钥匙
1D
2D
3C
4A
5A
6C
7A
8A
9D
10D
11A
12A
13A
14A
15D
16A
17D
18D
19C
20A
21B
22A
23D
24B
25A
26B
27A
28D
29D
30D
31C
32D
33D
34C
35D
36B
37C
38B
39B
40B
41B
42D
43C
44D
45B
46C
47C
48A
49C
50C
Download