C、stutype是用户定义的结构体类型名。 D、a和b都是结构体成员名。
144、以“w+”方式打开一个文件,下列描述中正确的是( C)(2分)
A、文件打开时,原有文件内容不被删除,位置指针移动文件末尾,可进行写和读操作。 B、文件打开时,原有文件内容不被删除,位置指针移动文件开头,可进行重写和读操作。 C、文件打开时,原有文件内容被删除,可进行写和读操作。 D、以上说法都不正确。
145、若变量已正确定义并赋值,下面符合C语言语法的表达式是(B)(2分) A、 a:=b+1 B、 a=b=c+2 C、 int 18.5%3 D、 a=a+7=c+b
146、为表示“x大于等于y, y大于等于z”,应使用C语言表达式(A)(2分) A、(x>=Y)&&(Y>=z)
B、(x>=Y)AND(y>=z) C、(x>=Y>=z) D、(x>=Y)&(Y>=z)
147、若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句是(C)(2分) A、a=a+b, b=a-b, a=a-b; B、t=a; a=b; b=t; C、a=t; t=b; b=a;D、t=b; b=a; a=t;
148以下语句char c='a';if('a' 149、程序段 int a=1,b=2, c=3, t; while (a 150若二维数组a有m列,则在a[i][j]前面的元素个数为( 不 )。(2分) A、j*m+iB、i*m+j C、i*m+j-1D、i*m+j+1 151、以下不正确的定义语句是( B )。(2分) A、double x[5]={2.0,4.0,6.0,8.0,10.0}; B、int y[5]={0,1,3,5,7,9}; C、char c1[]={‘1’,’2’,’3’,’4’,’5’}; D、char c2[]={‘\\x10’,’\\xa’,’\\x8’}; 152、若有说明:int a[][4]={0,0};则下面正确的叙述是( )。(2分) A、数组a中每个元素均可得到初值0 B、二维数组a的第一维大小为1 C、因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1 D、只有元 素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0 153 表示指向结构体变量的指针的运算符是(C )(2分) A、>>B、<< C、-> D、: 155、若执行以下程序段: int a=0, b=0, c=0;c=(a-=a-5), (a=b, b+3); printf(“%d,%d,%d\\n”,a, b, c); 其输出结果是(B)(2分) A、0,0,-10 B、0,0,5 C、-10,3,-10 D、3,3,-10 156、程序段char a[7]=”abcdef”; char b[4]=”ABC”; strcpy(a,b); printf(“%c”,a[5]); 输出结果是( D )。(2分) A、一个空格 B、\\0 C、e D、f 157在C语言中,若对函数类型未加明显式说明,则函数的隐含类型是( C )类型。(2分) A、void B、double C、int D、char 158、对于某个函数调用,不用给出被调用函数的原形的情况是( C )。(2分) A、被调用函数是无参函数 B、被调用函数是无返回值的函数 C、函数的定义在调用处之前 11 D、函获得的定义在别的程序文件中 5、若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是(A)(2分) A、 2.500000 B、 2.750000 C、 3.500000 D、 0.000000 160、以下运算符中,运算对象必须是整型的是 (B)(2分) A、 / B、 %= C、 != D、〈= 7、若变量已正确说明为float类型,要通过语句scanf(\给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:(B)(2分) A、 10<回车>22<回车>33<回车>B、 10.0,22.0,33.0<回车>C、 10.0<回车>22.0 33.0<回车> D、 10 22<回车>33<回车> 161、若有定义:int a=3,b=2,c=1;并有表达式:①a%b,②a>b>c,③b&&c+1,④c+=1,则表达式值相等的是( C )。(2分) A、①和②B、②和③C、①和③D、③和④ 162、在C语言中,一位数组的定义方式为:类型说明符 数组名(A)。(2分) A、[常量表达]B、整型表达式C、[整型常量]或[整型表达式] D、[整型常量] 163、若用数组名作为函数调用的实参,传递给形参的是( A )。(2分) A、数组的首地址B、数组第一个元素的值C、数组中全部元素的值D、数组元素的个数 164、能正确进行字符串赋值的是( B )。 (2分) A、char s[5]={'a','e','i','o','u'}; B、char s[5]; s=\、char s[5]=\ D、char s[5]; s[ ]=\ 165、C语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为( D )。 (2分) A、该数组的长度 B、该数组的元素个数 C、该数组中各元素的值D、该数组的首地址 166、已知:int a[10],*p=a;则下面说法不正确的是 ( A )。(2分) A、p指向数组元素a[0] int a[10],*p=&a[0];与上述语句等价 D、以上均不对 167、下列关于文件指针的描述中,错误的是(D )(2分) A、文件指针是由文件类型FILE定义的。 B、文件指针是指向内存某个单元的地址值。 C、文件指针是用来对文件操作的标识。 D、文件指针在一个程序中只能有一个。 168C语言程序能够在不同的操作系统下运行,这说明C语言具有很好的(B)(2分) A、适应性B、移植性 C、兼容性D、操作性 169、以下叙述不正确的是(D)(2分) A、在C程序中,逗号运算符的优先级最低 B、在C程序中,APH和aph是两个不同的变量 C、若a和b类型相同,在执行了赋值表达式a=b后b的值将放入a中,而b的值不变 D、当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值 170、逻辑运算符两侧运算对象的数据类型可以是( D )。(2分) A、只能是0或1B、只能是0或非0正数 C、只能是整型或字符型数据 D、可以是任何类型的数据 171、设int a=3,b=4,c=5,则下面表达式中,值为0的表达式是( D )。 (2分) A、'a'&&'b'B、a<=b C、a||b+c&&b-cD、!((a 172、有int n=0,p;do{scanf(“%d”,&p);n++;}while(p!=12345&&n<3);此处循环的结束条件是( D )。(2分) B、数组名a表示数组中第一个元素的地址 C、 12 A、P的值不等于12345并且n的值小于3 B、P的值等于12345并且n的值大于等于3 C、P的值不等于12345或者n的值小于3 D、P的值等于12345或者n的值大于等于3 173、 一个完整的C源程序是( B )。 (2分) A、要由一个主函数(或)一个以上的非主函数构成 B、由一个且仅由一个主函数和零个以上(含零)的非主函数构成 C、要由一个主函数和一个以上的非主函数构成 D、由一个且只有一个主函数或多个非主函数构成 174、在C语言中,若需一变量只在本文件中所有函数使用,则该变量的存储类别是( D )。(2分) A、extern B、register C、autoD、static 175、已知:char s[10],*p=s;则在下列语句中,错误的语句是 ( B )。(2分) A、p=s+5; B、s=p+s; C、s[2]=p[4]; D、*p=s[0]; 1`76、以“w+”方式打开一个文件,下列描述中正确的是(B )(2分) A、被打开的文件一定要存在。 B、被打开的文件既可以写又可以读。 C、被打开的文件内容不被删除。 D、被打开的文件可以是文本文件,也可以是二进制文件或其它类型的文件。 177、在C语言中,int型数据在内存中是以(B)形式存储的。(2分) A、原码 B、补码 C、ASCII码 D、反码 179、若要用fopen函数打开一个新的二进制文件,该文件既能读也能写,则文件打开方式为(B )(2分) A、ab+B、wb+ C、rb+D、ab 180、若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是(C)(2分)A、a=b=c=100; B、d++; C、c+b; D、d=(c=22)-(b++); 181下列循环语句会进入死循环的是( c )。 (2分) A、i=0; do { i++; }while(i = =100); B、for(i=0; i<100; i+=3.14); C、for(i=0; ; i+=2); D、k=1; do { k--;} while(k); 183、下面的函数是无参函数的是A )。(2分) A、main()B、int max(int x, int y) C、return(z)D、scanf(\ 184、有函数fun ( float x ) { float y; y= 3*x-4; return y; },其函数值的类型是( D )。(2分) A、intB、不确定 C、void D、float 185、下述标识符中,(B)是合法的用户标识符。(2分) A、 A#C B、 getch C、 void D、 ab* 188、以下运算符中优先级最低的算符为(B)(2分) A、&& B、 ?: C、!= D、|| 190、执行语句int x=5,a=0,b=0;if(x=a+b) printf(\后,结论是( D )。(2分) A、有语法错,不能通过编译B、能通过编译,但不能连C、输出****D、输出 #### 191、以下描述正确的是(C )。(2分) A、goto语句只能用于退出多层循环B、switch语句中不能出现continue语句 C、只能用continue语句来终止本次循环D、在循环中break语句不能独立出现 192、C语言规定,数组名做实参时,它和对应形参之间的数据传递方式是( D )。(2分) A、用户指定传递方式B、无传递C、单向值传递D、地址传递 193、以下所列的各函数首部中,正确的是( C )。(2分) 13 A、void play(var a:integer,var b:integer) B、void play(int a,b) C、void play(int a,int b) D、sub play(a as integer,b as integer) 194、已知:char s1[4]=\char *ptr; 则执行ptr=s1; printf(\语句后输出为 ( A )。 (2分) A、字符'2' B、字符'1' C、字符'2'的地址 D、不确定 195、若变量已正确定义,执行以下语句: x=5.16894; printf(“%f\\n”, (int)(x*1000+0.5)/(float)1000); 的输出结果是(D)(2分) A、输出格式说明与输出项不匹配,输出无定值 B、5.17000 C、5.168000 D、5.169000 196、在C语言中,以下正确的描述是( B )。(2分) A、 函数的定义可以嵌套,但函数的调用不可以嵌套B、 函数的定义不可以嵌套,但函数的调用可以嵌套 C、 函数的定义和函数的调用均不可以嵌套D、 函数的定义和函数的调用均可以嵌套 197、下述对C语言字符数组的描述中错误的是( C )。(2分) A、字符数组可以存放字符; B、字符数组中的字符串可以整体输入、输出; C、可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值; D、不可以用关系运算符对字符数组中的字符串进行比较。 199、C语言程序由函数组成,它的( B )。(2分) A、主函数必须在其它函数之前,函数内可以嵌套定义函数 函数内不可以嵌套定义函数 C、主函数必须在其它函数之前,函数内不可以嵌套定义函数 D、主函数必须在其它函数之后,函数内可以嵌套定义函数 200、在定义函数中指定的形参,在未出现函数调用时(B )。(2分) A、占用固定大小的内存B、不占用内存C、不确定D、占用大小不确定的内存 201、C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符(C)(2分) A、 必须为字母 B、 必须为下划线 C、 必须为字母或下划线 D、 可以是字母,数字和下划线中任一字符 202、若从终端输入以下数据,要给变量c赋以283.19,则正确的输入语句是(D)(2分) A、scanf(\、scanf(\ C、scanf(\ D、scanf(\ 203、若有定义: int a[5]; 则对数组中首元素的地址可以表示为(C)。(2分) A、&a B、a+1 C、a D、&a[1] 204、在C语言中,以下数据类型关键字不合法的是(C)(2分) A、double B、short C、integer D、char 205、设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:scanf(\为了把100和765.12 分别赋给i和f,则正确的输入为(B)(2分) A、 100765.12 B、 i=100,f=765.12 C、 100 765.12 D、 x=100y=765.12 206、若已定义char s[2][40]={\;则在下面表达式中能表示字符‘E’的地址的是( C )。 (2分) A、&s[2][1] B、s[1] C、&s[1] D、&(s[1]+1) 207、以下正确的说法是( C )。(2分) A、定义函数时,形参的类型说明可以放在函数体内 B、return后边的值不能为表达式 C、如果函数值的类型与返回值类型不一致,以函数值类型为 B、主函数可以在其它函数之后, 14 准 D、如果形参与实参的类型不一致,以实参类型为准 208、已知:int a[]={1,2,3,4},y,*p=&a[0]; 则执行语句\后,下面( A )元素的值发生了变化。 A、a[0] B、a[1] C、a[2] D、都没发生变化 209、已有定义“struct xy{int a; double b;}m;”,变量m的成员a的正确表示是(A )(2分) A、m.a B、m->a C、*m.a D、xy.a 210、下列打开文件的方式中,对二进制文件操作的是(D )(2分) A、rB、a C、w+ D、rb+ 211、以下不是关键字的是(C)(2分) A、continue B、char C、If D、default 212、下面有关for循环的正确描述是( D )。(2分) A、for循环只能用于循环次数已经确定的情况。 B、for循环是先执行循环体语句,后判断表达式。 C、在for循环中,不能用break语句跳出循环体。 D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来。 214、已知:char s[100]; int i=10;则在下列引用数组元素的语句中,错误的表示是 ( D )。(2分) A、s[i+10] B、*(s+i) C、*(i+s) D、*((s++)+i 一、单项选择题(25道小题,共50分) 1、C语言规定,在一个源程序中,main函数的位置(C) (2分) A、必须在最开始 B必须在系统调用的库函数的后面 C、 可以任意 D、 必须在最后 2、以下叙述中正确的是 (C)(2分) A、用C语言实现的算法必须要有输入和输出操作 B、用C语言实现的算法可以没有输出但必须要有输入 C、用C程序实现的算法可以没有输入但必须要有输出 D、用C程序实现的算法可以既没有输入也没有输出 3、以下叙述不正确的是(D)(2分) A、在C程序中,逗号运算符的优先级最低 B、在C程序中,APH和aph是两个不同的变量 C、若a和b类型相同,在执行了赋值表达式a=b后b的值将放入a中,而b的值不 D、当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值 4、C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符(C)(2分) A、 必须为字母B、 必须为下划线 C、 必须为字母或下划线 D、 可以是字母,数字和下划线中任一字符 5、在C语言中,int型数据在内存中是以(B)形式存储的。(2分) A、原码 B、补码 C、ASCII码 D、反码 6、已有定义:int x=3,y=4,z=5;则表达式!(x+y)+z-1 && y+z/2的值是(D)(2分) A、 6 B、 0 C、 2 D、 1 7、若从终端输入以下数据,要给变量c赋以283.19,则正确的输入语句是(D)(2分) A、scanf(\、scanf(\、scanf(\、scanf(\ 8、执行下列语句: double d; float f; long L; int i; i=f=L=d=20/3; printf(\ 输出结果是(小数点后只写一位) (A)(2分) A、6 6 6.0 6.0 B、 6 6 6.7 6.7 C、6 6 6.0 6.7 D、 6 6 6.7 6.0 15