您的位置:

中国矿业大学c语言题库,C语言题库

本文目录一览:

谁知道哪有关于C语言的练习题?

C 程序设计试题库C语言概述练习题

1.一个C程序的执行是从( )

A.本程序的main函数开始,到main函数结束

B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C.本程序的main函数开始,到本程序文件的最后一个函数结束

D.本程序文件的第一个函数开始,到本程序main函数结束

2.以下叙述正确的是:( )

A.在C程序中,main函数必须位于程序的最前面

B.程序的每行中只能写一条语句

C.C语言本身没有输入输出语句

D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误

3.以下叙述不正确的是:( )

A.一个C源程序可由一个或多个函数组成

B.一个C源程序必须包含一个main函数

C.C程序的基本组成单位是函数

D.在C程序中,注释说明只能位于一条语句的后面

4.C语言规定:在一个源程序中,main的位置( )

A.必须在最开始

B.必须在系统调用的库函数后面

C.可以任意

D.必须在最后

5.一个C语言程序是由( )

A.一个主程序和若干子程序组成

B.函数组成

C.若干过程组成

D.若干子程序组成

6.C源程序的基本单位是____________

7.一个C源程序中至少包括一个____________

8.在一个C源程序中,注释部分两侧的分界符分别为____________ 和____________

9.在C语言中,输入操作是由库函数____________ 完成的,输出操作是由库函数____________ 完成的

c语言模拟练习题

一、 判断题(2×8=16分)

1、Printf()函数总是从新行的起始位置开始打印。 ( )

2、所有的变量在使用前都必须予以申明。( )

3、在申明变量时必须给出变量的类型。( )

4、C语言认为变量number和NuMbEr是相同的。( )

5、打印三行输出的C语言程序必须用三条printf语句。( )

6、求余运算符%只能用于两个整数操作数。( )

7、switch选择结构中必须有default子句。( )

8、如果xy或ab为真,那么表达式(xyab)为真。( )

二、 选择题(3×16=48分)

1、下面实现换行功能的格式符为 。( )

A. \t B. \n C. \a D. \k

2. C语言程序由什么组成?(单选)

A. 子程序 B. 主程序和子程序 C. 函数 D. 过程

3. 下面哪个表达式的值为4.

A. 11/3 B. 11.0/3

C. (float)11/3 D. (int)(11.0/3+0.5)

4. 该源程序执行后,屏幕上显示什么?

void main()

{

int a;

float b;

a=4;

b=9.5;

printf("a=%d,b=%4.2f\n",a,b);

}

A. a=%d,b=%f\n B. a=%d,b=%f

C. a=4,b=9.50 D. a=4,b=9.5

5. 若有以下说明语句:

char s='\\\092';

则下面哪一项是正确的.

A. 使s的值包含2个字符 B. 说明语句不合法

C. 使s的值包含6个字符 D. 使s的值包含4个字符

6.若k,g均为int型变量,则以下语句的输出为哪一项?

int k,g;

k=017;

g=111;

printf("%d,",k);

printf("%x\n",g);

A. 15,6f B. f,6f C. f,111 D. 15,111

7. 在C语言的if语句中,用作判断的表达式为___。

A. 关系表达式 B. 逻辑表达式

C. 算术表达式 D. 任意表达式

8. 请问:下面这个程序段的输出是什么?

int a,b,c;

a=7;b=8;c=9;

if(ab)

a=b,b=c;c=a;

printf("a=%d b=%d c=%d\n",a,b,c);

A. a=7 b=8 c=7 B. a=7 b=9 c=7

C. a=8 b=9 c=7 D. a=8 b=9 c=8

9. 下面这个程序的输出是什么?

#include stdio.h

main()

{

int y=10;

while(y--);

printf("y=%d\n",y);

}

A. y=0 B. while构成死循环 C. y=1 D. y=-1

10. 若有以下说明和语句,则输出结果是___。

char str[]="\"c:\\abc.dat\"";

printf("%s",str);

A. 字符串中有非法字符 B. \"c:\\abc.dat\"

C. "c:\abc.dat" D. "c:\\abc.dat"

11. 如果要把常量327存入变量a中,a不能定义成哪些类型?

A. int B. char C. long D. float

12. C语言中,预处理总是以 符号开头。 ( )

