福建省计算机等级考试二级选择题(附答案)

福建省计算机等级考试二级选择题(附答案)
福建省计算机等级考试二级选择题(附答案)

一、单项选择题

(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-20 && x<-5 ④ -20

(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 ”命令的作用是在预处理时将stdio.h文件中的实际内容代替该命令

(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 )。(说明:代表换行,__代表空格)

① 1356 ② 135__6 ③ 1356 ④ 135__6__

(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];

相关主题
相关文档
最新文档