c笔试问题

一、选择题((1)-(40) 1每题,(41)-(50) 2每题,***60)。

以下四个选项(a),b),c)和d)只有一个是正确的。请在答题卡相应位置涂上正确选项,答案不在试卷上计分。

(1)在32位计算机中,一个字长占用的字节数是()。

A) 1

B) 2

C) 4

D) 8

(2)与十进制数511等价的十六进制数是()。

A) 1FF

B) 2FF

C) 1FE

D) 2FE

(3)能把用高级语言编写的源程序转换成目标程序的是()。

a)编程程序

b)编译器

c)解释程序

d)链接程序

(4)在计算机系统中,存储一个汉字的国家标准码所需的字节数是()。

A) 1

B) 2

C) 3

D) 4

(5)下列带通配符的文件名中,()可以表示文件ABC.TXT。

a)*公元前。?

B) A?。*

c)?公元前。*

d)?。?

(6)在多媒体计算机系统中,不能用来存储多媒体信息的是()。

a)光缆

b)软盘

c)硬盘

d)光盘

(7) DOS命令“COPY/?”的作用是()。

a)将当前磁盘的当前目录下的所有文件复制到当前磁盘的根目录下

b)将当前磁盘的当前目录下所有以单字符命名的文件复制到当前磁盘的根目录下。

c)通过提示复制文件。

d)显示复制命令的帮助信息。

(8)在Windows环境下,如果要将当前活动窗口保存到剪贴板,可以按()。

A) Ctrl+PrintScreen键

b)Ctrl+打印屏幕键

C) Shift+PrintScreen键

d)打印屏幕键

(9)在Windows环境下,单击当前应用程序窗口中的“关闭”按钮,其作用是()。

a)将当前应用程序转入后台操作。

b)退出Windows,然后将其关闭。

c)退出Windows后重新启动计算机。

d)终止当前应用程序的运行。

(10)在Windows环境中,粘贴按钮是()。

A) ctrl+A

B) ctrl+C

C) ctrl+X

ctrl+V

(11)下列说法正确的是()。

a)C程序的基本单位是函数。

b)可以在一个函数中定义另一个函数。

main()函数必须放在其他函数之前。

d)所有被调用的函数必须在调用前定义。

(12)下列选项中的法定实常数是()。

A) 5E2.0

B) E-3

C) .2E0

D) 1.3E

(13)下列选项中的合法用户标识符是()。

a)长

2)测试

C) 3Dmax

d)日期

(14)给定大写字母A的ASCII码值为65,小写字母A的ASCII码值为97,用八进制表示的字符常量' 101 '是()。

a)字符a

b)字符a

c)字符e

d)非法常数

(15)下列非法赋值语句是()。

A) n=(i=2,++ I);

b)j++;

c)++(I+1);

d)x = j & gt;0;

(16)如果A和B都是双变量,且a=5.5,b=2.5,则表达式(int)a+b/b的值为()。

6.500000

B)6

5.500000

6.000000

(17) I,J,K称为3<变量。如果你从键盘输入它们:1,2,3,这样I的值是1,J的值是2,K的值是3。下列选项中正确的输入语句是()。

A) scanf("%2d%2d%2d ",& amp我& ampj & amp;k);

B) scanf("%d %d %d ",& amp我& ampj & amp;k);

C) scanf("%d,%d,%d ",& amp我& ampj & amp;k);

D) scanf("i=%d,j=%d,k=%d ",& amp我& ampj & amp;k);

(18)数学公式对应的C语言表达式是()。

3*x^n(2*x-1)

B) 3*x**n(2*x-1)

C) 3*pow(x,n)*(1/(2*x-1))

D) 3*pow(n,x)/(2*x-1)

(19)有一个定义:long x =-123456 l;,下列能正确输出变量x的值的说法是()。

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

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

C)printf("x=%8dL\n ",x);

D)printf("x=%LD\n ",x);

(20)如果有以下程序:

主()

{ int k=2,i=2,m;

m =(k+= I * = k);printf("%d,%d\n ",m,I);

}

执行后的输出是()。

a)8.6

B) 8,3

c)6.4

d)7.4

(21)已经定义:int x = 3,y = 4,z = 5;,表情!(x+y)+z-1。& ampy+z/2的值是()。

A) 6

B) 0

C) 2

D) 1

(22)有一个函数,在下列程序段中,不能根据x的值正确计算出y的值的是()。

a)如果(x & gt0)y = 1;b)y = 0;

else if(x = = 0)y = 0;if(x & gt;0)y = 1;

else y =-1;else if(x & lt;0)y =-1;

c)y = 0;d)如果(x & gt=0)

if(x & gt;=0);if(x & gt;0)y = 1;

if(x & gt;0)y = 1;否则y = 0;