A. ¥ B.# C. @ D. ◇

13. C语言中,double类型的数据占 个字节的空间。( )

A. 1 B.2 C. 4 D. 8

14. 下面语句执行完后,b的值为 。 ( )

int a=b=10;

b=10+(a++);

A. 10 B.19 C. 20 D. 21

15. 这段程序中的常量有: (多选) ( )

#define PI 3.14

void main()

{

int sum;

sum = 10 + 15;

printf("sum=%d\n",sum);

printf("result is 25\n");

}

这段程序中常量有:

A. 10 B. sum C. 15

D. 25 E. main F. PI

16. 指出下面错误的表达式:(多选) ( )

A. a+b=5 B. 56=a11 C. i=i++

D. 5.6+6.2%3.1 E. 12 F. a=5,b=6,c=7

三、 填空题(3×8=24分)

1、C语言程序都是从 函数开始执行。

2、函数体用 开始,用 结束。

3、C语言的语句都以 结束。

4、执行循环结构中的 语句能够立即执行下一次循环。

5、执行循环结构或switch结构中的 语句能够立即退出该结构。

6、输出字符串的格式化符为 。

7、C语言中数组名表示数组的 。

大一C语言期末考试求题库

一、单项选择题(共10题,每题2分,共20分。在备选答案中选择一个最佳答案。多选、错选、不选不得分)

1、不是C语言基本数据类型的是( )。

A、指针类型 B、整型

C、字符型 D、实型

2、设有:int a=3, b= 4, c= 5,x , y; 表达式0 (x=a)(y=b)的值为( )。

A、1 B、0 C、3 D、4

3、设有语句 int a=3 ; 则执行了语句 a+=6;后,变量a 的值为( )。

A、18 B、-3 C、9 D、12

4、执行以下程序段后,输出的y值为( )

void main()

{ int a[]={2,4,6,8,10};

int y, *p;

p=a[0];

y=*p; printf(“%d”,y);

}

A、2 B、4 C、6 D、8

5、有定义语句:float a[4];则分配给数组a的内存空间为( )字节。

A、 20 B、 12 C、 16 C、10

6、以下描述错误的是( )。

A、break语句可用于while语句。

B、break语句和continue语句的作用是一样的。

C、在循环语句中使用break语句是为了跳出循环,提前结束循环。

D、在循环语句中使用continue语句是为了结束本次循环,而不终止整个循环。

7、C语言中规定,if语句的嵌套结构中,else总是( )。

A、与最近的if 配对 B、与第一个if 配对

C、按缩进位置相同的if配对 D、与最近的且尚未配对的if 配对

8、说明语句“int (*p)( ); ”的含义是( ) 。

A、p是一个指向一维数组的指针变量。

B、p是指针变量,指向一个整型数据。

C、p是一个指向函数的指针,该函数返回一个int型数据。

D、以上都不对。

9、以下对二维数组c的正确声明是 ( ) 。

A、int c[3][ ]; B、int c(3,4);

C、int c(2)(2); D、int c[3][2];

10、下述程序段执行后输出结果为( )。

int x=100, y=200;

printf ("% d", (x, y));

A、100 B、200 C、100,200 D、编译出错

二、填空题(共7题,共10空,每空1分,共10分。将答案填在题中横线上)

1、C语言提供的三种逻辑运算符是 、 || 和!;

2、函数的返回值是通过函数中的 return 语句获得的。

3、在"int a[ ][3]={{1},{3,2},{4,5,6},{0}};"定义后,a[2][2]的值为_6__ _;

4、对于"int *pa[5];" pa是一个具有5个元素的_数组指针_,每个元素是一个指向int型变量的__指针__;

5、单向链表的尾节点next指针应赋值__ NULL___;

6、在语句for(x=1,y=3;xy;y++)中循环体执行的次数为 0 。

7、int a[5];数组a的首地址为2000,则元素a[1]的地址为 2002 ,元素a[2]的地址为 2004 。

三、程序填空题(共2题,共5空,每空4分,共20分)

1、以下程序完成计算1-1/2+1/3-1/4+1/5+……前n 项和,请填空。

#include stdio.h

int main( )

