求重庆2009年11 C语言计算机二级试题!
以下四个选项(a),b),c)和d)只有一个是正确的。请在答题卡相应位置涂上正确选项,答案不在试卷上计分。
(1)8位无符号二进制数可以表示的最大十进制数为
a)127 B)128 C)255D)256
(2)在64位高端微机中,一个字长所占的二进制位数为
A) 8 B) 16 C) 32 D) 64
(3)在Windows环境中,为了复制一个对象,你应该在用鼠标拖动它的同时按住它。
A) Alt键B)Esc键C)Shift键D)Ctrl键
(4)在窗口菜单中,一个暗淡(灰色)的命令项表示该命令。
a)暂时不可用b)正在执行c)包含下一个菜单d)包含对话框。
(5)在DOS环境下,为了获得TYPE命令的帮助信息,正确的DOS命令是
a)类型B)类型/H C)类型/* D)类型/?
(6)在下列选项中,可以作为合法DOS文件名的是
A) ANP/A.DAT B) ABCCOM C) ECD。基本D) XY+Z.TXT
(7)下列说法是正确的。
a)在Windows环境中,最大化的窗口不能移动。
b)在Windows环境中,在应用程序窗口最小化之后,应用程序的执行被挂起。
c)在Windows环境中,只能关闭最小化的窗口。
d)在Windows环境中,最大化的窗口无法关闭。
(8)在Windows环境下,工具栏中的复制按钮是
a)打印机图标b)剪刀标志c)复制标志d)粘贴标志
(9)在Windows98环境下,如果想将整个屏幕上显示的内容保存到剪贴板上,可以按。
a)Ctrl+打印屏幕键b)alt+打印屏幕键。
c)Shift+打印屏幕键D)打印屏幕键
(10)目前,计算机病毒传播最快的方式是
a)通过软件复制b)通过网络传播
c)通过磁盘测试运行游戏软件d)
(11)下列说法是正确的
A) C优于其他语言。
B) C语言无需编译即可被计算机识别并执行。
C) C语言以接近英语国家的自然语言和数学语言为语言表达形式。
D) C语言出现的最晚,具有其他语言的所有优点。
(12) C语言的结构化编程中使用的三种基本结构是
a)顺序结构,选择结构,循环结构B) if,switch,break。
C) for、while、do-while D) if、for、continue
(13)在C程序中
a)主函数必须出现在所有函数之前b)主函数可以出现在任何地方。
c)主函数必须出现在所有函数之后d)主函数必须出现在固定的位置。
(14)下列说法是正确的
a)C语言中既有逻辑类型,也有集合类型。
b)C语言中没有逻辑类型,只有集合类型。
C)C语言中有逻辑类型但没有集合类型。
d)C语言中既没有逻辑类型,也没有集合类型。
(15)下列关于C语言用户标识符的说法是正确的。
用户标识符可以加下划线和下划线(减号)。
用户标识符不能加下划线,但可以加下划线。
下划线可以出现在用户标识符中,但不能放在用户标识符的开头。
用户标识符可以出现在下划线和数字中,它们都可以放在用户标识符的开头。
(16)如果有以下程序段(n是一个八进制数)
int m=32767,n=032767
printf("%d,%o/n ",m,n);
执行后的输出结果是
A) 32767,32767
32767,77777 D) 32767,077777
(17)下列关于单目算子++的说法,正确的是。
a)它们的操作数可以是任何变量和常数。
b)它们的操作数可以是char类型变量和int类型变量,但不能是float类型变量。
c)它们的操作数可以是int变量,但不能是double变量和float变量。
d)它们的操作数可以是char变量、int变量和float变量。
(18)如果有以下程序段,
int m=0xabc,n = 0xabc
m-= n;
printf("%X\n ",m);
执行后的输出结果是
A) 0X0 B) 0x0 C) 0 D) 0XABC
(19)具有以下程序段。
int m=0,n = 0;char c = ' a
scanf("%d%c%d ",& ampm & amp;c,& ampn);
printf("%d,%c,%d\n ",m,c,n);
如果从键盘输入:10A10,输出结果是:
A)10 A,10 B)10 A,10 C)10 A,0D)10 A,0
(20)有以下程序
主()
{ int I;
for(I = 0;我& lt3;i++)
开关(一)
{ case 1: printf("%d ",I);
案例二:printf("%d ",I);
默认值:printf("%d ",I);
}
}
执行后的输出结果是
a)011122 B)012 C)012020D)120
(21)有以下程序。
主()
{ int i=1,j=1,k = 2;
if((j++‖k++))& amp;& ampi++) printf("%d,%d,%d\n ",I,j,k);
}
执行后的输出结果是
A) 1,1,2 B) 2,2,1 C) 2,2,2 D) 2,2,3
(22)有以下程序
主()
{ int a=5,b=4,c=3,d = 2;
如果(a & gtb & gtc)
printf("%d\n ",d);
else if((c-1 & gt;=d)==1)
printf("%d\n ",d+1);
其他
printf("%d\n ",d+2)
}
执行后的输出结果是
A) 2 B) 3 C) 4 D)编译时出错,没有结果。
(23)有以下程序
主()
{ int p[7]={11,13,14,15,16,17,18},i=0,k = 0;
while(我& lt7 & amp& ampp[I]% 2){ k = k+p[I];i++;}
printf("%d\n ",k);
}
执行后的输出结果是
58 B) 56 C) 45 D) 24
(24)有以下程序
主()
{ int i=0,s = 0;
做{
if(I % 2){ i++;继续;}
i++;
s+= I;
} while(I & lt;7);
printf("%d\n ",s);
}
执行后的输出结果是
a)16 B)12 C)28D)21
(25)有以下程序
主()
{ int i=10,j = 1;
printf("%d,%d\n ",i -,++ j);
}
执行后的输出结果是
A) 9,2 B) 10,2 C) 9,1 D) 10,1
(26)有以下程序
主()
{ char a,b,c,* d;
a =“\”;b = ' \ xbc
c = ' \ 0xabd = " \ 017 ";
print("%c%c%c\n ",a,b,c,* d);
}
编译期间出错。以下说法是正确的。
a)程序中只有一个= ' \ ';不正确的陈述b)b = ' \ xbc ';不正确的陈述
c)d = " \ 0127 ";不正确的陈述d)a = ' \ ';而c = ' \ 0xab这些陈述没有一个是正确的
(27)有以下程序
int fl(int x,int y)
{ return x & gty?x:y;}
int f2(int x,int y)
{ return x & gty?y:x;}
主()
{ int a=4,b=3,c=5,d,e,f;
d=f1(a,b);d=f1(d,c);
e=f2(a,b);e=f2(e,c);
f = a+b+c-d-e;
printf("%d,%d,%d\n ",d,f,e);
}
执行后的输出结果是
A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 3,5,4
(28)有以下程序
void f(int x,int y)
{ int t;
if(x)
主()
{ int a=4,b=3,c = 5;
f(a,b);f(甲、丙);f(b,c);
printf("%d,%d,%d\n ",a,b,c);
}
执行后的输出结果是
A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 4,3,5
(29)如果有以下定义和陈述,
#包括
int a=4,b=3,*p,*q,* w;
p = & ampa;q = & ampb;w = q;q = NULL
下列选项中错误的说法是
a)* q = 0;b)w = p;c)* p = a;d)* p = * w;
(30)有以下程序
int *f(int *x,int *y)
{ if(* x & lt;*y)
返回x;
其他
返回y;
}
主()
{ int a=7,b=8,*p,*q,* r };
}
执行后的输出结果是
A) 7,8,8 B) 7,8,7 C) 8,7,7 D) 8,7,8
(31)有以下程序。
主()
{ char *s[]={ "一","二","三" },* p;
p = s[1];
printf("%c,%s\n",*(p+1),s[0]);
}
执行后的输出结果是
A) n,两个B) t,一个C)w,一个D) o,二
(32)有以下程序
主()
{ int x[8]={8,7,6,5,0,0},* s;
s=x+3
printf("%d\n ",s[2]);
}
执行后的输出结果是
a)随机值B) 0 C) 5 D) 6
(33)下列语句中能正确定义数组并正确赋值的初始值是
A) int N=5,b[N][N];B) int a[1][2]={{1},{ 3 } };
C) int c[2][]={{1,2},{3,4 } };D) int d[3][2]={{1,2},{ 34 } };
(34)有以下程序
主()
{ int m[][3]={1,4,7,2,5,8,3,6,9 };
int i,j,k = 2;
for(I = 0;我& lt3;i++)
{ printf("%d ",m[k][I]);}
}
执行后的输出结果是
A) 4 5 6 B) 2 5 8 C) 3 6 9 D) 7 8 9
(35)下面这个函数的作用是通过键盘输入数据,给数组中的所有元素赋值。
#定义编号10
void arrin(int x[N])
{ int I = 0;
while(i scanf("%d ",);
}
下划线里应该填的是
a)x+I B)& amp;x[I+1]C)x+(i++)D)& amp;x[++i]
(36)有以下程序
主()
{ char s[]= " \ n 123 \ \ ";
printf("%d,%d\n ",strlen(s),sizeof(s));
}
执行后的输出结果是
a)带有初始值的字符串是错误的;b)6.7 C)5.6D)6.6。
(37)读取以下功能
乐趣(char *s1,char *s2)
{ int I = 0;
while(s 1[I]= = S2[I]& amp;& amps2[i]!= ' \ 0 ')i++;
return(s 1[I]= = & amp;& amps2{i}!=='\0');
}
该功能的作用是
a)将s2表示的字符串赋值给s1。
b)比较由s1和s2指示的字符串的大小。如果s1大于s2,则函数值为1;否则,函数值为0。
c)比较s1和s2所指示的字符串是否相等,如果相等,则函数值为1,否则函数值为0。
d)比较s1和s2表示的字符串的长度,如果s1比s2长,则函数值为1,否则函数值为0。
(38)下列说法是正确的。
a)全局变量的范围必须大于局部变量的范围。
b)静态类别变量的生存期贯穿整个程序。
c)函数的形参属于全局变量。
d)定义语句中未赋初始值的自动变量和静态变量的初始值为随机值。
(39)提供以下说明。
typedef结构
{ int n;char c;双x;} STD
在下列选项中,可以正确定义结构数组并分配初始值的语句是
A) STD tt[2]={{1,' A ',62},{2,' B ',75 } };
B) STD tt[2]={1," A ",62},2," B ",75 };
c)结构tt[2]={{1,' A'},{2,' B ' } }
D)structtt[2]={{1," A ",62.5},{2," B ",75.0 } };
(40)有以下程序
主()
{ union { unsigned int n;
无符号字符c;
} u 1;
ul.c = ' A
printf("%c\n ",u 1 . n);
}
执行后的输出结果是
A)语法错误b)随机值C)A)D)65
(41)有以下程序。
主()
{ char str[]="xyz ",* ps = str
而(* PS)ps++;
for(PS-;PS-str & gt;=0;ps -)看跌期权(PS);
}
执行后的输出是
A) yz B) z C) z D) x
xyz yz yz xy
xyz
(42)有以下程序
主()
{ int a[][3]={{1,2,3},{4,5,0}},{*pa}[3],I;
pa = a;
for(I = 0;我& lt3;i++)
如果(我& lt2)pa[1][I]= pa[1][I]-1;
else pa[1][I]= 1;
printf("%d\n ",a[0][1]+a[1][1]+a[1][2]);
}
执行后的输出结果是
A) 7 B) 6 C) 8 D)没有确定的值。
(43)有以下程序
void fun(int *a,int i,int j)
{ int t;
if(I { t = a[I];a[I]= a[j];a[j]= t;
fun(a,++i,-j);
}
}
主()
{ int a[]={1,2,3,4,5,6},I;
乐趣(a,0,5)
for(I = 0;我& lt6;i++)
printf("%d ",a[I]);
}
执行后的输出是
a)6 5 4 3 2 1 B)4 3 2 1 5 6 C)4 5 6 1 2 3D)1 2 3 4 5 6
(44)有以下程序
main(int arge,char *argv[])
{ int n,I = 0;
while(arv[1][i]!='\0'
{ n = fun();i++;}
printf(%d\n ",n * argc);
}
int fun()
{ static int s = 0;
s+= 1;
返回s;
}
假设程序被编译并连接生成一个可执行文件exam.exe,如果你键入下面的命令行。
考试123 & lt;输入>
运行结果是
A) 6 B)8 C)3 D)4)
(45)在下面的程序段中,通过调用fun函数,可以使主函数中的指针变量p指向一个合法的整数单位。
a)主要()B)主要
{ int * p;{ int * p;
好玩(p);乐趣(& ampp);
}
}
int fun(int *p)
{ int s;p = & amps;} { int s;* p = & amps;}
c)#包含D)#包含
主()主()
{ int * p;{ int * p;
乐趣(& ampp);好玩(p);
} }
国际基金(国际**p)国际基金(国际*p)
{ * p =(int *)malloc(2);} { p=(int *)malloc(sizeo(int))。}
(46)要指定一个类型名STP,使定义语句STP s等价于char *s,下列选项是正确的。
a)typedef STP char * s;b)typedef * char STP;
c)typedef STP * char;d)typedef char * STP;
(47)有以下定义
结构ss
{ char name[10];
int age
迷人的性爱;
}std[3],* p = std
下列输入语句中错误的是
A) scanf("%d ",& amp(*p)。年龄);B) scanf("%s ",& amp标准名称);
C) scanf("%c ",& amp标准[0]。sex) D) scanf("%c ",& amp(p->;性));
(48)设char变量X中的值为1010111,则表达式(2+x) (~ 3)的值为
a)10101001 B)10101000 C)1111111111D)01638
(49)下列说法不正确。
a)C语言的文本文件以ASC代码形式存储数据。
b)C语言二进制文件的访问速度比文本文件快。
C)在C语言中,随机读写不适合文本文件。
d)在C语言中,顺序读写不适用于二进制文件。
(50)下面的程序试图将从终端输入的字符输出到一个名为abc.txt的文件中,并结束输入和输出操作,直到从终端读取到字符#为止,但程序是错误的。
#包括
主()
{ FILE * foutchar ch
fout=fopen('abc.txt ',' w ');
ch = fgetc(stdin);
而(ch!='#')
{ fputc(ch,fout);
ch = fgetc(stdin);
}
fclose(fout);
}
错误的原因是
a)函数fopen调用不正确b)输入文件未关闭。
c)以错误的形式调用函数fgetc d)未定义文件指针stdin。
二、填空(每空2分,***20分)
请将正确答案写在答题卡上序号为1-20的横线上的每一个空白处,该答案不在试卷上计分。
(1)在十六进制绘图存储器中按字节地址编号。如果地址号是从000到FFFF,存储器的容量是1KB。
(2)假设当前磁盘的当前目录下有A.TXT和B.TXT两个文件,现在应该将文件B.TXT合并连接到文件a.txt的后面..如果使用COPY命令,完整的命令是2。
(3)电子邮件地址由用户和域名组成,这两部分的分隔符为3。
(4)假设当前磁盘的当前目录下有一个可执行程序USER.EXE。现在,程序要被执行,显示和输出的结果信息需要存储在文件OUT中。DAT的当前目录的当前磁盘,所以完整的DOS命令是4。
(5)在DOS环境下,代表打印机的设备文件名为5。
(6)如果有声明
int i=-19,j = I % 4;
printf("%d\n ",j);
输出结果是6。
(7)如果有程序,
主()
{ int i,j;
scanf("i=%d,j = % d ";& amp我& ampj);
printf("i=%d,j=%d\n ",I,j);
}
要将10分配给I,将20分配给J,应该从键盘输入7。
(8)如果有以下程序
主()
{ int p,a = 5;
如果(p=a!=0)
printf("%d\n ",p);
其他
printf("%d\n ",p+2);
}
执行后的输出结果是8。
(9)如果有以下程序
主()
{ int a=4,b=3,c=5,t = 0;
if(a if(a printf("%d %d %d\n ",a,b,c);
}
执行后的输出结果是9。
(10)如果下列程序可用,
主()
{ int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0 } };
int i,j,s = 0;
for(I = 0;我& lt4;i++)
{ for(j = 0;j & lt4;j++)
{ if(a[I][j]& lt;0)继续;
if(a[i][j]==0)破;
s+= a[I][j];
}
}
printf("%d\n ",s);
}
执行后的输出结果是10。
(11)如果下列程序可用,
主()
{ char a;
A = ' H '-' A '+' 0 ';
打印(" %c\n ",a);
}
执行后的输出结果是11。
(12)如果下列程序可用,
int f(int x,int y)
{ return(y-x)* x;}
主()
{ int a=3,b=4,c=5,d;
d=f(f(3,4),f(3,5));
printf("%d\n ",d);
}
执行后的输出结果是12。
(13)杨辉的作用是将杨辉三角形的数据赋给二维数组的下半个三角形,形式如下。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
它的组成规律是:
第0列和主对角线上的元素都是1。
其余的元素是左上角和它们正上方的元素的总和。
每行的数据量增加了1。
请完成程序。
#定义N 6
void杨辉(int *[N][N])
{ int i,j;
x[0][0]=1
for(I = 1;I { x[I][0]= 13 = 1;
for(j = 1;j x[I][j]= 14;
}
}
(14)以下函数的作用是删除字符串s中的所有数字字符,请填空。
无效删除(字符)
{ int n=0,I;
for(i=0,s[I];i++)
如果(15)
s[n++]= s[I];
s[n]= 16;
}
(15)定义函数findbig,找出三个数的最大值。下面的程序将使用函数指针来调用findbig函数。请填空。
主()
{ int findbig(int,int,int);
int (*f)(),x,yz,z,big
f = 17;
scanf("%d%d%d ",& ampx & amp;y & amp;z);
big=(*f)(x,y,z);
printf("bing=%d\n ",big);
}
(16)以下程序的输出是18。
#定义MCRA(米)2 *米
#定义MCRB(n,m) 2*MCRA(n)+m
主()
{ int i=2,j = 3;
printf("%d\n ",MCRB(j,MCRA(I)));
}
(17)具有以下定义
结构ss
{ int info结构ss *链接;}x,y,z;
并建立了如下图所示的链表结构:
□□ →□□→□□
X Y Z
删除y点请写赋值语句19。
(18)有一个文本文件test.txt,内容是:大家好!。在下面的程序中,文件test.txt已经被正确地打开用于“读取”。如果文件指针fr指向文件,程序的输出结果是20。
#包括
主()
{ FILE * fr字符串[40];
……
fgets(str,5,fr);
printf("%s\n ",str);
fclose(fr);
}
2003年4月全国计算机等级考试二级C笔试答案
一、选择题
1-5:CDDAD 6-10:BACDB 11-15:CABDB 16-20:ADCAA
21-25:CBD ab 26-30:DCD ab 31-35:CBD cc 36-40:CCBAC
41-45:CAAAC 46-50:DBDDA
第二,填空
(1) 64
(2)复制A.TXT+B.TXT A.TXT
(3) @
(4)用户>出去。数据;数字录音带
(5) PRN或LPT1或LPT2。
(6) -3
(7) i=10,j=20
(8) 1
(9) 5 0 3
(10) 58
(11) 7
(12) 9
(13) x[i][i]和X[I-1][J-1]+X[I-1][J]
(14) !(s[I]& gt;= ' 0 ' & amp& amps[I]& lt;='9 ')和' \0 '
(15) findbig
(16) 16
(17)x . link = y . link;
该死的