一、单项选择题(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(\%ld %f %f \\n\i,L,f,d); 输出结果是(小数点后只写一位) (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
9、若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是(A)(2分) A、 0 B、 0.5 C、 1 D、 2
10、下述表达式中,( A )可以正确表示x≤0或x≥1的关系。(2分)
A、(x>=1) || (x<=0) B、x>=1 | x<=0 C、x>=1 && x<=0 D、(x>=1) && (x<=0) 11、以下语句char c='a';if('a' A、LOW B、UP C、LOWUP D、语句错误,编译不能通过 12、程序int k= 4,a=3,b=2,c=1;printf(\%d\\n\?c :a);的运行结果是( D )。 (2分) A、4 B、3 C、2 D、1 13、对于程序段int x=-1; do { x=x*x; }while(!x);说法正确的是(C )。(2分) A、是死循环 B、循环执行两次 C、循环执行一次 D、有语法错误 14、设有int k=10;while (k=0) k=k-1;则下面描述中正确的是( C )。 (2分) A、while循环执行10次 B、循环是无限循环 C、循环体语句一次也不执行D、循环体语句执行一次 15、下列循环语句会进入死循环的是( 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); 16、以下描述正确的是( C )。(2分) A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。 C、在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。 D、do-while循环中,根据情况可以省略while 17、以下对二维整形数组a的正确说明是( C )。(2分) A、int a[3][]; B、float a(3,4); C、double a[1][4]; D、float a(3)(4) 18、对两个字符数组a和b进行初始化char a[ ]=\ char b[ ]={'A','B','C','D','E','F'}; 则以下叙述正确的是( D )。 (2分) A、a与b数组完全相同 B、a与b长度相同 C、a和b中都存放字符串 D、a数组比b数组长度长 19、以下不正确的定义语句是(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’}; 20、程序段 char c[ ]=\ printf(\的运行结果是( B )。 (2分) A、14 B、3 C、9 D、字符串中有非法字符,输出值不确定 21、实际参数不能是(D )。(2分) A、常量 B、变量 C、表达式 D、不确定值 22、函数调用结束后,形式参数(C )。(2分) A、继续占用相同大小的内存 B、占用的内存减小 C、释放内存 D、不确定 23、已知:int a,*p=&a;则下列函数调用中错误的是( D )。(2分) A、scanf(\ B、scanf(\ C、printf(\ D、printf(\24、设有说明语句“struct stu{ int a; float b;}stutype;”,则叙述不正确的是D )(2分) A、struct是结构体类型的关键字。 B、struct stu是用户定义的结构体类型。 C、stutype是用户定义的结构体变量名。 D、a和b都是结构体变量。 25、系统的标准输入文件是指是(A )(2分) A、键盘 B、显示器 C、软盘 D、硬盘 26、C语言程序的执行,总是起始于(C)(2分) A、程序中的第一条可执行语句 B、程序中的第一个函数 C、main函数 D、包含文件中的第一个函数 27、以下不是结构化程序设计方法的是(B)(2分) A、循环结构 B、模块结构 C、顺序结构 D、选择结构 28、优先级最高的为(C)。(2分) A、 && B、 ?: C、 != D、 || 29、以下选项中正确的整型常量是(B)(2分) A、5. B、-10 C、1.000 D、4/5 30、设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D)(2分) A、 6.500000 B、 6 C、 5.500000 D、 6.000000 31、以下选项中,与k=n++完全等价的表达式是(A)(2分) A、 k=n,n=n+1 B、 n=n+1,k=n C、 k=++n D、 k+=n+1 32、以下选项中不是C语句的是(C)(2分) A、{int i; i++; printf(“%d\\n”, i); } B、; C、a=5,c=10 D、{ ; } 33、若变量已正确说明,要求用语句:scanf(“%f%c%f%c”, &a, &c1, &b, &c2);给c1赋予字符%、给c2赋予字符#、给a赋予2.0、给b赋予4.0,则正确的输入形式是(B)(2分) A、2.0 % 4.0 # B、2.0%4.0# C、2% 4# D、2 % 4 # 34、执行以下语句 int x=102,y=012; printf(\后输出结果是(C)(2分) A、10,01 B、002,12 C、102,10 D、02,10 35、设char ch='A';则ch=(ch>='A'&&ch<='Z')?(ch+32):ch的值是( B )。 (2分) A、A B、a C、Z D、z 36、以下错误的if语句是( C )。(2分) A、if(x>y) z=x; B、if(x==y) z=0; C、if(x!=y) printf(\ D、if(x 37、执行程序段int k=4,a=3,b=2,c=1; printf(“\\n%d \\n”,k 38、程序段for (i=2; i==0; ) printf(“%d” , i--) ;的循环次数是( A )。(2分) A、无限次 B、0次 C、1次 D、2次 39、程序段 int a=1,b=2, c=3, t; while (a A、1,2,0 B、2,1,0 C、1,2,1 D、2,1,1 执行语句for (i=1;i++<4;) ; 后变量i的值是( C )。(2分) A、3 B、4 C、5 D、不定 40、while构成的循环int ks=0; while (ks=2) ks++;执行的次数是( A )。 (2分) A、无限次 B、有语法错误,不能执行 C、一次也不执行 D、执行一次 41、C语言规定,数组名做实参时,它和对应形参之间的数据传递方式是(C )。(2分) A、用户指定传递方式B、无传递 C、单向值传递 D、地址传递 42、在C语言中,一位数组的定义方式为:类型说明符 数组名(A )。(2分) A、[常量表达] B、整型表达式 C、[整型常量]或[整型表达式] D、[整型常量] 43、对以说明语句int a[10]={6,7,8,9,10};的正确理解是( B )。(2分) A、将5个初值依次赋给a[1]至a[5] B、将5个初值依次赋给a[0]至a[4] C、将5个初值依次赋给a[6]至a[10 D、因为数组长度与初值的个数不同,所以此语句不正确 44、C语言规定,程序中各函数之间( A )。 (2分) A、既允许直接递归调用也允许间接递归调用 B、不允许直接递归调用也不允许间接递归调用 C、允许直接递归调用不允许间接递归调用 D、不允许直接递归调用允许间接递归调用 45、一个C语言程序是由( B )。(2分) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 46、变量的指针,其含义是指该变量的(B)。(2分) A、值 B、地址 C、名 D、一个标志 47、已有定义“struct xy{int a; double b;}m;”,变量m的成员a的正确表示是(A )(2分) A、m.a B、m->a C、*m.a D、xy.a 48、下列正确定义一个文件指针pm的语句是( C)(2分) A、FILE pm; B、file *pm; C、FILE *pm; D、file pm; 49、C语言规定,在一个源程序中,main函数的位置(C) (2分) A、必须在最开始 B、 必须在系统调用的库函数的后面 C、 可以任意 D、 必须在最后 50、以下叙述中正确的是 (C)(2分) A、用C语言实现的算法必须要有输入和输出操作 B、用C语言实现的算法可以没有输出但必须要有输入 C、用C程序实现的算法可以没有输入但必须要有输出 D、用C程序实现的算法可以既没有输入也没有输出 51、以下选项中,不合法常量的是 (B)(2分) A、1.234e04 B、1.234e0.4 C、1.234e+4 D、1.234e0 52、C语言中最简单的数据类型包括(B)(2分) A、整型、实型、逻辑型 B、整型、实型、字符型 C、整型、字符型、逻辑型 D、整型、实型、逻辑型、字符型 53、若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是(C)(2分) A、1 B、2 C、2.0 D、2.5 54、执行下列语句int x=10,y=3;printf(\后的输出是(C)(2分) A、 0 B、 1 C、 3 D、 不确定的值 55、执行下列语句int x=10,y=10;printf(\后的输出是(D)(2分) A、10 10 B、9 9 C、9 10 D、10 9 56、执行下列语句 int k=2, i=2, m;m=(k+=i*=k); printf(\后的输出结果是(C)(2分) A、8,6 B、8,3 C、6,4 D、7,4 57、能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是( C )。A、(x>=1) && (x<=10) && (x>=200) && (x<=210) B、(x>=1) || (x<=10) || (x>=200) || (x<=210) C、(x>=1) && (x<=10) || (x>=200) && (x<=210) D、(x>=1) || (x<=10) && (x>=200) || (x<=210) 58、语句printf(\,(a=2)&&(b= -2);的输出结果是( D )。(2分) A、无输出 B、结果不确定 C、-1 D、1 59、下面有关for循环的正确描述是( D )。(2分) A、for循环只能用于循环次数已经确定的情况。 B、for循环是先执行循环体语句,后判断表达式。 C、在for循环中,不能用break语句跳出循环体。 D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来。 60、若i、j均为整型变量,则for (i=0,j=-1;j=1;i++,j++) printf(“%d,%d\\n”,i,j); ( B )。 (2分) A、循环体只执行一次 B、循环体一次也不执行 C、判断循环结束的条件不合法 D、是无限循环 61、语句int k=1; while (k++<10);执行后,变量k的值是( B )。(2分) A、10 B、11 C、9 D、无限循环,值不定 62、对于程序段 int k=0; while(k=1)k++; while 循环执行的次数是( A )。 (2分) A、无限次 B、有语法错,不能执行 C、一次也不执行 D、 执行1次 63、若有说明:int a[3][4];则对a数组元素的正确引用是( C )。(2分)