{ int i, n, flag;

float sum;

scanf("%d", n);

flag= 1 ;

sum=0;

for(i=1;i=n; i++ )

{ sum+=(float)flag/i;

flag=-flag ;

}

printf("%.3f\n", sum);

}

2、以下程序的功能是从键盘输入n个整数,统计其中正数、0、负数的个数,请填空。

#include stdio.h

void main( )

{int a, i, count1,count2,count3;

count1=count2=count3=0 ;

for(i=1;i=n;i++)

{ scanf(“%d”, a);

if(a0) count1++;

else if(a==0) count2++ ;

else count3++;

}

printf(“正数:d个,零:%d个,负数:%d个\n”, count1,count2,count3 );

}

四、运行程序结果题(共4题,每题6分,共24分)

1、写出程序运行结果。

void main( )

{ int x=1,y=2,t;

int *p1,*p2;

p1=x; p2=y;

t=*p1;*p1=*p2;*p2=t;

printf("x=%d,y=%d\n",x,y);

}

运行结果为:

程序有错,不能运行!或写:

x=2,y=1

2、写出程序运行结果。

#includestdio.h

int max(int a,int b)

{ int c;

c=ab?a:b;

return(c);

}

int min(int a,int b)

{int c;

c=ab?a:b;

return(c);

}

void main()

{ int a=2,b=6;

printf("max=%d\n",max(a,b));

printf(“min=%d\n”,min(a,b));

}

运行结果为:

程序有错,不能运行!或写:

max=6

min=2

3、写出程序运行结果。

#include stdio.h

void main()

{ int a[3][3]={1,2,3,4,5,6,7,8,9};

int i,j,sum=0;

for (i=0;i3;i++)

for(j=0;j3;j++)

if(i==j) sum=sum+a[i][j];

printf(“sum=%d\n”,sum);

}

运行结果为:

程序有错,不能运行!或写:

sum=15

4、写出程序运行结果。

void main( )

{ int n,f;

n=1;

while(n=10)

{ f=f*n;

n+=2;

}

printf(“f=%d\n”,f);

}

运行结果为:

程序有错,不能运行!或写:

f=不确定

五、程序设计题(共2题,每题13分,共26分)

1、将一个数组按逆序存放,如元素1、2、3、4、5,按逆序存放后为5、4、3、2、1。

大一c语言考试题(急)

1、C源程序文件的扩展名是( .C );编译后生成的文件名后缀是( .OBJ );经过连接后生成文件

名后缀是( .exe ); 在VC++6.0中用Run命令运行当前程序时,运行的程序扩展名是( .exe )。

2、结构化程序的三种基本结构是( 顺序、选择 、循环 )。

3、整型常量有三种表示方法,它们是( 十进制整数 )、( 八制整数 )、( 十六整数 )。

4、表达式3.5+1/2+56%10 的值是( 9.5 );10/10和10%10的值各是(1和0)。

5、表达式3%3*3的值是( 0 );5/3*3的值是( 3 );3*6%4的值是( 2 )。

6、设int x=12;执行x+=x-=x*x后,x 的值是( -264 )。

7、表达式k=7,k+=k-=k+1的值是( -2 )。

8、语句"printf("%x,%o",16,12);"的输出结果是( 10,14 )。

9、设short x,y; y=(x=3,x+2,++x,x++*2);则x,y的值各是( 5 , 8 )。

10、设int x,y,z,t; x=y=z=1; t=++x||++y++z;则y的值是( 1 )。

11、条件10=x20 或x=0的C语言表达式是( x=10x20||x=0 )

12、设a=1,b=2,c=3,d=4;表达式ab?a:cd?a:d的值是( 1 )。

13、在 C 程序中,用( 1)表示逻辑值“真”。

14、表示“x≥y≥z”的C表达式是 ( x=yy=z )。

15、设x为int型变量,请写出一个关系表达式( (x%21==0) ),用以判断x同时为3和7的倍数时

,关系表达式的值为真。

16、 设ch是字符型变量,判断ch为英文字母的表达式是: (

ch='z'ch='a'||ch='A'ch='Z' )。

17、在C语言中参数的传递总是采用( 单向 )传递。

18、如果return 表达式;中”表达式”的类型与函数类型不一致,则以( 函数类型 )的类型为准

