福建省计算机等级考试二级选择题(附答案)
一、单项选择题
(1). 下面程序运行后,文件d_f.dat的内容是(1 )。
main()
{ FILE *fp; int i=10,j=20;
fp=fopen("d_f.dat","w");
fprintf(fp,"%d ",i);
fclose(fp);
fp=fopen("d_f.dat","a");
fprintf("%d ",j);
fclose(fp);
}
① 10 20 ② 20 ③ 20 10 ④ 10
(2). 若有定义:enum day{sun,mon, tue, wed, thu, fri, sat} ; ,则枚举常量sun、mon的值分别为(4 )。
① 7 0 ② 1 2 ③ 7 1 ④ 0 1
(3). 下列程序段运行后,表达式( 2 )的值为3。
struct point
{ int x;
int y;
} *p;
struct point a[3]={1,2,3,4,5,6};
p=a;
①p[3].x ②p[1].x ③ *(p+2) ④p[2].x
(4). 以下程序段的运行结果是(3 )。
int x[]={2,3,4,5,6,7},*p=x;
int i,s=0;
for(i=1;i<5;i++) s+=p[i++];
printf("%d",s);
① 20 ② 14 ③ 8 ④ 6
(5). C语言的函数体由( 1 )括起来。
① { } ② [ ] ③ < > ④ ( )
(6). 若有定义:int x,y,z; 语句 x=(y=z=3,++y,z+=y); 运行后,x的值为(2 )。
① 7 ② 6 ③ 8 ④ 3
(7). 若有定义:int x; char c='A'; 则正确的赋值表达式是( 4 )。(说明:'A'的ASCII码的十进制值为65,'a'的ASCII码的十进制值为97)
① x='ABC' ② x=c+'ABC' ③ x=c+'CBA' ④ x=c+32
(8). 下面叙述错误的是( 3 )。
① C语言规定可逐个引用数组元素但不能一次引用整个数组②数组中每一个元素都属于同一个数据类型③ C语言数组长度在定义数组时可不作确定④C语言数组名称是数组在内存中的首地址
(9). 以下程序的运行结果是( 4 )。
int f(int c)
{ c+=2;
return c ;
}
main()
{ int a=2,c=5;
a=f(a);
printf("%d %d \n",a ,c);
}
① 2 4 ② 2 5 ③ 4 4 ④ 4 5
(10). C语言中,二维数组元素在内存中的存放顺序是(3)。
①由用户自己定义②按列存放③按行存放④随机存放
(11). 以下程序的运行结果是( 1 )。
#define X a+b
main( )
{ int a=3,b=4,s1;
s1=2*X;
printf("%d\n",s1);
}
① 10 ② 14 ③ 8 ④ 6
(12). 若有定义:char str1[10],str2[10]="Fujian"; ,能将字符串"Fujian"赋给数组str1的正确语句是( 1 )。
① strcpy(str1,str2); ② strcpy(str2,str1); ③ strcopy(str1,str2);
④ str1="Fujian";
(13). 若有定义: int i,x; ( 3 )不是死循环。
① for( ; ;i+=2) ; ② for(i=10; ;i--) ; ③ for(x=5;x>0;x--) ; ④while(x=1) ;
(14). 只能向终端输出一个字符的是( 1 )。
① putchar()函数② scanf()函数③ printf()函数④ getchar()函数
(15). C语言的基本数据类型包括( 3 )。
①整型、字符型、指针型②整型、实型、逻辑型③整型、实型、字符型④整型、实型、空类型
(16). 若有定义:int a,b=5; 语句a=(b/2)+b%2; 运行后,a的值为( 2 )。
① 4 ② 3 ③ 2 ④ 0
(17). x的值在-20至-5之间为“真”,否则为“假”的正确逻辑表达式为
( 3 )。
① !(x>-20) && !(x<-5) ② -5 (18). 以下程序的运行结果是( 3 )。 void main() {int a,b=2,c=6; a=3; if(a>6) a=a+b; else if(a==6) b=a+c; else a=b+c; printf("%d\n",a); } ① 5 ② 6 ③ 8 ④ 9 (19). 若有定义:int a[3][4]={{1,2},{3,4},{5,6,7}}; ,则a[1][1]的值为( 4 )。 ① 2 ② 3 ③ 1 ④ 4 (20). 若有定义: struct teacher {int num; char sex; int age; }teacher1; 则下面叙述错误的是( 4 )。 ① struct是结构类型的关键字② struct teacher是用户定义的结构类型 ③ num、sex、age都是结构变量teacher1的成员④ teacher1是结构类型名 (21). ( 1 )是关于C语言数据类型的正确叙述。 ①变量使用前应定义相应的数据类型②不允许使用空类型③枚举类型不是基本类型④数组不是构造类型 (22). ( 4 )为非法的字符串常量。 ① "case" ② " " ③ "056" ④ '123' (23). 若有定义:int b=-15; 则( 2 )为正确的赋值表达式。 ① b=*5 ② b+=b*3 ③ *b=6 ④ b+10=-5 (24). 若有定义:int a,b=6; 语句a=--b; 运行后,a、b的值分别是( 4 )。 ① 6 5 ② 5 6 ③ 6 6 ④ 5 5 (25). 若有定义 float x; 要从键盘输入数据6.02赋给x,则应选用( 3 )语句。 ① scanf("%1.2f",&x); ② scanf("%4.2f",&x); ③ scanf("%f",&x); ④scanf("%8.2f",&x); (26). 若有定义:int a=1,b=2,c=3,d=4,t=2,k=2; 语句(t=a ① 0 ② 2 ③ -1 ④ 1 (27). 若有定义:int a=6,b=7,k=0,t=1; 语句 (k=a ① 0 0 ② 1 1 ③ 1 0 ④ 0 1 (28). 以下程序段运行时,若从键盘输入5,则运行结果是(4 )。 int a,y=10; scanf("%d",&a); if (a>10) y=a+6; printf("%d\n",y+a); ① 10 ② 16 ③ 11 ④ 15 (29). 以下程序段运行后x的值为( 1 )。 int i=0,x=2; while(i++<=5) {x+=2; } ① 14 ② 12 ③ 8 ④ 10 (30). 以下程序段运行后x的值为(4 )。 int a[8]={1,2,3,4,5,6,7,8},i,x=0; for(i=0;i<8;i++,i++) x=x+a[i]; ① 20 ② 18 ③ 36 ④ 16 (31). 以下程序段运行后s的值是( 2 )。 int a[3][3]={1,2,3,1,2,3,1,2,3}; int i,j,s=0; for(i=0;i<3;i++) for(j=i;j<3;j++) s+=a[i][j]; ① 15 ② 14 ③ 13 ④ 12 (32). 以下程序的运行结果是( 2 )。 int a=2,b=3; int min(int a,int b) { int c; c=a return(c); } main() { int a=4; printf("%d",min(a,b)); } ① 4 ② 3 ③ 2 ④ 2,3 (33). 若有定义:#define PI 3,则表达式PI*2*2的值为( 2 )。 ① 322 ② 12 ③ 4 ④不确定 (34). 以下程序段运行后*(p+1)的值为( 2 )。 char a[]="good"; char *p; p=a; ① a[1]的地址② 'o' ③不确定④ 'g' (35). 以下程序段运行后x的值为( 4 )。 int a[]={1,2,3,4,5,6,7,8}; int i,x,*p; x=1; p=&a[1]; for(i=0;i<3;i++) x*=*(p+i); ① 6 ② 1 ③ 120 ④ 24 (36). 以下程序段的运行结果是( 4 )。 union { int num1; int num2; }s; s.num1=20; s.num2=30; printf("%d",s.num1); ① 20 ② 2030 ③ 50 ④ 30 (37). 下面程序运行后,屏幕显示File open error!,则可能的原因是( 4 )。#include main() { FILE *fp; char str[256]; fp = fopen("test.txt", "rt"); if(fp==NULL) { printf("File open error!"); return; } fscanf(fp,"%s",str); fclose(fp); } ①当前工作目录下的test.txt文件是空文件②函数fopen()的参数是错误 的③ test.txt文件已经打开④当前工作目录下没有test.txt文件 (38). (1 )为正确的用户标识符。 ① max_at ② 3_row ③ union ④ min-5 (39). 若有定义:int x,a,b; 语句x=(a=2,b=3,a+b); 运行后,x、a、b的值依次为( 2 )。 ① 2 3 5 ② 5 2 3 ③ 5 3 2 ④ 3 2 5 (40). 下面叙述正确的是( 2 )。 ①模运算符"%"两边运算数的数据类型是任意的② C语言中整型与字符型变量的混合运算表达式的结果是整型③ (3+9)++ 是正确表达式④"abc"+"xxx"是正确表达式 (41). 若有定义 int a=8,b=5; 要实现输出形式为: 8*5=40 ,正确的printf()函数调用语句是( 4 )。 ① printf("a*b=%d\n",a*b); ② printf("%d*%d=a*b\n",a,b); ③ printf("a*b=a*b\n"); ④ printf("%d*%d=%d\n",a,b,a*b); (42). 下列运算符中优先级最低的是( 1 )。 ① = ② ! ③ > ④ * (43). 以下程序段的运行结果是( 4 )。 int s=15; switch(s/4) {default: printf("Over "); case 1: printf("One "); break; case 2: printf("Two "); } ① One ② Two ③ Over Two ④ Over One (44). 下面叙述正确的是( 1 )。 ① for循环的循环体可包含多条语句,但必须用花括号{ }括起来② for循环只能用于循环次数已经确定的情况③在for循环中,不能用break语句跳出循环体④ for循环是先执行循环体语句,后判断表达式 (45). 若有定义:int arr[15],n=5; 无法正确引用arr数组元素的是( 4 )。 ① arr[15-n] ② arr[0] ③ arr[n] ④ arr[10+n] (46). 以下程序段的运行结果是( 4 )。 char str[3][2]={ 'a','b','c','\0','e','f'}; printf("%s",str[0]); ① abcef ② a ③ abc\0ef ④ abc (47). 以下程序段运行后*(p++)的值为( 3 )。 char a[5]="work"; char *p; p=a; ① a[0]的地址② 'o' ③ 'w' ④ a[1]的地址 (48). 若有定义: struct data { char a; float b[3]; long c; }d1; 则变量d1的长度是( 4 )。 ①12 ②4 ③ 15 ④17 (49). 若有定义:int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a; ,则( 3 )表达式是错误的。 ① p++ ② a[2] ③ a++ ④ p[2] (50). 若由定义: typedef int NUM[100]; NUM n; 则( 3 )语句是正确的。 ① NUM=n; ② n=2; ③ n[0]=2; ④ NUM=2; (51). 下面程序运行后,屏幕显示write ok!,则下面叙述正确的是( 3 )。main() { FILE *fp; fp=fopen("data.txt", "wt"); if(fp!=NULL) { fprintf(fp,"%s\n", "File write successed!\n"); fclose(fp); printf("write ok!\n"); } } ①当前工作目录下找不到data.txt文件②当前工作目录下存在data.txt文件,其中的内容是“write ok!” ③当前工作目录的data.txt文件已经关闭 ④当前工作目录的data.txt文件已经打开 (52). ( 3 )为正确的变量名。 ① case ② else ③ pro_5 ④ 5_pro (53). 若有定义:float x=2,y; int a=3; 语句y=1*(x+a)/3; 运行后,y的值为( 3 )。 ① 1.0 ② 0 ③ 1.666667 ④ 2.0 (54). 若有定义:int x,a; 赋值语句a=(x%3==0)?0:1; 与( 4 )语句不等价。 ① if (!(x%3==0)) a=1; else a=0; ② if (x%3!=0) a=1; else a=0; ③ if (x%3==0) a=0; else a=1; ④ if (x%3) a=0; else a=1; (55). 以下程序段的运行结果是( 1 )。 int t[][3]={1,2,3,4,5,6,7,8,9,10,11,12}; printf("%d\n",t[1][1]); ① 5 ② 3 ③ 1 ④ 4 (56). 以下程序段运行后a的值为( 2 )。 int a=2; a=strcmp("miss","miss"); ① 1 ② 0 ③ true ④ -1 (57). 以下程序的运行结果是( 2 )。 fun() { static int a=0; a++; printf("%d ",a); } main() { int i; for(i=1;i<=2;i++) fun(); } ① 1 1 ② 1 2 ③ 0 1 ④ 0 0 (58). 若有定义:int *p1,*p2; ,则不能用于指针变量p1、p2之间的运算符是( 4 )。 ① = = ② = ③ - ④ + (59). 以下程序段的运行结果是( 2 )。 int x[3]={1,2,3}; int *p; p=x; for(p++;p<&x[2];p++) printf("%d ",*p); ① 3 ② 2 ③ 2 3 ④ 1 2 (60). 下列( 4 )对结构类型变量定义是错误的。 ① struct {int num; int age; }teach1,teach2; ② struct teacher {int num; int age; }teach1; ③ struct teacher {int num; int age; }; struct teacher teach1; ④ struct {int num; int age; }teacher; struct teacher teach1; (61). 若有定义: char ch ; int j, k ; enum day{sun, mon, tue, wed, thu, fri, sat} ; int a[sat]; 则( 2 )对下列语句是否符合语法规则的判断是正确的。 sun=0 ; /* 语句1 */ j=mon+tue ; /* 语句2 */ if(a[mon]>0) j ++ ; /* 语句3 */ ①语句1、2、3均错误②语句1错误,语句2和语句3正确③语句1、2、3均正确④语句2正确,语句1和语句3错误 (62). 下面叙述正确的是( 2 )。 ①程序中必需含有自定义函数②所有语句都必须以分号";"结束③ main()函数必须位于源程序文件的开头④每行最多只能写两条语句 (63). 若有定义:float x=3.5,y=3.6; 则表达式( 2 )的值为6。 ① (int)(x+y) ② (int)x+(int)y ③ int(x+y) ④ x+y (64). 以下程序段运行后x的值为( 1 )。 int i=0,x=0; for(;i<=5;i++,i++) {x+=3;} ① 9 ② 15 ③ 6 ④ 12 (65). 若有定义:int a[3][2]; ,则表达式&a[2][1]-a的值为( 3 )。 ① 5 ② 4 ③ 3 ④ 2 (66). 以下程序的运行结果是( 4 )。 int fun(int array[3][3]) { int j; for(j=0;j<3;j++) array[1][j]++; printf("\n"); } main() { int j,a[3][3]={0,1,2,1,0,4,2,4,5}; fun(a); for(j=0;j<3;j++) printf("%2d",a[1][j]); printf("\n"); } ① 1 0 4 ② 1 2 3 ③ 0 1 2 ④ 2 1 5 (67). 下面叙述错误的是( 1 )。 ①宏定义也是C语句,必须在行末加分号②“#define PRICE 30”命令的作用是定义一个与30等价的符号常量PRICE ③ C源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率④“#inclue (68). 下面叙述错误的是( 4 )。 ①任何指针变量都可以与空指针NULL进行比较②一个指针变量只能指向同一类型的变量③一个变量的地址称为该变量的指针④可以将一个整数值赋给指针变量 (69). 以下程序段运行后x的值为( 4 )。 int a[]={1,2,3},b[]={4,3,3}; int *p,*q; int i,x; p=a; q=b; for(i=0;i<3;i++) if(*(p+i)==*(q+i)) x=*(p+i)*2; ① 4 ② 2 ③不确定④ 6 (70). 以下程序的运行结果是( 2 )。 main() { int a[3]={1,2,3}; int *num[3]; int **p,i; for(i=0;i<3;i++) num[i]=&a[i]; p=num; printf("%d",**p); } ① &a[0] ② 1 ③ 3 ④ num (71). ( 2 )不是文件读库函数。 ①fgetc() ② fputs() ③fscanf() ④fread() (72). C源程序中main()函数的位置( 4 )。 ①必须位于程序的最前面②可以在自定义函数后面③必须在自定义函数前面④必须在系统库函数后面 (73). 若有定义:int a=3; 语句a+=a-=a*a; 运行后,a的值为( 3 )。 ① -6 ② -3 ③ -12 ④ 0 (74). 若有语句 int a; char c; scanf("%3d%c",&a,&c); 为将整数135赋给a,字符'6'赋给c,正确的数据输入方式是( 3 )。(说明: ① 135 (75). 若有定义:int x=1,y=2,z=3; 则表达式( 2 )的值为0。 ① x>y || x (76). 以下程序段运行后x的值为( 4 )。 int a=3,b=6,x; x=(a==b)?a++:--b; ① 3 ② 4 ③ 6 ④ 5 (77). 若有定义: int i,x=0; 语句for(i=1;i<=3;i++) x+=2;与下列( 2 )程序段不等价。 ① i=1; for( ;i<=3;i++) x+=2; ② i=1; for( ; ;i++) x+=2; ③ i=1; for( ;i<=3; ) {x+=2; i++; } ④ for(i=1;i<=3; ) {x+=2; i++;} (78). ( 3 )能正确定义一个指向函数的指针。 ① int (*p)() ② int (*p()) ③ int *p() ④ (int *)p() (79). 若有定义:enum num{a1,a2=3,a3,a4=10} ; ,则枚举常量a2、a3的值分别为( 2 )。 ① 2 3 ② 3 4 ③ 3 3 ④ 1 2 (80). C语言中,对文件操作的一般步骤是( 4 )。 ①打开文件,定义文件指针,读写文件,关闭文件②定义文件指针,读文件,写文件,关闭文件③操作文件,定义文件指针,修改文件,关闭文件④定义文件指针,打开文件,读写文件,关闭文件 (81). 若有定义:int i=3,j=6; 则表达式(--i)*(j++)的值为( 2 )。 ① 18 ② 12 ③ 10 ④ 15 (82). 若有定义: int a; 且表达式 !a的值为0,则表达式( 4 )的值为1。 ① !(a<0 || a>0) ② a=0 ③ a==0 ④ a!=0 (83). 以下程序段运行后x的值为( 4 )。 int a[8]={1,2,3,4,5,6,7,8},i,x=0; for(i=1;i<8;i++,i++) x=x+a[i];