一、单选题1、能将高级语言源程序转换成目标程序的是( C )。
编译程序的基本功能是把源程序翻译成目标程序 A)调试程序B)解释程序C)编译程序D)编辑程序 2、设有以下定义:int x=10,y=3,z;则语句:printf(“%d”,z=(x%y,x/y ));的结果是( D )。
A)1 B)0 C)4 D)33、若已定义x 和y 为整型,则表达式:x=1,y=x+3/2的值是( B )。
P56 A)1 B)2C)2.0D)2.5 4、C语言中 ( B )。
P115 A)不能使用 do - while 语句构成循环。
B)do-while 语句, 当 while 语句中的表达式值为零时结束循环。
C)do-while 语句, 当 while 语句中的表达式值为非零时结束循环 D)do-while 语句必须用 break 语句才能退出循环5、设有定义 int a =3;,则执行语句 a+ = a-=a*a 后,变量 a 的值是( C ).P64(a-a*a a = 3-3*3 a = -6 a = a + a a = -6 + (-6) a=-12)A)3 B)0 C)-12 D)9 6、以下程序的输出结果是 ( C )。
p93 # include <stdio.h> main( ) {int a,b,d=241; a=d/100%9; b=(-1)&&(-1);printf ("%d,%d\n",a,b);}A)2 1 B)1,-1 C)2,1 D)2 -17、以下程序的输出结果是 ( D )。
#include <stdio.h> #include <string.h> main( ){char str[12]={'s','t','r','i','n','g'}; printf("%d\n",strlen(str)); }求字符串的长度,strlen( )的参数必须是char*A)12B)7C)118、以下的 for 循环( A )。
for (x=0,y=0;(y!=123)&&(x<4);x++); A)执行4次 B)是无限循环 C)执行3次 D)循环次数不定9、以下程序段的输出结果是( A )char a[]=”Basic”; char *p=a; printf(“%s”,p);A)BasicB)BC)asic10、以下说法中正确的是( C )。
A)C 语言程序总是从第一个定义的B)在C 语言程序中,要调用的函数必须在 main( ) 函数中定义C)C 语言程序总是从 main( ) 函数开始执行D)C 语言程序中的 main( ) 函数必须放在程序的开始部分 11、下述对 C 语言字符数组的描述中错误的是( C ) A)字符数组可以存放字符串B)字符数组中的字符串可以整体输入、输出C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D)不可以用关系运算符对字符数组中的字符串进行比较12、C语言中最简单的数据类型包括( B ) A)整型、实型、逻辑型B)整型、实型、字符型 C)整型、字符型、逻辑型 D)整型、实型、逻辑型、字符型 13、阅读程序: #include<stdio.h> #define SUB(X,Y) (X)*Y main( ) {int a=3,b=4;printf("%d\n",SUB(a++,b++));} 程序的输出结果是 ( B )A)15B)12 C)16D)2014、为表示关系x ≥y ≥z 应使用C 语言表达式( A )A)(x>=y )&&(y>=z) B)( x>=y )and(y>=z)C) (x>=y>=z) D)( x>=y )&( x>=y ) 15、如下程序的运行结果是( A ) Main() {int n=0; while(n++<=1)printf(“%3d”,n); printf(“%3d \n”,n); }A)1 2 3 B)3 2 1 C)0 1 2 D )2 1 0 16、设有如下定义:char *aa[2]={“abcd”,”ABCD”}; 则以下说法中正确的是( D )A)aa 数组元素的值分别是”abcd”和”ABCD” B)aa 是指针变量,它指向含有两个数组元素的字符型一维数组C)aa 数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址D)aa 数组的两个元素中各自存放了字符’a’和’A’的地址。
17、设有如下定义:struct sk{int a;float b;}data,*p;若有 p=&data;,则对 data 中的 a 域的正确引用是(p->a )( A )A)(*p).a B)(*p).data.a C)p.data.a D)p->data.a18、设有说明 int (*ptr)[M]; 其中的标识符 ptr 是( C ) A)M 个指向整形变量的指针 B)指向 M 个整形变量的函数指针C)一个指向具有 M 个整形元素的一维数组的指针D)具有 M 个指针元素的一维指针数组,每个元素都只能指向整形变量19、阅读程序,程序的输出结果为( C )。
int x=3; do{printf(“%3d”,x -=2); }while(!(--x));A)1 B)30 C)1 -2D)死循环20、设有10个数据进行冒泡排序,最少进行的比较次数为( C )。
A)0 B)10 C)9 D)121、设有语句 char a=’\n’; ,则变量 a ( A )。
A)包含1个字符B)包含2个字符C)包含3个字符 D)说明不合法 22、若有定义:double x,y;则表达式:x=1,y=x+3/2的值是( C )。
A)1 B)2C)2.0D)2.523、有以下程序:(注意:ch[0] 在低字节,ch[1] 在高字节。
)# include< stdio.h>union pw{int i ;char ch[2];}a;main( ){a.ch[0]=0 ;a.ch[1]=13 ; printf("%d\n",a.i);}程序的输出结果是( C )。
A)13B)14C)3328 D)32824、以下程序的输出结果是 ( B )。
#include <string.h> main( ){char str[12]={'a','b','c','d','f','g',’f’}; printf("%d\n",strlen(str)); }A)12B)7C)11 D)6 25、设有以下语句:struct st{int n;struct st *next;};static struct sta[3]={{5,&a[1]},{7,&a[2]},{9,'\0'}},*p; p=&a[0]; 则表达式( B )的值是6。
A)p++->nB)++(p->n)C)(*p).n++ D)p->n++ 26、对于程序段 float f1(int a) {int b ;……} main( ) { int m,n; m=f1(n);…… }char f2(int x,int y) { int a;…… }变量m,n 的作用范围是( B ) (A )整个程序段 (B )main 函数 (C )main 函数和f2函数 (D )mian 函数和f1函数 27、若p1、p2都是指向整型的指针,p1已经指向数量x ,要使p2也指向x ,正确的是( A )(A )p2=p1; (B )p2=**p1; (C )p2=&p1; (D )p2=*p1;28、算术运算符,赋值运算符和关系运算符的运算优先级按从高到低依次为( B )(A )算术运算、赋值运算、关系运算 (B )算术运算、关系运算、赋值运算 (C )关系运算、赋值运算、算术运算(D )关系运算、算术运算、赋值运算 29、C语言中,运算对象必须是整型数的运算符是( A )A)%B)/C)% 和30、若数组定义为int a[10];则下列哪个表达式是错误的?( A )(A )*a (B )a (C )&a (D )++a 31、表达式10%2值是( A ) (A )0 (B )1 (C )5 (D )5.032、设有说明 int (*ptr)[M]; 其中的标识符 ptr 是( C )A)M 个指向整形变量的指针 B)指向 M 个整形变量的函数指针C)一个指向具有 M 个整形元素的一维数组的指针D)具有 M 个指针元素的一维指针数组,每个元素都只能指向整形变量33、初始化一维数组a 正确的语句是( C ) (A )int a[10]=(0,0,0,0,0); (B )int a[10]={ }; (C )int a[ ]={10} ; (D )int a[10]={[10*1]}; 34、下列程序执行后输出的结果是 ( A )int d = 1 ;fun ( int p ) { int d = 5 ; d + = p + + ;printf( " %d " , d ) ;} main( ) {int a = 3 ; fun ( a ) ; d + = a + + ;printf( " %d \ n " , d ) ; }A)8 4B)9 6C)9 4 D)8 5 35、函数调用语句“f((e1,e2),(e3,e4,e5))”中参数的个数是( B )(A )1 (B )2 (C )3 (D )536、执行下列语句中,sum 变量的值是( B ) int I,sum=0;for(i=0;i<10;i++,sum+=i);(A )45 (B )55 (C )0 (D )编译错误 37、以下c 语言函数声明中,不正确的是( C ) (A ) void fun (int x, int y); (B ) fun (int x, int y);(C ) int fun (int x,y); (D ) char *fun (char *s);38、以下关于typedef 的叙述中错误的是 ( A ) (A ) 用typedef 可以增加新的类型(B ) 用typedef 可以定义各种类型名,但不能用来定义变量(C ) 用typedef 只是将已有的类型用新的标识符来代表 (D ) 使用typedef 有利于程序的通用和移植39、 假设指针p 已经指向某个整型变量x ,则*p 相当于( C )(A ) &x (B ) &p (C ) x (D ) *x40、组成C 语言程序的是( B ) (A )过程 (B )函数(C )子程序 (D )主程序和子程序41、不用第三个变量,将变量a 和b 的值进行互换的操作是( B )(A )a+=b; b-=a; a-=b; (B )a+=b; b=a-b; a-=b; (C )b-=a; a-=b; a-=b; (D )b-=a; a=b-a; a+=b; 42、对do-while 语言错误的说法是(C )(A )可构成多重循环结构 (B )循环次数不可能为0(C )循环次数可能为0 (D )先执行后判断 43、函数调用时,若实参是一个数组名,则向形参传递的是(C )(A )数组的长度 (B )数组的每一个元素的地址 (C )数组的首地址(D )数组元素的值二、填空题1、下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值。