自动转换;如果实际参数的类型与形式参数的类型不一致, 则以( 形式参数 )的类型为准自动转

换。

19、函数形式参数在( 调用 )时分配内存,( 调用结束 )时释放内存。

20、系统总是为数组分配( 连续 )的一块内存。

21、字符串的结束标志是(ASCII码的0 )。

22、TC系统为任何指针变量分配的内存是( 4 )字节。

23、若有定义:double x[3][5]; 则x数组中行下标的下限为( 2 ),列下标的上限为( 4 )。

24、若有定义int x=3,*p;则使p指向变量x的赋值语句为( p=x )。

25、在C 语言程序中,在函数内部定义的变量称为( 局部变量)。

26、char a[2][10]={“123”,”123456789”}, *p[2]={“123”,”123456789”}; 则(前者 )

占用内存多。

27、struct st { char num[5]; int a[4]; float ave; } a,*p; 则变量a和p在内存各

占( 25和4 )字节。

28、union un { int i; char c;} ;

struct st { int v[4]; double t; union un k; }w, *pw; pw=w;

变量w占用( 28 )字节; 通过w 访问v[0]的形式是( w.v[0] );通过w访问成员c的形式是(w.k.c

);通过pw访问v[0]的全部形式有( pw-v[0] ,*(pw-v) );通过pw访问成员c的全部形式有(

(pw-k.c) )。(实验验证,pw-k-c这种书写有错误直接用.也是错误)

29、设fp是文件指针,要把字符变量ch的内容写入文件,可用的语句有(

fputc(ch,fp);fwrite(ch,1,1,fp); )。

30、fputs(str, fp)函数的功能是( 将数据str写入fp文件流中 )。

{29题不能用 fputs(ch,fp);由于ch只有一个字符,如果用这句的话,会因为没有字符串结束标

志而写入很长的数据。从实验中得出。}

涉及到穷举的题目,像28、29可能没有列举完全其他题目都是经过vc++6.0验证过的。

c语言计算机二级考试选择题如图?

全国计算机二级考试试题题库(附答案)

下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项在答题

卡相应位置上涂黑,答在试卷上不得分。

(1) 应用软件是指

A) 所有能够使用的软件 B) 能被各应用单位共同使用的某种软件

C) 所有微机上都应使用的基本软件 D) 专门为某一应用目的而编制的软件

(2) 下列述叙中错误的是

A) 计算机要经常使用不要长期闲置不用

B) 为了延长计算机的寿命,应避免频繁开关计算机

C) 在计算机附近应避免磁场干扰

D) 计算机用几小时后,应关机一会儿再用

(3) 下列字符中,ASCII码值最小的是

A) A B) a C) Z D) x

(4) 用晶体管作为电子器件制成的计算机属于

A) 第一代 B) 第二代 C) 第三代 D) 第四代

(5) 下列各不同进制的四个无符号数中,最小的数是

A) ()2 B) (37)8 C) (75)10 D) (2A)16

(6) 二进制数转换成十六进制数是

A) B) C) D)

(7) 下列各无符号十进制数中,能用八位二进制表示的是

A) 296 B) 333 C) 256 D) 199

(8) 计算机的软件系统可分类为

A) 程序与数据 B) 系统软件与应用软件

D) 操作系统与语言处理程序 D) 程序、数据与文档

(9) 486机中的CPU同时能处理的二进制位数为

A) 8 B) 16 C) 32 D) 64

(10) 在使用计算机的过程中,需要重新启动DOS,则要

A) 按Ctrl+Break键 B) 按^C键 C) 按Ctrl+Alt+Del键 D) 按^H键

(11) 现要从软盘启动DOS(软盘中已存有DOS系统),设有如下一些操作:①打开计算机

电源;②将该软盘插入A驱动器;③关好A驱动器门。则冷启动的操作顺序应为

A) ①→②→③ B) ③→②→① C) ②→①→③ D) ②→③→①

(12) 设当前盘中某一文件路径为\A\C\B\,当前目录为\A。下列命令中错误的是

A) CD.. B) RD \A\C\B

C) TYPE \A\C\B\ D) TYPE C\B\

(13) 设当前盘中的根目录下有一子目录AB,在子目录AB下有一文件。现要查看文件

的内容,应使用命令