else y =-1;else y =-1;

(23)下列选项中,与k=n++完全等价的表达式是()。

A) k=n,n=n+1

B) n=n+1,k=n

k=++n

D) k+=n+1

(24)下面这个程序的功能是依次读入10名学生的四门课成绩,计算每个学生的平均分并输出。该计划如下:

主()

{ int n,k;

浮动分数、总和、平均值;

sum = 0.0

for(n = 1;n & lt=10;n++)

{ for(k = 1;k & lt=4;k++)

{ scanf("%f ",& amp分数);总和+=分数;}

ave = sum/4.0;

printf("NO%d:%f\n ",n,ave);

}

}

上述程序运行后结果不正确。在调试过程中,发现程序中有一条语句出现在不正确的位置。这句话是()。

a)sum = 0.0;

b)sum+= score;

c)ave = sun/4.0;

D) printf("NO%d:%f\n ",n,ave);

(25)有以下程序段

int n=0,p;

do{scanf("%d ",& ampp);n++;}while(p!=12345。& ampn & lt3);

这里do-while循环的结束条件是()。

a)p的值不等于12345,n的值小于3。

b)p的值等于12345,n的值大于或等于3。

c)p的值不等于12345或n的值小于3。

d)p的值等于12345或n的值大于或等于3。

(26)有以下程序

主()

{ int a=15,b=21,m = 0;

开关(a%3)

{案例0:m++;打破;

案例1:m++;

开关(b%2)

{默认值:m++;

案例0:m++;打破;

}

}

printf("%d\n ",m);

}

程序运行后的输出结果是()。

A) 1

B) 2

C) 3

D) 4

(27)在C语言中,可以默认函数值类型的定义,函数值的隐式类型是()。

a)无效

B) int

c)浮动

d)双倍

(28)如果指定:int n = 2,* p = &;n,* q = p;,下列非法赋值语句是()。

a)p = q;

b)* p = * q;

c)n = * q;

d)p = n;

(29)有以下程序

float fun(int x,int y)

{ return(x+y);}

主()

{ int a=2,b=5,c = 8;

printf("%3.0f\n ",fun(int)fun(a+c,b),a-c));

}

程序运行后的输出结果是()。

a)编译错误

B) 9

C) 21

D) 9.0

(30)有以下程序

void fun(char *c,int d)

{ * c = * c+1;d = d+1;

printf("%c,%c,",*c,d);

}

主()

{ char a='A ',b = ' a

乐趣(& ampb,a);printf("%c,%c\n ",a,b);

}

程序运行后的输出结果是()。

A)B,a,B,a

B) a,B,a,B

C) A、b、A、b

D) b,B,A,B

(31)下面程序中sort的作用是将A的索引组中的数据由大到小排序。

void sort(int a[],int n)

{ int i,j,t;

for(I = 0;我

for(j=i+1,j

如果(a[i]

}

主()

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

排序(& ampaa[3],5);

for(I = o;我& lt10;i++) print("%d,",aa[I]);

printf(' \ n ");

}

程序运行后的输出结果是()。

A)1,2,3,4,5,6,7,8,9,10

B) 10,9,8,7,6,5,4,3,21,

C) 1,2,3,8,7.6.5.4.9,10

D) 1,2,10,9,8,7,6,5,4,3

(32)有以下程序

整数f(整数n)

{ if (n==1)返回1;

否则返回f(n-1)+1;

}

主()

{ int i,j = 0;

for(I = I;我& lt3;i++)j+= f(I);

printf("%d\n ",j);

}

程序运行后的输出结果是()。

A) 4

B) 3

C) 2

D) 1

(33)有以下程序

主()

{ char a[ ]={'a ',' b ',' c ',' d ',' e ',' f ',' g ',' \ 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

(34)在下面的过程中,函数reverse的功能是反转由A索引的组的内容..

void reverse(int a[ ],int n)

{ int i,t;

for(I = 0;I { t = a[I];a[I]= a[n-1-I];a[n-1-I]= t;}

}

主()

{ int b[10]={1,2,3,4,5,6,7,8,9,10 };int i,s = 0;

反向(b,8);

for(I = 6;我& lt10;i++)s+= b[I];

printf("%d\n ",s);

}

程序运行后的输出结果是()。

A) 22

B) 10

C) 34

D) 30

(35)有以下程序

主()

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

int i,s=0

for(I = 0;我& lt4;i++)s+= aa[I][1];

printf("%d\n ",s);

}

程序运行后的输出结果是()。

A) 11

B) 19

C) 13

D) 20

(36)有以下程序

#包括

主()

{ char * p = " abcde \ Ofghjik \ 0

printf("%d\n ",strlen(p));

}

程序运行后的输出结果是()。