A) TYPE \AB B) TYPE \AB\

C) TYPE \ D) DIR \AB\

(14) 自动批处理文件必须放在

A) C盘根目录中 B) A盘根目录中

C) 启动盘的任一个目录中 D) 启动盘的根目录中

(15) 设当前盘当前目录为C:\USER\XY\P,且当前盘当前目录为空,则下列命令中能正

确执行的是

A) RD C:\USER\XY\P B) RD USER\XY\P

C) MD \USER\XY\P\USER D) MD \USER\XY\P\X\Y

(16) 下列DOS命令中,合法的是

A) DISKCOMP B) TYPE

C) COMP A: B: D) COMP A: A:

(17) 设当前盘为C盘,所用的所有软盘已格式化,且容量相同,则下列DOS命令中错

误的是

A) DISKCOPY A: A: B) COPY A:*.* C) COPY *.* D) COPY A:*.* C:

(18) 下列DOS命令中错误的是

A) TYPE PRN B) TYPE PRN

C) COPY *.TXT PRN D) COPY CON PRN

(19) 下列四组DOS命令中,互相等价的一组是

A) COPY A:*.* B:与DISKCOPY A: B:

B) COPY +与TYPE

C) COPY + 与COPY +

D) TYPE *.FORCON与COPY *.FOR CON

(20) 设C盘目录结构如下:

且C盘根目录下文件的内容为

CD FORTRAN

CD \TC

如果在A驱动器中插入一张根目录中只有扩展名为.C的若干文件(即A盘中无DOS系统

文件)的软盘片,则由C盘启动DOS系统后,第一次键入下列命令中,正确的是

A) COPY A:\*.C B) COPY A:\*.C TC

C) COPY A:\*.C FORTRAN D) CD USER

(21) C语言提供的合法的数据类型关键字是

A) Double B) short C) integer D) Char

(22) 在C语言中,合法的长整型常数是

A) 0L B) 4962710 C) D)

(23) 表达式:10!=9的值是

A) true B) 非零值 C) 0 D) 1

(24) 合法的C语言中,合法的长整型常数是

A) '\t' B) "A" C) 65 D) A

(25) 若有说明和语句:

int a=5;

a++;

此处表达式a++的值是

A) 7 B) 6 C) 5 D) 4

(26) 在下列选项中,不正确的赋值语句是

A) ++t; B) n1=(n2=(n3=0)); C) k=i==j; D) a=b+c=1;

(27) 若有说明:int i,j=7, *p=i;,则与i=j;等价的语句是

A) I= *P; B) *P=*J; C) i=j; D) i=* *p;

(28) 不能把字符串:Hello!赋给数组b的语句是

A) char b[10]={'H','e','l','l','o','!'};

B) char b[10];b="Hello!";

C) char b[10];strcpy(b,"Hello!");

D) char b[10]="Hello!";

(29) 若有以下说明:

int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};

char c='a',d,g;

则数值为4的表达式是

A)a[g-c] B)a[4] C)a['d'-'c'] D)a['d'-c]

(30) 若有以下说明:

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

则数值为6的表达式是

A) *p+6 B) *(p+6) C) *p+=5 D) p+5

(31) 若有以下说明:

int w[3][4]o={{0,1},{2,4},{5,8}};

int(*p)[4]=w;

则数值为4的表达式是

A) *w[1]+1 B) p++,*(p+1) C) w[2][2] D) p[1][1]

(32) 若程序中有下面的说明和定义

struct abc

{int x;char y;}

struct abc s1,s2;

则会发生的情况是

A) 编译进错 B) 程序将顺利编译`连接`执行

C) 能顺利通过编译`连接`但不能执行 D) 能顺利通过编译`但连接出错

(33) 能正确表示a≥10或a≤0的关系表达式是

A)a=10 or a=0 B)a=10│a=0

C)a=10││a=0 D)a=10 ││a=0

(34) 下面程序的输出是

main()

{ int x=3,y=6,a=0;

while(x++!=(y+=o1))

{ a+o=1;

if(y

#include

main()

{ char ss[10]="12345";

strcat(ss,"6789");

gets(ss);printf("%s\n",ss);

}

A) ABC B) ABC9 C) 123456ABC D) ABC456789

(35) 下面程序的输出是

main()

{ char *a="";

int v1=0,v2=0,v3=0,v4=0,k;

for(k=0;s[k];k++)

switch(s[k])

{ default:v4++;

case '1': v1++;

case '3': v3++;

case '2': v2++; }

printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4); }

A) v1=4,v2=2,v3=1,v4=1 B) v1=4,v2=9,v3=3,v4=1

C) v1=5,v2=8,v3=6,v4=1 D) v1=8,v2=8,v3=8,v4=8

(36) 下面程序的输出是

main()

{int k=11;printf("k=%d,k=%o,k=%x\n",k,k,k);}

A)k=11,k=12,k=11 B)k=11,k=13,k=13 C)k=11,k=013,k=0xb D)k=11,k=13,k=b

(37) 若有以下程序段,w和k都是整型变量:

w=k;

LB: if(w==0) go to LE;

w--;

printf("*");

goto LB;

LE: ┆

则不能与上面程序段等价的循环语句是

A)for(w=k;w!=0;w--) printf("*"); B)for(w=k;w;--w)printf("*");

C)w=k; D)w=k;

while(w--!=0)printf("*");w++; do{ w--;printf("*");}while(w!=0);

(38) 若有说明,double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是

A)*p=a; scanf("%lf",p); B)p=(double *)malloc(8);scanf("%f",p);

C) p=a;scanf("%lf",a); D)p=a; scanf("%le",p);

(39) 当执行下面程序且输入:ABC时,输出的结果是

#include

#include

main()

{ char ss[10]="12345";

gets(ss);printf("%s\n",ss); }

A) ABC B) ABC9 C) 123456ABC D) ABC456789

(40) 若有以下的说明和语句:

main()

{int t[3][2], *pt[3],k;

fpr(k=o; k3;k++)pt[k]=t[k];

}

则以一选项中能正确表示t数组元素地址的表达式是

A) t[3][2] B) *pt[0] C) *(pt+1) D) pt[2]

(41) 下面程序输出数组中的最大值,由s指针指向该元素.

main()

{ int a[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s;

flr(p=a, s=a; p-a10; p++)

if(---?---)s=p;

printf("The max:%d",*s):

}

则在if语句中的判断表达式应该是

A) ps B) *p*s C) a[p]a[s] D) p-ap-s

(42) 下面程序的输出是

#include

main()

{ char*a="abcdefgh";

fun(a);puts(a); }

fun (char * s)

{ int x=0,y;char c;

for(y=strlen(s)-1;x

A)abcdefgh B)hgfdecba C)dcbahgfe D)hgfedcba

(43) 若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句

中实参的个数是

A)3 B)4 C)5 D)6

(44) 下面程序的输出是

main()

{ int t=1; fun(fun(t));}

fun(int h)

{ static int a[3]={1,2,3};

int k;

for(k=0;k3;k++) a[k]+=a[k]-h;

for(k=1;k3;k++) printf("%d",a[k]);

printf("\n"); return(a[h]);}

A)1,2,3, B)1,3,5, C) 1,3,5, D) 1,3,5,

1,5,9, 1,3,5, 0,4,8, -1,3,7,

(45) C语言中,函数的隐含存储类别是

A)auto B)static C)extern D)无存储类别

(46) 下面程序的输出是

int w=3;

main()

{ int w=10; printf("%d\n",fun(5)*w); }

C语言:下列说法正确的是( )

A错,我想打个比方,我和你在不同的国度,说不同的话语,我和你可以直接用各自的语言和文字交流吗?我想肯定不能够,因此需要翻译,而C语言源程序就是以人类可以熟悉的规则和语言编写,必须经过编译器编译,“翻译”成计算机可以识别的二进制机器指令,计算机才能明白和执行。

C也是错的,C语言程序源代码都是先经过编译,然后进行链接,最后才生成二进制机器指令。编译的过程就是把C语言源文件转变成二进制汇编代码的OBJ文件,然后通过和一些C语言标准库链接,例如你使用C语言库函数printf等等,最终才生成二进制机器指令,才可运行。

D也是错的。LIB是什么东西?就是一个或者一大堆函数的集合。比较专业的术语就是链接库。例如C语言提供的标准库。

所以B是对的。可执行语句最终是转换成机器指令的。