A) 12

B) 15

C) 6

D) 5

(37)程序中头文件typel.h的内容是:

#定义N 5

#定义M1 N*3

该过程如下:

#定义" type1.h "

#定义M2 N*2

主()

{ int I;

I = m 1+M2;printf("%d\n ",I);

}

编译后程序的输出是:()。

A) 10

B) 20

25人

D) 30

(38)有以下程序

#包括

主()

{ FILE * fpint i=20,j=30,k,n;

FP = fopen(" d 1 . dat " " w ");

fprintf(fp," %d\n ",I);fprintf(fp," % d \ n " j);

fclose(FP);

fp=fopen("d1.dat "," r ");

fp=fscanf(fp," %d%d ",& ampk & amp;n);printf("%d%d\n ",k,n);

fclose(FP);

}

程序运行后的输出结果是()。

A) 20 30

B) 20 50

C) 30 50

D) 30 20

(39)下列说法中错误的是()。

a)二进制文件打开后,可以先读取文件的结尾,顺序文件则不能。

b)程序结束时,应使用fclose函数关闭打开的文件。

c)当使用fread函数从二进制文件中读取数据时,可以使用数组名来读取数组中所有元素的数据。

d)不能使用FILE来定义指向二进制文件的文件指针。

(40)有以下程序

#包括

main(int argc,char *argv[])

{ int i,len = 0;

for(I = 1;i printf("%d\n ",len);

}

程序编译连接后生成的可执行文件是ex1.exe,如果运行时输入带参数的命令行:

ex 1 ABCD EFG 10 & lt;输入>

运行的结果是:()。

A) 22

B) 17

C) 12

D) 9

(41)有以下程序。

int fa(int x)

{ return x * x}

int fb(int x)

{ return x * x * x}

int f(int (*f1)(),int (*f2)(),int x)

{ return F2(x)-f 1(x);}

主()

{ int I;

i=f(fa,fb,2);printf("%d\n ",I);

}

程序运行后的输出结果是()。

答)-4

B) 1

C) 4

D) 8

(42)有以下程序

int a = 3;

主()

{ int s = 0;

{ int a = 5;s++ = a++;}

s++ = a++;printf("%d\n ",s);

}

程序运行后的输出结果是()。

A) 8

B) 10

C) 7

D) 11

(43)有以下程序

void ss(字符*s,字符t)

{ while(*s)

{ if(* s = = t)* s = t-' A '+' A ';

s++;

}

}

主()

{ char str 1[100]= " abcddfefbdd ",c = ' d

ss(str1,c);printf("%s\n ",str 1);

}

程序运行后的输出结果是()。

A) ABCDDEFEDBD

b)abcddfeffdbd

C) abcAAfefAbA

d)abcddfeffdbd

(44)有以下程序

结构研究

{ char num[10];浮动分数[3];};

主()

{ struct stu s[3]={{"20021 ",90,95,85},

{"20022",95,80,75},

{"20023 ",100,95,90}},* p = s;

int I;float sum = 0;

for(I = 0;我& lt3、i++)

sum = sum+p-& gt;得分[I];

printf("%6.2f\n ",sum);

}

程序运行后的输出结果是()。

260.00

270.00

280.00

285.00英镑

(45)有以下定义:

罢工sk

{ int a;

浮动b;

}数据;

int * p;

要使p指向数据中的一个字段,正确的赋值语句是()。

p = & ampa;

b)p = data . a;

p = & ampdata.a

d)* p = data . a;

(46)有以下程序

#包括

结构节点

{ int num结构节点* next};

主()

{结构节点*p,*Q,* R;

p=(结构节点*)malloc(sizeof(结构节点));

q=(结构节点*)malloc(sizeof(结构节点));

r=(结构节点*)malloc(sizeof(结构节点));

p->;num = 10;q->;num = 20r-& gt;num = 30

p->;next = q;q->;next = r;

printf("%d\n ",p-& gt;num+q->;下一个-& gt;num);

}

程序运行后的输出结果是()。

A) 10

B) 20

C) 30

D) 40

(47)如果有以下描述和定义,

typedef int * INTEGER

整数p,* q;

下列说法正确的是()。

A) P是一个整型变量。

B) p是一个基本类型为int的指针变量。

C) q是一个基本类型为int的指针变量。

d)在程序中可以用INTEGER代替int类型名。

(48)有以下程序

主()

{无符号字符a,b,c;

a = 0x3b = a | 0x8c = b & lt& lt1;

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

}

程序运行后的输出结果是()。

a)–11 12

b)–6–13

12 24

D) 11 22

(49)有以下程序

#包括

主()

{ char *p,* q;

p =(char *)malloc(sizeof(char)* 20);q = p;

scanf("%s%s ",p,q);printf("%s%s\n ",p,q);

}

如果从键盘输入:abcdef,输出结果是:()。

定义定义

B) abc定义

C) abc d

d)d d d

(50)下面程序中函数f的作用是对n个字符串进行降序排序。

#包括

void f(char p[][10],int n)

{ char t[20];int i,j;

for(I = 0;I for(j = I+1;j if(strcmp(p[i],p[j])& lt;0)

{ strcpy(t,p[I]);strcpy(p[i],p[j]);strcpy(p[j],t);}

}

主()

{ char p[][10]={"abc "," aabdfg "," abbd "," dcdbe "," CD " };int I;

f(p,5);printf("%d\n ",strlen(p[0]));

}

程序运行后的输出结果是()。

A) 6

B) 4

C) 5

D) 3

二、填空(每空2分,***40分)

请将答案写在答题卡上编号为1到20的横线上,答案不在试卷上计分。

1,计算机软件分为系统软件和应用软件,操作系统属于[1]。

2.在DOS环境下,代表键盘和显示器的设备的文件名是[2]。

3.支持基本互联网服务的协议是[3]。

4.从Windows环境进入MS-DOS模式后,返回Windows环境的DOS命令是[4]。

5.如果微型计算机的计算速度是2兆位,微型计算机每秒将执行[5]条指令。

6.它被定义为int n,* k = &;n;下面的语句将使用指针变量k来读写变量n的内容,请完成语句。

scanf("%d,"[6]);

printf("%d\n ",[7].);

7.下面这个程序的输出结果是[8]。

主()

{ int x=10,y=20,t = 0;

if(x = = y)t = x;x = y;y = t;

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

}

8.下面这个程序的输出结果是[9]。

主()

{ int x = 15;

while(x & gt;10。& ampx & lt50)

{ x++;

if(x/3){ x++;打破;}

否则继续;

}

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

}

9.有以下程序:

#包括

主()

{ char c;

while((c=getchar())!='? ')putchar(-c);

}

程序运行时,如果从键盘输入:y?n?& lt回车>,输出结果为[10]。

10,以下程序的输出结果为[11]。

void fun(int x,int y)

{ x = x+y;y = x-y;x = x-y;

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

主()

{ int x=2,y = 3;

fun(x,y);

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

}

11,下面这个函数的作用是计算S = 1 ++ 0...+,请填空。

双重乐趣(整数)

{双s=0.0,fac = 1.0;int I;

for(i=1,i & lt= n;i++)

{ fac = fac[12];

s = s+fac;

}

返回s;

}

12 fun的作用是:首先在A表示的n行n列矩阵的每一行中找出最大的数,然后在n个最大值中找出最小的数作为函数值返回。请填空。

#包括

#定义编号100

int fun(int(*a)[N])

{ int row,col,max,min

for(row = 0;row { for(max=a[row][0],col = 1;col if([13])max = a[row][col];

if(row = = 0)min = max;

else if([14])min = max;

}

返回最小值;

}

13,函数sstrcmp()是比较两个字符串。当S表示的字符串等于T表示的字符串时,返回值为0;当S表示的字符串大于T表示的字符串时,返回值大于0;当S表示的字符串小于T表示的字符串时,返回值小于0(该函数等效于库函数strcmp())。请填空。

#包括

int sstrcmp(char *s,char *t)

{ while(* s & amp;& amp* t & amp& amp*s== [15])

{ s++;t++;}

return[16];

}

14.下面的程序运行结果是[17]。

#定义编号10

#定义s(x) x*x

#定义f(x) (x*x)

主()

{ int i1,I2;

I 1 = 1000/s(N);I2 = 1000/f(N);

printf("%d %d\n ",i1,I2);

}

15.下面这个程序的运行结果是:[18]。

void swap(int *a,int *b)

{ int * t;

t = a;a = b;b = t;

}

主()

{ int x=3,y=5,* p = & ampx,* q = & ampy;

互换(p,q);

printf("%d%d\n ",*p,* q);

}

16,下面这个程序的运行结果是:[19]。

typedef联盟学生

{ char name[10];

龙sno

迷人的性爱;

浮动分数[4];

}斯图;

主()

{ STU a[5];

printf("%d\n ",sizeof(a));

}

(17)函数sstrcmp()用于比较两个字符串。当S表示的字符串和T表示的字符相等时,返回值为0;当S表示的字符串大于T表示的字符串时,返回值大于0;当S表示的字符串小于T表示的字符串时,返回值小于0(该函数等效于库函数strcmp())。请填空。

# include & ltstdio.h & gt

int sstrcmp(char *s,char *t)

{ while(* s & amp;& amp* t & amp& amp*s==19)

{ s++;t++;}

返回20;

}