二级C语言100道经典选择题及答案

时间:2019-05-12 07:56:37下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《二级C语言100道经典选择题及答案》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《二级C语言100道经典选择题及答案》。

第一篇:二级C语言100道经典选择题及答案

【1.1】以下不正确的C语言标识符是____。

A)int B)a_1_2 C)ab1exe D)_x

【1.2】以下是正确的C语言标识符是____。

A)#define B)_123 C)%d D)n 【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。

A)print

B)iam

C)Pxq

D)str_l

_3d

one_half My->book Cpp ••• oodbs tart$it

line

#pow ••• aBc

3pai

His.age

while

【1.4】下面各选项组中,均是C语言关键字的组是。

A)auto,enum,include B)switch,typedef,continue C)signed,union,scanf D)if,struct,type

【1.5】下列不属于C语言关键字的是。

A)default B)register C)enum D)external

【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。

A)程序文件的开始

B)程序文件的最后

C)它所调用的函数的前面

D)程序文件的任何位置

【1.7】下列关于C语言的叙述错误的是____ A)大写字母和小写字母的意义相同

B)不同类型的变量可以在一个表达式中 C)在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型

D)同一个运算符号在不同的场合可以有不同的含义

【1.8】在C语言中,错误的int类型的常数是。

A)32768 B)0 C)037 D)0xAF

【1.9】执行语句 printf(“%x”,-1);屏幕显示____。

A)-1 B)1 C)-ffff D)ffff

【1.10】已知 long i=32768;执行语句printf(“%d”,i);屏幕显示____。

A)-1 B)-32768 C)1 D)32768

【1.11】已知 long i=65539;执行语句printf(“%d”,i);屏幕显示____。

A)65539 B)-3 C)3 D)程序不能执行

【1.12】在C语言中,整数-8在内存中的存储形式是。

A)1111 1111 1111 1000 B)1000 0000 0000 1000 C)0000 0000 0000 1000 D)1111 1111 1111 0111

【1.13】C语言中字符型(char)数据在内存中的存储形式是____。

A)原码 B)补码 C)反码 D)ASCII码 【1.14】将字符g赋给字符变量c,正确的表达式是。

A)c=147 B)c=“147” C)c=’147’ D)c=’0147’

【1.15】下列转义字符中错误的一个是____。

A)’00’ B)’014’ C)’x111’ D)’2’

【1.16】将空格符赋给字符变量c,正确的赋值语句是____。

A)c=’’ B)c=NULL C)c=0 D)c=32

【1.17】已知:char a=’70’;则变量a中。

A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明非法

【1.18】字符串“"EOFn=-61”“的长度是____。

A)8 B)9 C)14 D)非法字符串

【1.19】字符串”“的长度是____。

A)0 B)1 C)2 D)非法字符串

【1.20】已知:char a;int b;float c;double d;执行语句”c=a+b+c+d;“后,变量c的数据类型是。

A)int B)char C)float D)double

【1.21】温度华氏和摄氏的关系是: C=5/9*(F-32)。已知:float C,F;由华氏求摄氏的正确的赋值表达式是____。

A)C=5/9(F-32)B)C=5*(F-32)/9 C)C=5/9*(F-32)D)三个表达式都正确

【1.22】逗号表达式”(a=3*5,a*4),a+15“的值是____。

A)15 B)60 C)30 D)不确定

【1.23】如果int a=1,b=2,c=3,d=4;则条件表达式”a

【1.24】为求出s=10!的值,则变量s的类型应当为。

A)int B)unsiged C)long D)以上三种类型均可

【1.25】已知int i=10;表达式“20-0<=i<=9”的值是____。

A)0 B)1 C)19 D)20

【1.26】已知int x=1,y;执行下述语句后变量x的值是____。

y=++x>5&&++x<10; A)1 B)2 C)3 D)4 【1.27】为判断字符变量c的值不是数字也不是字母时,应采用下述表达式____。

A)c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122 B)!(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122)C)c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122 D)!(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122)【1.28】已知 int a[3][2]={3,2,1};

则表达式“a[0][0]/a[0][1]/a[0][2]”的值是____。

A)0.166667 B)1 C)0 D)错误的表达式

【1.29】已知 int x=1,y=1,z=1;

表达式“x+++y+++z++”的值是____。

A)3 B)4 C)5 D)表达式错误

【1.30】用十进制表示表达式“12|012”的值是____。

A)1 B)0 C)12 D)14

【1.31】已知以下程序段:

int a=3,b=4;

a=a^b;0011 0100 0111 b=b^a;0100 0011 0111 0100 a=a^b;

则执行以上语句后a和b的值分别是____。

A)a=3,b=4 B)a=4,b=3 C)a=4,b=4 D)a=3,b=3

【1.32】在位运算中,操作数每右移一位,其结果相当于____。

A)操作数乘以2 B)操作数除以2 C)操作数除以16 D)操作数乘以16

【1.33】已知 char a=222;执行语句a=a&052;后,变量a的值是____。

A)222 B)10 C)244 D)254

【1.34】已知二进制数a是00101101,如果想通过整型变量b与a做异或运算,使变量a的高4位取反,低4位不变,则二进制数b的值应是____。

A)11110000 B)00001111 C)11111111 D)00000000

【1.35】已知 int a=15,执行语句a=a<<2以后,变量a的值是____。

A)20 B)40 C)60 D)80

【1.36】已知int x=5,y=5,z=5;执行语句x%=y+z;后,x的值是____。

A)0 B)1 C)5 D)6

【1.37】使用语句scanf(“x=%f,y=%f”,&x,&y);输入变量x、y的值(□代表空格),正确的输入是____。

A)1.25,2.4 B)1.25□2.4 C)x=1.25,y=2.4 D)x=1.25□y=2.4 【1.38】下列循环语句中有语法错误的是____。

A)while(x=y)5; B)while(0);

C)do 2;while(x==b); D)do x++ while(x==10);

【1.39】已知int x=(1,2,3,4);变量x的值是____。

A)1 B)2 C)3 D)4

【1.40】表达式sizeof(double)是。

A)函数调用 B)double型表达式 C)int型表达式 D)非法表达式

【1.41】执行语句printf(“2:%d,”,printf(“1:%d,”,scanf(“%d,”,&x)));以后的输出结果是____。

A)2:1,1:1, B)1:1,2:1, C)2:4,1:1 D)1:1,2:4,【1.42】已知:int x,y;double z;则以下语句中错误的函数调用是。

A)scanf(“%d,%lx,%le”,&x,&y,&z);

B)scanf(“-*%d%lf”,&x,&y,&z);

C)scanf(“%x%*d%o”,&x,&y);

D)scanf(“%x%o%6.2f”,&x,&y,&z);

【1.43】与条件表达式“(n)?(c++):(c--)”中的表达式(n)等价的表达式是____。

A)(n==0)B)(n==1)C)(n!=0)D)(n!=1)

【1.44】已知int i=1,j=0;执行下面语句后j的值是____。

while(i)switch(i)

{ case 1: i+=1;j++;break; case 2: i+=2;j++;break;

case j3: i+=3;++;break;

default: i--;j++;break;

} A)1 B)2 C)3 D)死循环

【1.45】求取满足式 12+22+32+ …… +n2 ≤1000的n,正确的语句是____。

A)for(i=1,s=0;(s=s+i*i)<=1000;n=i++);

B)for(i=1,s=0;(s=s+i*i)<=1000;n=++i);

C)for(i=1,s=0;(s=s+i*++i)<=1000;n=i);

D)for(i=1,s=0;(s=s+i*i++)<=1000;n=i);

【1.46】下面的for语句。

for(x=0,y=10;(y>0)&&(x<4);x++,y--);

A)是无限循环 B)循环次数不定

C)循环执行4次 D)循环执行3次

【1.47】已知int i=1; 执行语句while(i++<4);后,变量i的值为____。

A)3 B)4 C)5 D)6

【1.48】已知int x=12,y=3;执行下述程序后,变量x的值是____。

do { x/=y--;

}while(x>y);

A)1 B)2 C)3 D)程序运行有错误

【1.49】已知

char a[][20]={“Beijing”,“shanghai”,“tianjin”,“chongqing”} ;

语句printf(“%c”,a[30]);的输出是____。

A)<空格> B)n C)不定

D)数组定义有误

【1.50】若用数组名作为函数调用时的实参,则实际上传递给形参的是。

A)数组首地址

B)数组的第一个元素值

C)数组中全部元素的值 D)数组元素的个数

【1.51】对二维数组的正确说明是____。

A)int a[][]={1,2,3,4,5,6}; B)int a[2][]={1,2,3,4,5,6};

C)int a[][3]={1,2,3,4,5,6}; D)int a[2,3]={1,2,3,4,5,6};

【1.52】对字符数组s赋值,不合法的一个是____。

A)char s[]=“Beijing”;

B)char s[20]={“beijing”};

C)char s[20];s=“Beijing”;

D)char s[20]={’B’,’e’,’i’,’j’,’i’,’n’,’g’};

【1.53】对字符数组str赋初值,str不能作为字符串使用的一个是____。

A)char str[]=“shanghai”;

B)char str[]={“shanghai”};

C)char str[9]={’s’,’h’,’a’,’n’,’g’,’h’,’a’,’i’};

D)char str[8]={ ’s’,’h’,’a’,’n’,’g’,’h’,’a’,’i’};选项缺少字符串结束标志。【1.54】对函数形参的说明有错误的是____。

A)int a(float x[],int n)B)int a(float *x,int n)C)int a(float x[10],int n)D)int a(float x,int n)

此处函数形参是一个指针变量,接受实参的地址,而不是一个数组。【1.55】如果一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,这个变量的存储类型应该被说明为____。

A)静态变量 B)动态变量 C)外部变量 D)内部变量

【1.56】在一个C源程序文件中,•若要定义一个只允许在该源文件中所有函数使用的变量,则该变量需要使用的存储类别是。

A)extern B)register C)auto D)static

【1.57】在C语言中,函数的数据类型是指____。

A)函数返回值的数据类型 B)函数形参的数据类型

C)调用该函数时的实参的数据类型 D)任意指定的数据类型

【1.58】已知如下定义的函数:

fun1(a)

{ printf(“n%d”,a);

}

则该函数的数据类型是____。

A)与参数a的类型相同 B)void型

C)没有返回值 D)无法确定

【1.59】定义一个函数实现交换x和y的值,并将结果正确返回。能够实现此功能的是____。

A)swapa(int x,int y)函数swapa是值传递,函数的执行结果不能返回 B)swapb(int *x,int *y){ int temp; { int temp;

temp=x;x=y;y=temp; temp=x;x=y;y=temp;

} }

C)swapc(int *x,int *y)D)swapd(int *x,int *y){ int temp; { int *temp; temp=*x;*x=*y;*y=temp; temp=x;x=y;y=temp;

} }

【1.60】求一个角的正弦函数值的平方。能够实现此功能的函数是____。

A)sqofsina(x)float x;

{ return(sin(x)*sin(x));

}

B)double sqofsinb(x)float x;

{ return(sin((double)x)*sin((double)x));

}

C)double sqofsinc(x){ return(((sin(x)*sin(x));

}

D)sqofsind(x)float x;

{ return(double(sin(x)*sin(x)));

【1.61】一个函数内有数据类型说明语句如下:

double x,y,z(10);

关于此语句的解释,下面说法正确的是____。

A)z是一个数组,它有10个元素。

B)z是一个函数,小括号内的10是它的实参的值。

C)z是一个变量,小括号内的10是它的初值。

D)语句中有错误。

【1.62】已知函数定义如下:

float fun1(int x,int y){ float z;

z=(float)x/y;

return(z);

}

主调函数中有int a=1,b=0;可以正确调用此函数的语句是____。

A)printf(“%f”,fun1(a,b)); B)printf(“%f”,fun1(&a,&b));

C)printf(“%f”,fun1(*a,*b)); D)调用时发生错误

(y不能为0)

【1.63】下面函数的功能是____。

a(s1,s2)char s1[],s2[];

{ while(s2++=s1++);

}

A)字符串比较 B)字符串复制 C)字符串连接 D)字符串反向

【1.64】在下列结论中,只有一个是错误的,它是。

A)C语言允许函数的递归调用

B)C语言中的continue语句,可以通过改变程序的结构而省略

C)有些递归程序是不能用非递归算法实现的D)C语言中不允许在函数中再定义函数

【1.65】已知:int a, *y=&a;则下列函数调用中错误的是。

A)scanf(“%d”, &a); B)scanf(“%d”, y);

C)printf(“%d”, a); D)printf(“%d”, y);

【1.66】说明语句“int(*p)();”的含义是。

A)p是一个指向一维数组的指针变量

B)p是指针变量,指向一个整型数据

C)p是一个指向函数的指针,该函数的返回值是一个整型

D)以上都不对

【1.67】设有说明int(*p)[4];其中的标识符p是。

A)4个指向整型变量的指针变量

B)指向4个整型变量的函数指针

C)一个指向具有4个整型元素的一维数组的指针

D)具有4个指向整型变量的指针元素的一维指针数组

【1.68】已知:char s[10], *p=s,则在下列语句中,错误的语句是。

A)p=s+5; B)s=p+s; C)s[2]=p[4]; D)*p=s[0];

【1.69】已知:char s[100];int i;则引用数组元素的错误的形式是。

A)s[i+10] B)*(s+i)C)*(i+s)D)*((s++)+i)

【1.70】已知:char s[6], *ps=s;则正确的赋值语句是。

A)s=“12345”; B)*s=“12345”; C)ps=“12345”; D)*ps=“12345”;

【1.71】已知:char a[3][10]={“BeiJing”,“ShangHai”,“TianJin”}, *pa=a;不能正确显示字符串“ShangHai”的语句是。

A)printf(“%s”,a+1); B)printf(“%s”,*(a+1));

C)printf(“%s”,*a+1); D)printf(“%s”,&a[1][0]);

【1.72】已知:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int(*ptr)[3]=a,*p=a[0];

则以下能够正确表示数组元素a[1][2]的表达式是。

A)*(*(a+1)+2)B)*(*(p+5))C)(*ptr+1)+2 D)*((ptr+1)[2])

【1.73】已知:int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a;则值为3的表达式是。

A)p+=2,*(p++)B)p+=2,*++p C)p+=2,*p++ D)p+=2,++*p

【1.74】已知:int a[]={1,2,3,4}, y, *p=a;则执行语句y =(*++p)--;之后, 数组a各元素的值变为______。

A)0,1,3,4 B)1,1,3,4 C)1,2,2,4 D)1,2,3,3

变量y的值是____。

A)1 B)2 C)3 D)4

【1.75】已知:int a[ ]={1,3,5,7}, y *p= a;为使变量y的值为3,下列语句正确的是____。

A)y=++*p++; B)y=++(*p++); C)y=(++*p)++; D)y=(*++p)++;

【1.76】已知:int x[ ]={ 1,3,5,7,9,11 },*ptr=x;则能够正确引用数组元素的语句是。

A)x B)*(ptr--)C)x[6] D)*(--ptr)

【1.77】函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。能正确执行此功能的函数是。

A)funa(int *x, int *y)B)funb(int x, int y){ int *p; { int t;

p=x;*x=*y;*y=*p; t=x;x=y;y=t;

} }

C)func(int *x, int *y)D)func(int *x, int *y)

{ *x=*y;*y=*x; { *x=*x+*y;*y=*x-*y;*x=*x-*y;

} }

【1.78】有定义如下:

struct sk { int a;

float b;

}data ,*p;

如果 p=&data;则对于结构变量data的成员a的正确引用是____。

A)(*).data.a B)(*p).a C)p->data.a D)p.data.a 【1.79】已知:

struct st { int n;

struct st *next;

};

static struct st a[3]={1,&a[1],3,&a[2],5,&a[0]},*p;

如果下述语句的显示是2,则对p的赋值是____。

printf(“%d”,++(p->next->n));

A)p=&a[0]; B)p=&a[1]; C)p=&a[2]; D)p=&a[3];

【1.80】已知:

struct person { char name[10];

int age;

}class[10]={“LiMing”,29,“ZhangHong”,21,“WangFang”,22};

下述表达式中,值为72的一个是____。

A)class[0]->age + class[1]->age+ class[2]->age B)class[1].name[5] C)person[1].name[5] D)clase->name[5] 【1.81】已知:

struct { int i;

char c;

float a;

}test;

则sizeof(test)的值是。

A)4 B)5 C)6 D)7

【1.82】已知:

union { int i;

char c;

float a; }test;

则sizeof(test)的值是。

A)4 B)5 C)6 D)7

【1.83】已知:

union u_type { int i;

char ch;

float a;

}temp;

现在执行“temp.i=266;printf(”%d“,temp.ch)”的结果是。

A)266 B)256 C)10 D)1

【1.84】若有以下程序段:

struct dent { int n;

int *m;

};

int a=1,b=2,c=3;

struct dent s[3] = { {101,&a},{102,&b},{103,&c} };

struct dent *p=s;

则以下表达式中值为2的是。

A)(p++)->m B)*(p++)->m C)(*p).m D)*(++p)->m

【1.85】若有以下说明语句,则对结构变量pup中sex域的正确引用是。

struct pupil { char name[20];

int sex;

}pup,*p;

p=&pup; A)p.pup.sex B)p->pup.sex C)(*p).pup.sex D)(*p).sex

【1.86】以下对结构变量stul中成员age的非法引用是。

struct student { int age;

int num;

}stu1,*p;

p=&stu1;

A)stu1.age B)student.age C)p->age D)(*p).age

【1.87】若有以下定义和语句:

union data { int i;

char c;

float f;

}a;

int n;

则以下语句正确的是______。A)a=5; B)a={2,’a’,1.2}; C)printf(“%dn”,a); D)n=a;

【1.88】已知:

struct sk { int a;

int age;

}date,*p;

如果要使指针p指向data中的成员a,正确的赋值语句是____。

A)p =(struct sk *)&data.a; B)p =(struct sk *)data.a;

C)p = &data.a; D)*p = data.a; 【1.89】已知 enum week {sun,mon,tue,wed,thu,fri,sat}day;则正确的赋值语句是____。

A)sun=0; C)san=day; D)sun=mon; D)day=sun;

【1.90】已知 enum color {red,yellow=2,blue,white,black}ren;执行下述语句的输出结果是____。

printf(“%d”,ren=white);

A)0 B)1 C)3 D)4

【1.91】已知 enum name{zhao=1,qian,sun,li}man;执行下述程序段后的输出是____。

man=0;

switch(man)

{ case 0: printf(“Peoplen”);

case 1: printf(“Mann”);

case 2: printf(“Womann”);

default: printf(“Errorn”);

} A)People B)Man C)Woman D)Error

【1.92】下述关于枚举类型名的定义中,正确的是____。

A)enem a={ one,two,three }; B)enem a { one=9,two=-1,three };

C)enem a={“one”,“two”,“three”}; D)enem a {“one”,“two”,“three”};

【1.93】C语言中标准输入文件stdin是指。

A)键盘 B)显示器 C)鼠标 D)硬盘 【1.94】要打开一个已存在的非空文件“file”用于修改,选择正确的语句____。

A)fp=fopen(“file”, “r”); B)fp=fopen(“file”, “a+”);

C)fp=fopen(“file”, “w”); D)fp=fopen(’file“, ”r+“);

【1.95】当顺利执行了文件关闭操作时,fclose函数的返回值是。

A)-1 B)TRUE C)0 D)1

【1.96】fscanf函数的正确调用形式是。

A)fscanf(文件指针, 格式字符串, 输出列表);

B)fscanf(格式字符串, 输出列表, 文件指针);

C)fscanf(格式字符串, 文件指针, 输出列表);

D)fscanf(文件指针, 格式字符串, 输入列表);

【1.97】使用fgetc函数,则打开文件的方式必须是。

A)只写 B)追加 C)读或读/写

D)参考答案B和C都正确

【1.98】已知宏定义

#define N 3

#define Y(n)((N+1)*n)

执行语句z=2*(N+Y(5+1));后,变量z的值是____。

A)42 B)48 C)52 D)出错

【1.99】已知宏定义 #define SQ(x)x*x,执行语句printf(”%d“,10/SQ(3));后的输出结果是____。A)1 B)3 C)9 D)10 【1.100】已知宏定义如下:

#define PR printf #define NL ”n“ #define D ”%d“ #define D1 DNL

若程序中的语句是 PR(D1,a);经预处理后展开为____。

A)printf(%dn,a); B)printf(”%dn“,a);

C)printf(”%d“"n”,a); D)原语句错误

【参考答案】

【1.1】答案: A 注释:int是C语言的关键字 【1.2】答案: B 【1.3】答案:A 【1.4】答案:B 注释:include是预处理命令;scanf是函数名;type不是C语言的关键字。【1.5】答案:D 【1.6】答案:D 【1.7】答案:A 【1.8】答案:A 注释:int型表示整数的范围是-32768~32767。【1.9】答案:D 注释:整型常量-1在计算机中表示为补码1111 1111 1111 1111,用十六进制显示这个数时,最左边的1不会被解释为符号位,而是与右边其它位共同转换为十六进制数。【1.10】答案:B 注释:长整型数32768在计算机内的表示是1000 0000 0000 0000,以一般整型进行输出时,此数恰是-32768的补码。【1.11】答案:C 注释:长整型数65539在计算机内的表示是0001 0000 0000 0000 0011,以一般整型进行输出时,仅将右侧16位二进制数转换为十进制数。【1.12】答案:A 注释:C语言中,int型的负数是采用补码表示的。【1.13】答案:D 【1.14】答案:C 注释:变量c是字符型,可用字符常量为它赋值。字符常量必须用单引号括起来,所以B是错误的;在单引号或双引号内的反斜线''用于表示转义字符,A选项在无引号时使用反斜线是错误的;C选项单引号内出现反斜线表示它与后面的数字组成一个转义字符;单引号只允许括起一个字符,D选项在单引号内出现4个字符,是错误的。【1.15】答案:C 【1.16】答案:D 注释:空字符和空格符是不同的两个字符,空格符的ASCII码值是32,空字符的ASCII值是0。【1.17】答案:A 【1.18】答案:B 【1.19】答案:A 【1.20】答案:C 【1.21】答案:B 注释:单纯从C语言语法来说,选项B、C都是正确的,但是选项C中第一个运算的两个对象都是整型常数,其结果也是整型数0,最后的运算结果也就是0了。

【1.22】答案:C 【1.23】答案:A 注释:将条件表达式增加一个括号,此式变为a。

【1.27】答案:D C>=48中的48是字符对应的ASCII码,数字的ASCII码从48到57,大写字母为65到90,小写字母为97到122,在以上范围内表示是数字或字母,对它取非表示既不是数字也不是字母,所以选D。

【1.28】答案:B 注释:数组元素在内存中按行排列,此数组的前3个元素的值分别是3、2、1,表达式中虽然数组下标的写法似乎每行有3个元素,和定义时的3行2列不一致,但是C语言引用数组元素时是根据数组的首地址和给出的下标进行运算决定元素的地址。题中表达式引用了数组前3个元素。【1.29】答案: A 【1.30】答案:D

整数12最低8位二进位是00001100,整数012是八进制数,它的最低8位二进位是00001010.这两个二进位位串信息按位或运算,得到结果是00001110,对应十进制数14,八进制数是016.按位与运算符“&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。

按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。

按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现。

求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。

左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。其值相当于乘2。

右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。其值相当于除2。

【1.31】答案:B 【1.32】答案:B 【1.33】答案:B 【1.34】答案:A 【1.35】答案:C 【1.36】答案:C 【1.37】答案:C 【1.38】答案:D 【1.39】答案:D 【1.40】答案:C

sizeof是求长度的函数,其结果类型就是无符号整形表达式。sizeof(double)是指求double类型数据的数据长度

【1.41】答案:D 注释:scanf函数返回值是输入数据的个数,printf函数的返回值是输出的字符个数。

【1.42】答案:D 【1.43】答案:C 注释:在C语言中,经常用一个变量来作为逻辑表达式,其含义就是:当变量的值不为0时关系成立。【1.44】答案:D 注释:break语句仅可跳出switch语句,不会跳出while循环,这是一个死循环。【1.45】答案:A 【1.46】答案:C 【1.47】答案:C 【1.48】答案:D 注释:当除数y为0时,程序发生溢出错误。【1.49】答案:C 【1.50】答案:A 【1.51】答案:C 【1.52】答案:C 注释:答案C的赋值号左侧是数组s的首地址,是一个常量,赋值号右侧是一个字符串常量,不可能将一个字符串常量赋给一个地址常量。【1.53】答案:D 注释:D选项缺少字符串结束标志。【1.54】答案:C 注释:此处函数形参是一个指针变量,接受实参的地址,而不是一个数组。【1.55】答案:A 【1.56】答案:D 注释:这里首先要明确一些基本概念。在C语言中,程序与文件是不同的概念,一个程序可以由一个文件组成,也可以由多个文件组成;一个文件中又可以包含多个函数;函数是构成C程序的基本单位。变量的作用域因变量的存储类型不同而不同。auto和register类型的变量的作用域是说明变量的当前函数;外部变量的作用域是整个程序,即外部变量的作用域可以跨越多个文件;内部静态变量(定义在一个函数内部的static型的变量)的作用域是当前函数,外部静态变量(定义在函数外面的static型的变量)的作用域是当前文件,即可以跨越同一文件中的不同函数。【1.57】答案:A 【1.58】答案:A 注释:它和参数a一样,数据类型说明被省略,按照C语言的规定,在这种情况下,表示它们是int型。【1.59】答案:C 注释:函数swapa是值传递,函数的执行结果不能返回;函数swapb中变量temp不是指针变量,所以它不能接受地址量,用指针变量x为它赋值是不对的;函数swap中虽然指针变量交换了地址,即它们的指向的目标变量进行了交换,但是目标变量并没有行值的交换。【1.60】答案:B 【1.61】答案:D 【1.62】答案:D 注释:主调函数中b=0,在执行fun1函数里的除法时发生溢出错误。【1.63】答案:B 【1.64】答案:C 【1.65】答案:D 注释:在答案D中,正确的函数调用应当是:printf(“%d”, *y)。【1.66】答案:C 注释:要注意与说明语句“int(*p)[ ];”的区别。说明语句“int(*p)[ ];”说明的是一个指向数组的指针。【1.67】答案:C 注释:题干中由于*和p被小括号括起,所以p应被解释为一个指针,而后的下标运算符[]说明所指向的对象是一个有4个int型元素的一维数组;如果是int(*p)(),则是指向函数的指针。对于int *p[4],则根据运算符的优先级,先考虑p和[]运算符的关系,所以它就是一个指针数组了。【1.68】答案:B 注释:选项B有两处错误,一是数组名是常量,不能出现的赋值好的左侧,二是指针变量只能和整数做加,不能和作为地址常量的数组名相加。【1.69】答案:D 注释:s作为数组名是地址常量,而s++是s=s+1,C语言不允许对常量进行赋值。

【1.70】答案:C 【1.71】答案:C 注释:a是二维数组名,a+1中的1不是1个字节,而是数组的“一行”,即10个字节,所以a+1是第二个字符串的首地址,A选项正确。在C编译系统中对二维数组名可这样理解(注意,这里仅是理解):a指向一个一维数组,故(a+1)是指向a[1]的,*(a+1)就是取a[1]的值,它保存第二个字符串“ShangHai”的首地址,所以选项B也正确。*a是第一个字符串的首地址,加1是第一个字符串中第二个字符的地址,选项C的输出是“beiJing”。选项D中的&a[1][0]是对第二个字符串的第一个字符做取地址运算,得到该地址就是字符串“ShangHai”的首地址。注意,对于二维数组来说,做一次*或[]运算的结果仍是地址量,做两次才是取数值。

【1.72】答案:A 注释:p是一个一级指针,选项B中对它进行了两次*运算是错误的。ptr是一个指向一维数组的指针,它所指向的数组有三个元素,对于这样一个指针,对它进行两次**运算才能取出地址单元中所存的数据,C选项中*ptr表示数组第一行的首地址,该地址是一维数组的地址,+3表示加上三个它所指向的数据类型的长度,所以(*ptr+1)+2是数组中数值4的地址。根据以上分析,选项D对ptr进行了两次地址操作(*和[]),所以结果应是数据,但是它加1后指向数组第二行,根据后面[]中2它的地址增加两个一维数组的长度,就指向数组的最后一行,再做*运算就是数10,即a[3][0]。【1.73】答案:A 【1.74】答案:B B 【1.75】答案:D 【1.76】答案:B 【1.77】答案:D 注释:答案D是另一种交换两个变量值的算法。【1.78】答案:B 【1.79】答案:C 注释:使用C对p进行赋值,则p->next是a[0]的地址,引用其成员n再做前增1运算,结果就是2。【1.80】答案:B 【1.81】答案:D 【1.82】答案:A 【1.83】答案:C 注释:联合变量temp的成员是占用同一存储单元,它的长度是4个字节。266的二进制表示是100001010,存放在存储单元的低端两个字节,如下图: 高字节

0 0 0 0 0 0 0 1 低字节 0 0 0 0 1 0 1 0 引用temp.ch进行输出,只取最低的第一个字节。【1.84】答案:D 注释:由于结构指针指向了结构数组的0号元素,所以表达式(p++)->m的含义是先取出m(变量a的地址),然后指针p加1。表达式*(p++)->m的含义是先取出m的内容(变量a的值),然后指针p再加1。表达式(*p).m的含义是取出m(变量a的地址)。表达式*(++p)->m的含义是先将指针p加1,然后再取m的内容(变量b的值)。【1.85】答案:D 【1.86】答案:B 【1.87】答案:C 【1.88】答案:A 【1.89】答案:D 【1.90】答案:D 【1.91】答案:A 【1.92】答案:B 【1.93】答案:A 【1.94】答案:D 注释:函数fopen中的第二参数是打开模式,“r”模式是只读方式,不能写文件;“a+”模式是读/追加方式,允许从文件中读出数据,但所有写入的数据均自动加在文件的末尾;“w”模式是写方式,允许按照用户的要求将数据写入文件的指定位置,但打开文件后,首先要将文件的内容清空。“r+”模式是读/写方式,不但允许读文件,而且允许按照用户的要求将数据写入文件的指定位置,且在打开文件后,不会将文件的内容清空。本题的要求是“修改”文件的内容,因此只能选择答案D。

【1.95】答案:C 【1.96】答案:D 【1.97】答案:C 【1.98】答案:B 注释:语句z=2*(N+Y(5+1)引用了两个宏定义。C语言是区分字母大小的,第二个宏定义中的N直接用3替换,用5+1替换n,则有z=2*(3+(3+1)*5+1);结果是48。注意对于带参数的宏亦是直接的文本替换,此例中n用5+1去替换,结果是(N+1)*5+1,而不是(N+1)*(5+1)。

【1.99】答案:C 注释:宏替换后的结果是printf(“%d”,10/3*3)。【1.100】答案:C

第二篇:二级C课后习题答案

天津蓝天教育培训学校

计算机二级C语言习题答案

第一章:C程序设计的概述

1-5:AACAA6-10:DADDA11-15:CDDDD16-17:AB

第二章:C程序设计初步

1-5:CAABD6-10:CCADD11-15:BDDDB16-20:DCDDA 21-25:BDADB 26-30:DDDAA31-35:CADCA36-38:ADD

第三章:C程序设计初步

(二)1-5:ABCDD6-10:DDCAA11-15:DCBDD16-21:BDAACC

第四章:顺序结构

1-5:DDDDA6-10:DDBAD11-15:DABDC16-20:BDBDB 21-25:CDAAD 26-27:AD

第五章:选择结构

1-5:BAACD6-10:CCDDD11-15:DDDDC16-20:BBBAD 21-25:ABBCD 26-30:ABBBA31-35:BADBD

第六章:循环结构

1-5:DDBDC6-10:BCDDB11-15:BADAC16-20:ADADD 21-25:BBBDD 26-30:DDABD31-35:DAABB36-40:DBACC 41-45:BBADD

第七章:数组

1-5:ADDDD6-10:DBDCB11-15:CDDDD16-20:CDADC 21-25:ABADB 26-30:ABCCD31-35:ADADC36-42:DABCACD

第八章:函数

1-5:CACAC6-10:CCDAC11-15:BAADA16-20:BDBBA

21-25:ABCBA 26-30:ACADD31-35:DDBDD36:2,1,4,3,6,5,8,7,10,9,第九章:预处理命令

1-5:DBDAB6-10:DAAAC11-15:BDDDA

第十章:指针

1-5:CADDB6-10:DADAA11-15:DADDB16-20:BAADB 21-25:CBDAD 26-30:AADDA31-35:DDDDA36-40:DDBAA 41-45:ADAAC 46-50:DADCB51-56:CBDDD56-60:DCCAC 61-65:DADDD 66-70:CDADA71-77:ACDACDD

第十一章:结构体、共用体、和用户定义类型

1-5:CDAAB6-10:DBADC11-15:DDBAD16-20:DDAC错 21-25:BDDDD 26-30:DBAAB31-35:BBBBB36-43:ADCADDBC 第十二章:位运算

1-5:DDDAD6-10:DABAD11-17:AADADAD

第十三章:文件

1-5:BABDD6-10:BDDCC11-15:ADBBC

注意:课本习题为考试选择题原题,请大家认真复习,最后的公共基础部分习题自带答案,考试会出12分的公共基础原题,请认真对待。

第三篇:C语言-基本选择题及答案

计算机程序设计基础(C语言)

单项选择练习题

一、基本概念

1.C语言程序是由 C 构成的。

A)一些可执行语言 B)main函数 C)函数 D)包含文件中的第一个函数 2.(A)是构成C语言程序的基本单位。

A、函数 B、过程 C、子程序 D、子例程 3.C语言程序从 C 开始执行。

A)程序中第一条可执行语句 B)程序中第一个函数 C)程序中的main函数 D)包含文件中的第一个函数 4.C语言程序从main()函数开始执行,所以这个函数要写在_D___。

A)程序文件的开始 B)程序文件的最后 C)它所调用的函数的前面 D)程序文件的任何位置

5、以下说法中正确的是(C)。

A、C语言程序总是从第一个定义的函数开始执行

B、在C语言程序中,要调用的函数必须在main()函数中定义 C、C语言程序总是从main()函数开始执行

D、C语言程序中的main()函数必须放在程序的开始部分 6.下列方法中错误的是(D)。

A.主函数可以分为两个部分:主函数说明部分和主函数体。B.主函数可以调用任何非主函数的其它函数。C.任何非主函数可以调用其它任何非主函数。D.程序可以从任何非主函数开始执行。7.下列说法错误的是:(B)

A.C程序运行步骤是编辑、编译、连接、执行。B.C语言的变量名必须用小写,常量用大写。C.C语言的三种基本结构是顺序、选择、循环。D.C程序一定由函数构成的。

8.下列关于C语言的说法错误的是(B)。

A)C程序的工作过程是编辑、编译、连接、运行 B)C语言不区分大小写。

C)C程序的三种基本结构是顺序、选择、循环 D)C程序从main函数开始执行

9.系统默认的C语言源程序扩展名为.C,需经过 C 之后,生成.exe文件,才能运行。 A)编辑、编译 B)编辑、连接 C)编译、连接 D)编辑、改错 *10.下列说法中正确的是(B)。

A.由于C源程序是高级语言程序,因此一定要在TC软件中输入。

B.由于C源程序是由字符流组成的,因此可以作为文本文件在任何文本编辑的软件中输入。

C.由于C程序是高级语言程序,因此输入后即可执行。D.由于C程序是高级语言程序,因此它是由命令组成的。

二、数据类型、运算符与表达式

1.不是C语言提供的合法关键字是(B)。

A.switch

B.cher

C.case

D.default *2.C语言提供的合法关键字是(D)。

A.next B.string C.do case D.struct *3.下列不属于C语言中关键字的是 B A)long B)print C)default D)typedef 4.下列正确的标识符是(C)。

A.-a1 B.a[i] C.a2_i D.int t 5.下列C语言用户标识符中合法的是(B)。A、*y B、sum C、int D、%5f 6.下面四个选项中,合法的标识符是:(D)A.auto B.define C.6a D.c 7.下列C语言用户标识符中合法的是(B)。A)3ax B)x C)case D)-e2 E)union 8.以下选项中合法的用户标识符是 B

A)long

B)_2Test

C)3Dmax

D)A.dat 9.下列四组选项中,正确的C语言标识符是(C)。

A)%x B)a+b C)a123 D)123 10.请选出可用作C语言用户标识符的一组标识符(B)A)void

B)a3_b3

C)For

D)2a define _123-abc DO WORD sum Case sizeof

11、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。A、print _3d db8 aBc B、Iam one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 12.下列C语言标识符中合法的变量名是 B。

A)2e3 B)you C)*y D)float 13.C语言中的简单数据类型包括(D)。

A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型

14、下列可以正确表示字符型常量的是(A)。A、’t’ B、”a” C、”n” D、297 15.下列表达式中,D 是正确的C语言字符常量。

A)”x” B)e3 C)”COMPUTER” D)’#’ 16.在下列表达式中,属于字符型常量的是 B。A)A B)'a' C)“A” D)b 17.以下选项中合法的字符常量是(B)A)“B” B)‘n’ C)‘68’ D)E 18.下面字符常量表示错误的是(D)

A)’a’ B)’?’ C)’n’ D)”n”

19.已定义c为字符型变量,则下列语句中正确的是(C)A)c='97' B)c=“97” C)c=‘a’ D)c=“a” 20.已知ch是字符型变量,不正确的赋值语句是(A)A)ch='a+b';

B)ch=' ';C)ch=' 7';D)ch=’;’;21.C语言中字符型(char)数据在内存中的存储的是(D)A)原码 B)补码 C)反码 D)ASCII码

22.在C语言中,字符型数据所占的内存空间是(C)A)2个字节 B)4字节 C)1字节 D)由用户自定义

*23.若int类型数据占2个字节,则unsigned int类型数据的取值范围是

(B)A)0~255 B)0~65535 C)-32768~32767 D)-256~255 26.C语言中运算对象必须是整型的运算符是(A)A)%= B)/ C)= D)〈= A)1.6 B)1 C)3 D)0 x=10;x+=x;A)10 B)20 C)40 D)30

31.在C语言程序中,表达式5%2的结果是 C。A)2.5 B)2 C)1 D)3 32.如果int a=3,b=4;则条件表达式“a

37.下面(D)表达式的值为4.A)11/3 B)11.0/3 C)(float)11/3 D)(int)(11.0/3+0.5)

*39.已知int x=5,y=5,z=5;执行语句x%=y+z;后,x的值是(C)A.0 B.1 C.5 D.6 40.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,c2中的值为(B)A)68 B)‘D’ C)错误 D)‘d’ 41.下列关于C语言的叙述错误的是(A)

A)大写字母和小写字母的意义相同 B)不同类型的变量可以在一个表达式中

C)在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D)同一个运算符号在不同的场合可以有不同的含义 42.有:int w=11,x=12,y=3,m;执行下面语句后m的结果是(C)m=(w

43.有:int w=7, x=12, y=3, m;执行下面语句后m的值是(A)m=(w>x)?w:x;m=(m>y)?m:y;A.12 B.0 C.3 D.1

45.设整型变量 a=2,则执行下列语句后,浮点型变量b的值不为0.5的是(B)

A.b=1.0/a B.b=(float)(1/a)C.b=1/(float)a D.b=1/(a*1.0)

48.以下运算符中优先级最高的运算符是(B)

A)&& B)++ C)+= D)!= 49.若“int n;float f=13.8;”,则执行“n=(int)f%3”后,n的值是(A)A.1 B.4 C.4.333333 D.4.6

52.设x为int型变量,则执行以下语句后,x的值为(C)

x=10;x*=x;A)10 B)20 C)100 D)0 53.若有语句int a=1,b;double y=2.3;b=(int)y;则b的值为(B)。

A)3 B)2 C)1 D)2.3 54.已知int x;char y;则下面错误的scanf函数调用语句为(B)A)scanf(“%d,%d”,&x,&y);B)scanf(“%d,%c”,x,y)C)scanf(“%d%d”,&x,&y)D)scanf(“%d,%c”,&x,&y)

57.在C语言的库函数中,可以输出char型变量x值的语句是 C。A)getchar(x);B)fputc(x)C)putchar(x)D)puts(x)

60.以下说法正确的是(C)

A)'x'+5是一个错误的表达式 B)C语言不允许类型的混合运算

C)强制类型转换时,类型说明符必须加括号 D)(int)x+y 和(int)(x+y)是完全等价的表达式 61.设 int x=0, y=1;表达式(x||y)的值是(B)A)0 B)1 C)2 D)-1

三、选择结构

1.在C语言中,认为(D)为逻辑“真” A)true B)大于0的数 C)非0整数 D)非0的数 A)(x<=y)&&(y<=z)B)(x<=y)AND(y<=z)C)(x<=y<=z)D)(x<=y)&(y<=z)3.能正确表示逻辑关系:“a≥=10或a≤0”的C语言表达式是(D)A)a>=10 or a<=0 B)a>=0|a<=10 C)a>=10 &&a<=0 D)a>=10‖a<=0

4、判断char型变量c1是否为大写字母的表达式为(D)。

A、’A’<=c1<=’Z’ B、(c1>=’A’)&(c1<=’Z’)C、(’A’<=c1)AND(‘Z’>=c1)D、c1>=’A’ && c1<=’Z’ 5.为表示逻辑表达式79

A)(X>79)&&(X<90)B)(X>79)!=(X<90)2.表示关系x<=y<=z的c语言表达式为 A C)7979)||(X<90)6.设有语句“int a=2,b=3,c=-2,d=2;”,则逻辑表达式“a>0&&b&&c<0&&d>0”的 值是(A)

A.1 B.0

C.-1 D.出错

7.设a为整型变量,则不能正确表达数学关系10<a<15的C语言表达式是(A)。A.1010&&a<15 D.!(a<=10)&&!(a>=15)8.设x,t均为int型变量,则执行语句“x=10;t=x&&x>10;”后,t的值为(D)A.不定值

B.10 C.1 D.0 9.若int i=10;执行下列程序后,变量i的正确结果是(A)。switch(i){ case 9: i+=1;case 10: i+=1;case 11: i+=1;default : i+=1;} A、13 B、12 C、11 D、10 10.在下面的条件语句中(其中s1和s2表示是C语言的语句),只有一个在功能上与其它三个语句不等价,它是(D)。

A、if(a)s1;else s2;B、if(a= =0)s2;else s1;C、if(a!=0)s1;else s2;D、if(a= =0)s1;else s2;11.假定所有变量均已正确定义,则下列程序段运行后y的值是(A)

int a=0,y=10;if(a=0)y--;else if(a>0)y++;else y+=y;A.20 B.11 C.9 D.0 12.假定所有变量均已正确定义,则下列程序段运行后x的值是(B)。

a=b=c=0;x=35;if(!a)x--;else if(b);if(c)x=3;else x=4;A.34 B.4 C.35 D.3 13.C语言对嵌套if语句的规定是:else语句总是与(D)配对。A)其之前最近的if B)第一个if C)缩进位置相同的if D)其之前最近的且尚未配对的if 14.在C语言语句中,用来决定分支流程的表达式是(A)。

A.可用任意表达式

B.只能用逻辑表达式或关系表达式 C.只能用逻辑表达式

D.只能用关系表达式 15.C语言中用(B)表示逻辑“真”。

A.true B.整数值1 C.非零整数值 D.false

16、若k是int型变量,且有下面的程序段:

int k;k=-3;if(k<=0)printf(“####”); else printf(“&&&&”); 上面程序段的输出结果是(A)

A、#### B、&&&& C、####&&&& D、有语法错误,无输出结果

17.main(){ int x=0,a=0,b=0;switch(x){ case 0: b++;case 1: a++;case 2: a++;b++;} printf(“a=%d,b=%dn”,a,b);} 该程序的输出结果是 D

A)a=2,b=1 B)a=1,b=1 C)a=1,b=0 D)a=2,b=2 18.以下程序的输出结果是:(C)

main(){ int x=-10,y= 1,z=1;if(x

int a=10,b=50,c=30; if(a>b)a=b; b=c; c=a;

printf(“a=%2d b=%2d c=%2dn”,a,b,c);

A)a=10 b=50 c=10 B)a=10 b=30 c=10 C)a=50 b=30 c=10 D)a=50 b=30 c=50

四、循环结构

*1.在C语言中,下列说法中正确的是(D)。

A)do-while语句构成的循环不能用其它语句构成的循环来代替。B)do-while语句构成的循环只能用break语句退出。

C)do-while语句构成的循环在while后的表达式非零时结束循环。

D)do-while语句构成的循环,在while后的表达式为零时结束循环。

2.break语句不能出现在(D)语句中

A.switch B.for C.while D.if„else *3.对于break语句和continue语句的说法错误的是(B)

A)break语句不能用于循环语句和switch语句之外的任何其他语句中。B)break和continue也可以用于if语句中

C)continue语句只结束本次循环,而不是终止整个循环的执行。D)break语句是结束整个循环过程,不再判断执行循环的条件是否成立。4.语句while(!y);中的表达式!y等价于 A

A)y==0 B)y!=1 C)y=!0 D)y==1 5.若有“int a=1,x=1;”,则循环语句“while(a<10)x++;a++;”的循环执行(A)

A.无限次

B.不确定次

C.10次

D.9次 6.有以下程序段

int k=0 while(k)k++;则while循环体执行的次数是

C

A)无限次

B)有语法错,不能执行

D)执行1次 C)一次也不执行

7.下列循环语句中有语法错误的是(D)A while(x=y)5; B while(0);

C do 2;while(x= =b); D do x++ while(x= =10); 9.以下程序段(A)8 x=-1;do { x=x*x;} while(x>0);A.是死循环 B.循环执行一次 C.循环执行二次 D.有语法错误 10.下面程序段执行后的结果为:(B)int sum=0, n=10;do { sum=sum+n;n++;} while(n<10)printf(“%d,%d”,sum,n)A.0, 10 B.10, 11 C.0, 11 D.以上结果都不对 11.对以下程序段的叙述正确的是___A____.int x=1;do { x=-1*x;} while(!x)A)是死循环 B)循环执行一次 C)循环执行二次 D)有语法错误 12.循环“for(i=0,x=1;i=10&&x>0;i++);”的循环执行(A)。A.无限次

B.不确定次

C.10次

D.9次 13.执行语句{for(j=0;j<=3;j++)a=1;}后变量j的值是 C.A)0 B)3 C)4 D)1 14. 有如下程序

main(){ int i,sum=2;for(i=1;i<=3;i+=2)sum+=i;printf(“%dn”,sum);} 该程序的执行结果是 A

A)6 B)3 C)死循环 D)4 五 数组

1.以下对一维数组a的正确说明是: D

A)char a(10);

B)int a[];

C)int k=5,a[k]; D)char a[3]={‘a’,’b’,’c’};2.以下能对一维数组a进行初始化的语句是:(C)A.int a[5]=(0,1,2,3,4,)B.int a(5)={} C.int a[3]={0,1,2} D.int a{5}={10*1} 3.在C语言中对一维整型数组的正确定义为 D。A)int a(10);B)int n=10,a[n];C)int n;a[n];D)#define N 10 int a[N];

4、已知:int a[10];则对a数组元素的正确引用是(D)。

A、a[10]

B、a[3.5]

C、a(5)

D、a[0] 5.执行下面的程序段后,变量k中的值为 C

A)不定值 B)33 C)30 D)10 int k=3, s[2];s[0]=k;k=s[0]*10;*6.下列说法中错误的是 C

A 构成数组的所有元素的数据类型必须是相同的 B 用指针法引用数组元素允许数组元素的下标越界 C 一维数组元素的下标依次是1、2、3„„ D 定义数组时的长度可以是整型常量表达式

7.若有以下数组说明,则数值最大的和最小的元素下标分别是(B)。int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};A.1,12 B.0,11 C.1,11 D.0,12 8.若有以下数组说明,则i=10;a[a[i]]元素数值是(B)。int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};A.10 B.9 C.6 D.5 9.假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是 D A)3

11.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}};则数组a的第一维的大小为:(B)A.2 B.3 C.4 D.无确定值 12.以下定义语句中,错误的是(D)

B)6

C)10

D)20 A)int a[]={1,2};B)char *a;D)int n=5,a[n];C)char s[10]=“test”;

int i;13.下面程序段的输出结果是:(C)int x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf(“%d ”,x[i][2-i]);A)1 5 9 B)1 4 7 C)3 5 7 D)3 6 9 14.对二维数组的正确定义是(C)

A.int a[ ] [ ]={1,2,3,4,5,6};B.int a[2] [ ]={1,2,3,4,5,6};C.int a[ ] [3]={1,2,3,4,5,6};D.int a[2,3]={1,2,3,4,5,6};15.已知int a[3][4];则对数组元素引用正确的是__C___ A)a[2][4] B)a[1,3] C)a[2][0] D)a(2)(1)

六、函数

1.C语言中函数返回值的类型是由 A 决定的.A)函数定义时指定的类型 B)return语句中的表达式类型 C)调用该函数时的实参的数据类型 D)形参的数据类型 2.在C语言中,函数的数据类型是指(A)A 函数返回值的数据类型 B.函数形参的数据类型 C 调用该函数时的实参的数据类型 D.任意指定的数据类型

A.由系统选择 B.单向值传递 C.由用户指定传递方式 D.地址传递 5.在函数调用时,以下说法正确的是(B)

A.函数调用后必须带回返回值

B.实际参数和形式参数可以同名

C.函数间的数据传递不可以使用全局变量

D.主调函数和被调函数总是在同一个文件里 9.以下叙述中正确的是 A

A)构成C程序的基本单位是函数

B)可以在一个函数中定义另一个函数

C)main()函数必须放在其它函数之前

D)所有被调用的函数一定要在调用之前进行定义

10.用数组名作为函数调用时的实参时,传递给形参的是 A。

A)数组首地址 B)数组第一个元素的值

C)数组全部元素的值

D)数组元素的个数

*16.下列说法中正确的是:(A)

A.局部变量在一定范围内有效,且可与该范围外的变量同名。

B.如果一个源文件中,全局变量与局部变量同名,则在局部变量范围内,局部变量不起作用。

C.局部变量缺省情况下都是静态变量。

D.函数体内的局部静态变量,在函数体外也有效。17.在C语言中,表示静态存储类别的关键字是:(C)

A)auto

B)register

C)static

D)extern 18.未指定存储类别的变量,其隐含的存储类别为(A)。A)auto B)static C)extern D)register

八.指针

1. 语句int *p;说明了 C。A)p是指向一维数组的指针

B)p是指向函数的指针,该函数返回一int型数据 C)p是指向int型数据的指针

D)p是函数名,该函数返回一指向int型数据的指针 2.变量的指针,其含义是指该变量的:(B)A.值 B.地址 C.名 D.一个标志

3.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是(A)

A)pb=&x B)pb=x C)*pb=&x D)*pb=*x

4、已知:int a, *p=&a;则下列函数调用中错误的是(D)。A、scanf(“%d”,&a);B、scanf(“%d”,p);C、printf(“%d”,a);D、printf(“%d”,p);5.对于同类型的指针变量,不可能进行的运算是(C)。

A.-B.= C.+ D.== 6.对于基类型相同的两个指针变量之间,不能进行的运算是 C

A)< B)= C)+ D)-7.下列不正确的定义是(A)。

A.int *p=&i,i;B.int *p,i;C.int i,*p=&i;D.int i,*p;8.若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是:(D)

A)p=q B)*p=*q C)n=*q D)p=n 9.int *p,a=10,b=1;p=&a;a=*p+b;执行该程序段后,a的值为 C A)编译出错 B)10 C)11 D)12 10.有语句:int a[10],;则 B 是对指针变量p的正确定义和初始化。

A)int p=*a;B)int *p=a;C)int p=&a;D)int *p=&a;11.若有说明语句“int a[5],*p=a;”,则对数组元素的正确引用是(C)。A.a[p] B.p[a] C.*(p+2)D.p+2 12.若指针变量p指向整型数组a[10]的首地址, 即p=a;则下列数组元素a[i](0

A.p+i B.&(a+i)C.*(a+i)D.*(p+i*2)13.有如下程序

int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;则数值为9的表达式是 B

A)*P+9 B)*(P+8)C)*P+=9 D)P+8

16.若有以下说明: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为4的表达式是(C)A)*p+4 B)*(p+4)C)*(p+3)D)p+3

19.下列函数的功能是 A。void fun(int *p1,int *p2){ int p;p=*p1;*p1=*p2;*p2=p;} A)交换*p1和*p2的值 B)语法正确,但无法交换*p1和*p2的值 C)交换*p1和*p2的地址 D)有语法错误

九、字符串

1.在C语言中,以 D 作为字符串结束标志

A)’n’ B)’ ’ C)’0’ D)’’ 2.下列数据中属于“字符串常量”的是(A)。

A.“a” B.{ABC} C.‘abc’ D.‘a’ 3.字符串 “ABCD”在内存占用的字节数是(D)。A.4

B.6

C.1

D.5 4.下面不正确的字符串常量是:(A)

A.‘PROGRAM’ B “12’12” C “0” D “ ” 5.设有数组定义: char array [ ]=“abcd”;则数组array所占的空间为 B

A)4个字节 B)5个字节 C)6个字节 D)7个字节

7.已知char x[]=“hello”, y[]={'h','e','a','b','e'};, 则关于两个数组长度的正确描述是 B.A)相同 B)x大于y C)x小于y D)以上答案都不对

8.给出以下定义: char x[ ]=“abcdefg”;char y[ ]={'a','b','c','d','e','f','g'};则正确的叙述为 C

A)数组x和数组y等价 B)数组x和数组y的长度相同 C)数组x的长度大于数组y的长度

D)数组x的长度小于数组y的长度

9、若有以下语句,则正确的描述是(D)。static char x[ ]=”12345”;static char y[ ]={‘1’,‘2’,‘3’,‘4’, 5’,’’};A、x数组长度大于y数组长度 B、x数组和y数组不相同 C、x数组长度小于y数组长度 D、x数组等价于y数组

10、已知:char s[20]= ”programming”, *ps=s;则不能引用字母o的表达式是(C)。

A、ps[2]

B、s[2]

C、ps+2

D、ps+=2, *ps 13.对字符数组s赋值,不合法的一个是(C)A.char s[]=“Beijing”; B.char s[20]={“beijing”}; C.char s[20];s=“Beijing”;

D.char s[20]={'B','e','i','j','i','n','g'};

14.对字符数组str赋初值,str不能作为字符串使用的一个是(D)A.char str[]=“shanghai”; B.char str[]={“shanghai”};

C.char str[9]={'s','h','a','n','g','h','a','i',’’}; D.char str[8]={ 's','h','a','n','g','h','a','i'}; 15.合法的数组定义是 C

A)int a[]={“string”};B)int a[5]={0,1,2,3,4,5};C)char a[]= “string”;D)char a[5]={0,1,2,3,4,5};16.对字符数组s赋值,不合法的是:(C)A)char s[]=“china”; B)char s[20]={“ china ”};

C)char s[20];s=“ china”; D)char s[20]={'c','h','i','n','a'};

17.下面初始化与此初始化charc[ ]=“I am happy”;等价的是(A)

A)char c[ ]={‘I’,’’,’a’,’m’,’’,’h’,’a’,’p’,’p’,’y’,’’}; B)char c[ ]={‘I’,’am’,’happy’};C)char c[ ]={‘I’, ’’,’a’,’m’,’’,’h’,’a’,’p’,’p’,’y’};D)char c[ ]={‘I’,’am’,’happy’,’’};19.下列字符串赋值方式不正确的是(A)

A).char str[20];B).char *str;str=”I am a boy!”;C).char *str=”I am a boy!”;

str=”I am a boy!”;D).char str[20]=” I am a boy!”;15

第四篇:计算机二级c语言试题及答案

计算机二级考试是全国计算机等级考试(National Computer Rank Examination,简称NCRE)四个等级中的一个等级,考核计算机基础知识和使用一种高级计算机语言编写程序以及上机调试的基本技能。计算机二级考试采用全国统一命题、统一考试的形式。那么计算机二级c语言会怎么考?以下仅供参考!

1.(A)是构成C语言程序的基本单位。

A、函数

B、过程

C、子程序

D、子例程

2.C语言程序从 C 开始执行。

A、程序中第一条可执行语句

B、程序中第一个函数

C、程序中的main函数

D、包含文件中的第一个函数

3、以下说法中正确的是(C)。

A、C语言程序总是从第一个定义的函数开始执行

B、在C语言程序中,要调用的函数必须在main()函数中定义

C、C语言程序总是从main()函数开始执行

D、C语言程序中的main()函数必须放在程序的开始部分

4.下列关于C语言的说法错误的是(B)。

A、C程序的工作过程是编辑、编译、连接、运行

B、C语言不区分大小写。

C、C程序的三种基本结构是顺序、选择、循环

D、C程序从main函数开始执行

5.下列正确的标识符是(C)。

A、-a

1B、a[i]

C、a2_i

D、int t

5~8题为相同类型题

考点:标识符的命名规则

只能由字母、数字、下划线构成数字不能作为标识符的开头

关键字不能作为标识符

选项A中的“-”,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)

6.下列C语言用户标识符中合法的是(B)。

A、3ax

B、x

C、case

D、-e2 E)union

选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);

7.下列四组选项中,正确的C语言标识符是(C)。

A、%x

B、a+b

C、a12

3D、12

3选项A中的“%”,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)

8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。

A、print _3d db8 aBc

B、Iam one_half start$it 3pai

C、str_1 Cpp pow while

D、Pxq My->book line# His.age

选项B中的“”,”$”,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)

9.C语言中的简单数据类型包括(D)。

A、整型、实型、逻辑型

B、整型、实型、逻辑型、字符型

C、整型、字符型、逻辑型

D、整型、实型、字符型

10.在C语言程序中,表达式5%2的结果是 C。

A、2.5B、2C、1D、3%为求余运算符,该运算符只能对整型数据进行运算。且符号与被模数相同。5%2=1;5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1;

/为求商运算符,该运算符能够对整型、字符、浮点等类型的数据进行运算,5/2=

211.如果int a=3,b=4;则条件表达式"aA、3B、4C、0

D、1详见教材P97.表达式1?表达式2:表达式

3先计算表达式1,若表达式1成立,则选择计算表达式2,并表达式2的值作为整个大表达式的值;

若表达式1不成立,则选择计算表达式3,并将表达式3的值作为整个大表达式的值

此题中的aa为3,b为4。a12.若int x=2,y=3,z=4 则表达式x

A、4B、3C、2D、0

E)

113.C语言中,关系表达式和逻辑表达式的值是(B)。

A、0

B、0或

1C、1D、‘T’或’F’

14.下面(D)表达式的值为4.A、11/

3B、11.0/

3C、(float)11/

3D、(int)(11.0/3+0.5)

14~16题为同一类型

详见教材P54~56.(1)相同数据类型的元素进行数学运算(+、-、*、/)得到结果还保持原数据类型。

(2)不同数据类型的元素进行数学运算,先要统一数据类型,统一的标准是低精度类型转换为高精度的数据类型。

选项A,11与3为两个整数,11/3结果的数据类型也应为整数,因此将3.666666的小数部分全部舍掉,仅保留整数,因此11/3=3.选项B,11.0为实数,3为整数,因此首先要统一数据类型,将整型数据3转换为3.0,转换后数据类型统一为实型数据,选项B变为11.0/3.0,结果的数据类型也应为实型数据,因此选项B 11.0/3=3.666666

选项C,先将整数11强制类型转换,转换为实型11.0,因此选项C变为11.0/3,其后计算过程、结果与选项B同

选项D,首先计算11.0/3,其计算过程、结果与选项B同,得到3.666666;再计算3.666666+0.5=4.166666,最后将4.166666强制类型转换为整型,即将其小数部分全部舍掉,结果为

415.设整型变量 a=2,则执行下列语句后,浮点型变量b的值不为0.5的是(B)

A、b=1.0/a

B、b=(float)(1/A、C、b=1/(float)a

D、b=1/(a*1.0)

16.若“int n;float f=13.8;”,则执行“n=(int)f%3”后,n的值是(A)

A、1B、4C、4.33333

3D、4.6

“(int)f“表示将f中的值强制类型转换为整型,即将13.8的小数部分舍掉,转换为13;然后计算13%3,结果为1,再将结果赋给变量n,因此n的值为

117.以下对一维数组a的正确说明是: D

A、char a(10);

B、int a[];

C、int k=5,a[k];

D、char a[3]={‘a’,’b’,’c’};

详见教材P143~144,一维数组的定义、初始化

类型符 数组名 [常量表达式]

类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;常量表达式是指数组的长度(数组中包含元素的个数),其值只能是整数,不可以是变量,而且从1开始计数。

选项A,常量表达式只能放在中括号 [ ]中

选项B,只有在对数组初始化(即赋值)的时候才可以省略数组的长度,B中并未对a进行初始化。

选项C,常量表达式不能为变量。

18.以下能对一维数组a进行初始化的语句是:(C)

A、int a[5]=(0,1,2,3,4,)

B、inta(5)={}

C、int a[3]={0,1,2}

D、int a{5}={10*1}

详见教材P145,一维数组的定义、初始化

选项B,D,常量表达式只能放在中括号 [ ]中

选项A,数组可以看做是若干个相同数据类型元素的有序集合,因此以集合的形式对其初始化,使用{ }对其初始化,选项A用了().19.在C语言中对一维整型数组的正确定义为 D。

A、int a(10);

B、int n=10,a[n];

C、int n;a[n];

D、#define N 10

int a[N];

20、已知:int a[10];则对a数组元素的正确引用是(D)。

A、a[10]

B、a[3.5]

C、a(5)

D、a[0]

详见教材P144,数组元素的引用

数组名[下标]

引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数

int a[10]表示定义了一个包含10个整型数据的数组a,数组元素的逻辑地址下标范围为0~9,即a[0] 表示组中第1个元素;a[1] 表示组中第2个元素;a[2] 表示组中第3个元素;......;a[9] 表示组中第10个元素.选项A,超过了数组a的逻辑地址下标范围;

选项B,逻辑地址下标只能为整数

选项C,逻辑地址下标只能放在[ ]中

21.若有以下数组说明,则i=10;a[a[i]]元素数值是(C)。

int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};

A、10

B、9

C、6

D、5先算a[a[i]]内层的a[i],由于i=10,因此a[i]即a[10].a[10]对应下面数组中的元素为9.因此a[a[i]]即为a[9]

a[9]对应下面数组中的元素为6.因此a[9]即为6

22.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}};则数组a的第一维的大小为:(B)

A、2B、3C、4D、无确定值7

D、3 6 9

二维数组的一维大小,即指二维数组的行数,在本题中,按行对二维数组赋值,因此内层有几个大括号,数组就有几行

23.对二维数组的正确定义是(C)

详见教材P149~152,二维数组的定义、初始化

类型符 数组名 [常量表达式][常量表达式]

二维数组可以看做是矩阵

类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;第一个常量表达式是指数组的行数;第二个常量表达式是指数组的列数;常量表达式的值只能是整数,不可以是变量,而且从1开始计数。

一维数组初始化时可以省略数组长度

二维数组初始化时可以省略行数,但不能省略列数

选项A,B,都省略了列数

选项D,不符合二维数组定义的一般形式,行、列常量表达式应该放在不同的[]中

A、int a[ ][ ]={1,2,3,4,5,6};

B、int a[2] []={1,2,3,4,5,6};

C、int a[ ] [3]={1,2,3,4,5,6};

D、int a[2,3]={1,2,3,4,5,6};

24.已知int a[3][4];则对数组元素引用正确的是__C___

A、a[2][4]

B、a[1,3]

C、a[2][0]

D、a(2)(1)

详见教材P150,数组元素的引用

数组名[下标] [下标]

引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数

第一个[下标]表示行逻辑地址下标,第二个[下标]表示列逻辑地址下标。

本题图示详见P149图6.7

因此a的行逻辑地址范围0~2;a的列逻辑地址范围0~3;

选项A,列逻辑地址下标超过范围

选项B,D,的引用形式不正确。

25.C语言中函数返回值的类型是由 A 决定的.A、函数定义时指定的类型

B、return语句中的表达式类型

C、调用该函数时的实参的数据类型

D、形参的数据类型

26.在C语言中,函数的数据类型是指(A)

A、函数返回值的数据类型

B、函数形参的数据类型

C、调用该函数时的实参的数据类型

D、任意指定的数据类型

27.在函数调用时,以下说法正确的是(B)

A、函数调用后必须带回返回值

B、实际参数和形式参数可以同名

C、函数间的数据传递不可以使用全局变量

D、主调函数和被调函数总是在同一个文件里

28.在C语言中,表示静态存储类别的关键字是:(C)

A、auto

B、register

C、static

D、extern

29.未指定存储类别的变量,其隐含的存储类别为(A)。

A、auto

B、static

C、extern

D、register

30.若有以下说明语句:

struct student

{ int num;

char name[ ];

float score;

}stu;

则下面的叙述不正确的是:(D)

A、struct是结构体类型的关键字

B、struct student 是用户定义的结构体类型

C、num, score都是结构体成员名

D、stu是用户定义的结构体类型名

31.若有以下说明语句:

struct date

{ int year;

int month;

int day;

}brithday;

则下面的叙述不正确的是__C___.A、struct是声明结构体类型时用的关键字

B、struct date 是用户定义的结构体类型名

C、brithday是用户定义的结构体类型名

D、year,day 都是结构体成员名

32.以下对结构变量stul中成员age的非法引用是 B

struct student

{ int age;

int num;

}stu1,*p;

p=&stu1;

A、stu1.age

B、student.age

C、p->age

D、(*p).age

33.设有如下定义:

struck sk

{ int a;

float b;

}data;

int *p;

若要使P指向data中的a域,正确的赋值语句是 C

A、p=&a;

B、p=datA、a;

C、p=&datA、a;

D、*p=datA、a;

34.设有以下说明语句:

typedef struct stu

{ int a;

float b;

} stutype;

则下面叙述中错误的是(D)。

A、struct是结构类型的关键字

B、struct stu是用户定义的结构类型

C、a和b都是结构成员名

D、stutype是用户定义的结构体变量名

35.语句int *p;说明了 C。

A、p是指向一维数组的指针

B、p是指向函数的指针,该函数返回一int型数据

C、p是指向int型数据的指针 // 指针的定义教材P22

3D、p是函数名,该函数返回一指向int型数据的指针

36.下列不正确的定义是(A)。

A、int *p=&i,i;

B、int *p,i;

C.int i,*p=&i;

D、int i,*p;

选项A先定义一个整型指针变量p,然后将变量i的地址赋给p。然而此时还未定义变量i因此编译器无法获得变量i的地址。(A与C对比,选项C先定义变量i,则在内存中为i分配空间,因此i在内存空间的地址就可以确定了;然后再定义p,此时可以为p赋i的地址,C正确)

37.若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是:(D)

A、p=q

B、*p=*q

C、n=*q

D、p=n

p,q同为整型指针变量,二者里面仅能存放整型变量的地址。

选项A,q中为地址,因此可将此地址赋给p

选项B,*p表示p所指向对象n的内容,即一个整数;*q表示q所指向对象的内容,由于在定义q时为其初始化,将p中n的地址给q,因此p中存放n的地址,*q表示q所指向对象n的内容.因此*p=*q 相当于 n=n;

选项C,n=*q 等价于n=n;

选项D,p中只能存放地址,不能将n中的整数值赋给p

38.有语句:int a[10],;则 B 是对指针变量p的正确定义和初始化。

A、int p=*a;

B、int *p=a;

C、int p=&a;

D、int *p=&a;

选项A,a是数组名,不是指针变量名,因此不可用*标注数组名a

选项C,a是数组名,数组名就是地址,无需再用地址符号。而且在定义指针变量p时,应在变量名前加*,标明p是指针变量

选项D,a是数组名,数组名就是地址,无需再用地址符号。

39.若有说明语句“int a[5],*p=a;”,则对数组元素的正确引用是(C)。

A、a[p]

B、p[a]

C、*(p+2)

D、p+

2首先定义一个整型数组a,a的长度为5,然后定义一个指针变量p,并同时对p进行初始化,将数组a的地址赋给p。因此此时p中存放的数组a的首地址,即数组中第一个元素a[0]的地址。

对于数组元素下标的引用(详见p144), 一般形式 数组名[下标] 其中下标为逻辑地址下标,从0开始计数,方括号中的下标可以是变量,可以是表达式,但结果一定要是整数。

选项A,p中存放的是地址,不是整数,不能做数组元素的下标

选项B,a是数组名,数组名就是地址,不是整数,不能做数组元素的下标

选项C,(重点!!详见p231~234)p+2表示指向同一数组中的下两个元素的地址,当前p指向a[0],则p+2表示a[2]的地址,因此*(p+2)表示a[2]的内容

40.有如下程序

int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;

则数值为9的表达式是 B

A、*P+9

B、*(P+8)

C、*P+=9

D、P+8

(重点!!详见p231~234)

首先定义一个整型数组a,a的长度为5,然后定义一个指针变量P,并同时对P进行初始化,将数组a的地址赋给P。因此此时P中存放的数组a的首地址,即数组中第一个元素a[0]的地址。

数组中9对应的是a[8], 选项B,P+8表示数组中后8个元素的地址,即a[8]的地址。*(P+8)则表示该地址内所存放的内容,即a[8]的值。

选项A,*P表示P所指向对象的内容,此时P指向a[0], *P即a[0]的值1.*P+9=1+9=10

选项C,*P表示P所指向对象的内容,此时P指向a[0], *P即a[0]的值。因此*P+=9 即*P =*P+9, 等价于a[0]=a[0]+9.选项D,P+8表示数组中后8个元素的地址,即a[8]的地址,而非a[8]中的值。

第五篇:c语言选择题

2.C语言的基本单位是A

A 函数

B 源程序

C 语句

D 程序行

3..以下说法中正确的是C

A C语言程序总是从第一个定义的函数开始执行C;

B C语言程序中至少有一个main函数;

C C语言程序总是从main函数开始执行;

D C语言程序中的main函数必须放在程序的开始部分; 4.C源程序文件的扩展名为C A.exe B.txt

C.c D.obj 5..以下说法中正确的是D

A C源程序可以直接运行产生结果;

B C源程序经编译后才可直接运行产生结果;

C C源程序经连接后才可直接运行产生结果;

D C源程序经编译和连接后才可直接运行产生结果;

6.在C程序中,main()函数的位置是C A 必须作为第一个函数;

B 必须作为最后一个函数;

C 可以任意;

D 必须放在它所调用的函数之后;

7.以下叙述不正确的是D

A 一个C源程序可由一个或多个函数构成;

B 一个C源程序必须包含一个main函数;

C C程序的基本组成单位是函数;

D 在对一个C程序进行编译的过程中,可发现注释中的拼写错误;

8.C语言中,下列正确的叙述是D

A C程序中的关键字必须小写,其他标识符不区分大小写

B C程序中的所有字母都不区分大小写

C C程序中的所有字母都必须小写

D 所有的C语言关键字必须小写

9.要把高级语言编写的源程序转换为目标程序,需要使用D A 编辑程序

B 驱动程序

C 诊断程序

D 编译程序

10.以下叙述中错误的是 D

A C语言源程序经编译后生成后缀为.obj的目标程序

B C语言经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件

C 用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中

D C语言的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

11.用C语言编写的代码程序B

A 可立即执行

B 是一个源程序

C 经过编译即可执行

D 经过编译解释才能执行

12.以下叙述中正确的是B

A C语言的源程序不必通过编译就可以直接运行

B C语言中的每条可执行语句最终都将被转换成二进制的机器指令

C C源程序经编译形成的二进制代码可以直接运行

D C语言中的函数不可以单独进行编译

13.以下叙述中正确的是A A 构成C程序的基本单位是函数

B 可以在一个函数中定义另一个函数

C main()函数必须放在其它函数之前

D 所有被调用的函数一定要在调用之前进行定义

14.能将高级语言源程序转换成目标程序的是C

A 调试程序

B 解释程序

C 编译程序

D 编辑程序

15.以下叙述中正确的是C

A C程序的基本组成单位是语句

B C程序中的每一行只能写一条语句

C 简单C语句必须以分号结束

D C语句必须在一行内写完

16.计算机能直接执行的程序是D

A 源程序

B 目标程序

C 汇编程序

D 可执行程序

17.在语言中,以下叙述不正确的是D A 一个C源程序可由一个或多个函数组成B 一个C源程序必须包含一个main函数

C C程序的基本组成单位是函数

D 在C程序中,注释说明只能位于一条语句的后面

18.C语言规定:在一个源程序中,main函数的位置C A 必须在最开始

B 必须在系统调用的库函数的后面

C 可以任意

D 必须在最后

19.一个C程序的执行是从A

A 本程序的main 函数开始,到main函数结束

B 本程序文件中的第一个函数开始,到本程序文件的最后一个函数结束

C 本程序的main 函数开始,到本程序文件的最后一个函数结束

D 本程序文件的第一个函数开始,到本程序main函数结束

20.下列叙述中错误的是A

A 主函数中定义的变量在整个程序中都是有效的。

B 在其它函数中定义的变量在主函数中也不能使用。

C 形式参数也是局部变量。

D 复合语句中定义的变量只在该复合语句中有效。

21.在函数的说明和定义时若没有指出函数的类型,则A A 系统自动地认为函数的类型为整型。

B 系统自动地认为函数的类型为字符型。

C 系统自动地认为函数的类型为实型。

D 编译时会出错。

22.下面叙述中正确的是C

A 对于用户自己定义的函数,在使用前必须加以说明。

B 说明函数时必须明确其参数类型和返回类型。

C 函数可以返回一个值,也可以什么值也不返回。

D 空函数不完成任何操作,所以在程序设计中没有用处。

23.下面正确的函数定义形式是A A double fun(int x,int y)

B double fun(int x;int y)C double fun(int x,int y);

D double fun(int x,y);

24.若调用一个函数,且此函数中没有return语句,则正确的说法是(D)该 函数:

A 没有返回值

B 返回若干个系统默认值;

C 能返回一个用户所希望的函数值;

D 返回一个不确定的值

25.下面说法中不正确的是(B)在C语言中

A 实参可以是常量、变量或表达式;

B 形参可以是常量、变量或表达式;

C 函数的参数是函数间传递数据的一种手段;

D 实参个数应与对应的形参个数相等,类型匹配;

26.C语言允许函数返回值类型缺省定义,此时该函数隐含的返回值类型是B A float型

B int 型

C long 型

D double型

27.C语言规定,函数返回值的类型是由D A return语句中的表达式类型所决定;

B 调用该函数时的主调函数类型所决定;

C 调用该函数时系统临时决定;

D 在定义该函数时所指定的函数类型所决定;

28下面函数调用语句含有实参的个数为(B)

func((exp1,exp2),(exp3,exp4,exp5));A 1 B 2 C 5 D 4

29.以下错误的描述是(D)函数的调用可以

A 出现在执行语句中;

B 出现在一个表达式中;

C 为一个函数的实参;

D 作为一个函数的形参;

30.下正确的说法是(A)。如果在一个函数中的复合语句中定义了一个变量,则该变量

A 只在该复合语句中有效

B 在该函数中有效

C 本程序中有效

D 为非法变量

31.以下不正确的说法是D

A 在不同函数中可以使用相同的名字的变量;

B 形式参数是局部变量;

C 在函数内定义的变量只在本函数范围内有效;

D 在函数内的复合语句中定义的变量在本函数范围内有效;

32.如果一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见 的,这个变量的存储类型应该被说明为___ A _。

A 静态变量

B 动态变量

C 外部变量

D 内部变量 33.在一个C源程序文件中,•若要定义一个只允许在该源文件中所有函数使用的 变量,则该变量需要使用的存储类别是。D A extern B register C auto D static 34.在C语言中,函数的数据类型是指A A 函数返回值的数据类型

B 函数形参的数据类型

C 调用该函数时的实参的数据类型

D 任意指定的数据类型

35.已知如下定义的函数:

fun1(int a){ printf(“n%d”,a); } 则该函数的数据类型是_A___。

A 与参数a的类型相同

B void型

C 没有返回值

D 无法确定

36.有如下函数调用语句

func(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是A A 3 B 4 C 5 D 有语法错

37.以下所列的各函数首部中,正确的是C A void play(var :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)38.以下正确的说法是B

A 用户若需调用标准库函数,调用前必须重新定义;

B 用户可以重新定义标准库函数,若如此,该函数将失去原有含义;

C 系统根本不允许用户重新定义标准库函数;

D 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调;

39.函数用 return 语句返回计算 20!的结果,此函数的类型应说明为_D_____。

A int

B long

C unsigned long

D 其它三个答案都不对

40.若有以下程序

#include “stdio.h” void f(int n);main(){

void f(int n);

f(5);}

void f(int n){

printf(“%dn”,n);}

则以下叙述中不正确的是C

A 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f

B 若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f C 对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明

D 函数f无返回值,所以可用void将其类型定义为无值型

41.在C语言中,形参的缺省存储类是A A auto

B register

C static

D extern 42.以下叙述中错误的是 D

A C程序必须由一个或一个以上的函数组成 B 函数调用可以作为一个独立的语句存在 C 若函数有返回值,必须通过return语句返回

D 函数形参的值也可以传回对应的实参

43.在C语言中关于函数的正确叙述是B A 函数的定义和调用均可以嵌套

B 函数的定义不可以嵌套,但函数的调用可以嵌套

C 函数的定义和调用均不可以嵌套

D 函数的定义可以嵌套,但函数的调用不可以嵌套

44.有以下程序

int f1(int x,int y){return x>y?x:y;} int f2(int x,int y){return x>y?y:x;} main(){

int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf(“%d,%d%d ”,e,f,g);}

程序运行后的输出结果是(A)。

A 4,3,7

B 3,4,7

C 5,2,7

D 2,5,7 45.以下关于函数的叙述中正确的是B

A 每个函数都可以被其它函数调用(包括main函数)

B 每个函数都可以被单独编译

C 每个函数都可以单独运行

D 在一个函数内部可以定义另一个函数

46.设函数fun的定义形式为 void fun(char ch, float x){ „ } 则以下对函数fun的调用语句中,正确的是(D)。

A fun(“abc”,3.0);B t=fun(''D'',16.5);C fun(''65'',2.8);

D fun(32,32);

47.若程序中定义了以下函数 double myadd(double a,double B){ return(a+B)} 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是(A)。

A double myadd(double a,B)

B double myadd(double,double);C double myadd(double b,double A)

D double myadd(double x,double y);

48.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是D A 函数调用可以作为独立的语句存在 B 函数调用可以作为一个函数的实参

C 函数调用可以出现在表达式中

D 函数调用可以作为一个函数的形参

49.有以下函数定义: void fun(int n, double x){ „„ } 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是(C)。

A fun(int y,double m);

B k=fun(10,12.5);C fun(x,n);

D void fun(n,x);

50.有以下函数定义: void fun(int n, double x){ „„ } 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是(C)。

A fun(int y,double m);B k=fun(10,12.5);C fun(x,n);

D void fun(n,x);

51.在一个C程序中B

A main函数必须出现在所有函数之前

B main函数可以在任何地方出现

C main函数必须出现在所有函数之后

D main函数必须出现在固定位置

52.有以下程序 int fl(int x,int y)

{ return x>y?x:y;}

int f2(int x,int y)

{ return x>y?y:x;}

main()

{ int a=4,b=3,c=5,d,e,f; d=f1(a,b);d=f1(d,c);e=f2(a,b);e=f2(e,c); f=a+b+c-d-e;printf(“%d,%d,%dn”,d,f,e);} 执行后输出结果是(C)。

A 3,4,5 B 5,3,4

C 5,4,3 D 3,5,4 53.以下叙述中正确的是B

A 全局变量的作用域一定比局部变量的作用域范围大

B 静态(static)类别变量的生存期贯穿于整个程序的运行期间

C 函数的形参都属于全局变量

D 未在定义语句中赋初值的auto变量和static变量的初值都是随机值

54.C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是B A void

B int

C float

D double 55.有以下程序

float fun(int x,int y){ return(x+y);} main()

{ int a=2,b=5,c=8;printf(“%3.0fn”,fun((int)fun(a+c,b),a-c));} 程序运行后的输出结果是(B)。

A 编译出错

B 9 C 21 D 9.0 56.以下函数值的类型是(A)。

fun(float x){ float y;y= 3*x-4;return y;} A int B 不确定 C void D float 57.下列叙述中正确的是D A C语言编译时不检查语法

B C语言的子程序有过程和函数两种

C C语言的函数可以嵌套定义

D C语言所有函数都是外部函数

58.以下程序的输出结果是(C)。

fun(int x, int y, int z){ z=x*x+y*y;} main(){ int a=31;fun(5,2,a);

printf(“%d”,a);}

A 0 B 29 C 31 D 无定值

59.有如下程序

int runc(int a,int b){ return(a+b);} main()

{ int x=2,y=5,z=8,r;r=func(func(x,y),z);printf(“%dn”,r);}

该程序的输出的结果是(D)。

A 12

B 13 C 14 D 15

60.以下叙述中不正确的是D A 在不同的函数中可以使用相同名字的变量 B 函数中的形式参数是局部变量

C 在一个函数内定义的变量只在本函数范围内有效

D 在一个函数内的复合语句中定义的变量在本函数范围内有效

61.有以下程序 viod fun(int a,int b,int c){ a=456;b=567;c=678;} main(){ int x=10,y=20,z=30;fun(x,y,z);printf(“%d,%d,%dn”,z,y,x);} 输出结果是(A)。

A 30,20,10 B 10,20,30 C 456,567,678 D 678,567,456 62.以下叙述中不正确的是C

a)A 在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。

B 在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。

C 在C中,外部变量的隐含类别是自动存储类别。

D 在C中,函数形参可以说明为register变量。

63.若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调 用语句中实参的个数是A A 3

B 4

C 5

D 6

64.C语言中,函数的隐含存储类别是C A auto

B static

C extern D 无存储类别

65.以下说法中正确的是C

A C语言程序总是从第一个的函数开始执行

B 在C语言程序中,要调用的函数必须在main()函数中定义

C C语言程序总是从main()函数开始执行

D C语言程序中的main()函数必须放在程序的开始部分

66.下面说法中不正确的是D A 全局变量一定是外部变量

B 局部变量一定是内部变量。

C 全局变量作为函数间传递数据的手段时,与文件的作用类似,都是通过共享某种资源来传递数据。

D 全局变量与局部变量不可以重名

67.C 语言允许函数返回值类型缺省定义,此时该函数返回值默认的类型是B a)A float 型

B int 型

C long 型

D double 型

68.关于流程控制语句,下列说法正确的一项是C A 一个自定义函数中的return语句只能出现一次;

B break语句只适用于几种循环语句格式,表示终止当前层的循环;

C 在循环体中遇到continue,表示结束本次循环,直接进行下次循环条件的判断;

D 在自定义函数的执行过程中,return语句可能被多次执行。

69.若有定义语句:char s[10]=“1234567”;,则strlen(s)的值是A A 7 B 8 C 9 D 10

70.若有定义:int x,*pb;则以下正确的赋值表达式是(C)

A *pb=&x;B pb=x;C pb=&x;D *pb=*x;71.执行以下程序后,a的值为

main()

{ int a,b,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;

b=(-*p1)/(*p2)+7;printf(“a=%dn”,a);printf(“b=%d”,b);} A -1 B 1 C 0 D 4

72.下面程序中调用scanf 函数给变量a输入数值的方法是错误的,其错误原因 是(B)main(){ int *p,q,a,b;p=&a;scanf(“%d”,*p);„„ }

A *p表示的是指针变量p的地址;

B *p表示的是变量a的值,而不是变量a的地址

C *p表示的是指针变量p的值

D *p只能用来说明p是一个指针变量

73.若有int k=2,*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确 执行的语句是B

A k=*ptr1+*ptr2;B ptr2=k;

C ptr1=ptr2;

D k=*ptr1*(*ptr2);

74.若有语句int *point a=4;和point &a;下面均代表地址的一组选项是C A a,point,*&a

B &*a,&a,*point C *&point,*point,&a

D &a,&*point,point 75.若有说明:int *p,m=5,n;下面正确的程序段是D a)A p=&n;scanf(“%d”,&p);

B p=&n;scanf(“%d”,*p);C scanf(“%d”,&n);*p=n;

D p=&n;*p=m

76.下面能正确进行字符串赋值操作的是C A char s[5]={“ABCDE”};

B char s[5]={‘A’,’B’,’C’,’D’,’E’};C char *s s=“ABCDE”;D char *s;scanf(“%s”,s);77.设有下面的程序段:

char s[]=”china”;char *p;p=s;则下列叙述正确的是C A s和p完全相同

B 数组s中的内容和指针变量p中的内容相等

C *P与s[0]相等

D s数组长度和p所指向的字符串长度相等

78.下面程序段的运行结果是C

char *format=”%s,a=%d,b=%dn”;int a=1,b=10;a+=b;printf(format,”a+=b”,a,b);

A for,”a+=b”,ab

B format,”a+=b”

C a+=b,a=11,b=10

D 以上结果都不对

79.若有语句:char s1[]=”string”,s2[8],*s3,*s4=”string2”;则对库 函数strcpy()的正确调用是D A strcpy(s1,”string2”);B strcpy(s4,”string1”);C strcpy(s3,”string1”);

D strcpy(s2,s4);80.下面说明不正确的是D A char a[10]=”china”;

B char a[10],*p=a;p=”china”;C char *a;a=”china”;

D char a[10],*p;p=a=”china”;

81.语句while(!e);中的条件!e等价于A A e==0 B e!=0 C e!=1 D ~e 82.以下程序的输出结果是(C)

main()

{ int num=0;while(num<=2){ num++;printf(“%d,”,num);} }

A 1,B 1,2,C 1,2,3,D 1,2,3,4, 83.以下程序段是(C)

x=-1;do

{ x=x*x;} while(!x);

A 死循环

B 循环执行两次

C 循环执行一次

D 有语法错误

84.以下不正确的描述是B

A break语句不能用于循环语句和switch语句外的其它语句

B 在switch语句中使用break语句或continue语句的作用相同

C 在循环语句中使用continue语句是为了结束本次循环

D 在循环语句中使用break语句是为了使流程跳出循环体

85.对于for(表达式1;;表达式3)可理解为B A for(表达式1;0;表达式3)B for(表达式1;1;表达式3)

C for(表达式1;表达式1;表达式3)D for(表达式1;表达式3;表达式3)86.C语言中D

A 不能使用do-whi1e语句构成的循环;

B do-while语句构成的循环必须用break语句才能退出;

C do-while语句构成的循环,当while语句中的表达式值为非零时结束循环;

D do-while语句构成的循环,当while语句中的表达式值为零时结束循环;

87.C语言中while和do-while循环的主要区别是A A do-while的循环体至少无条件执行一次

B while的循环控制条件比do-while的循环控制条件严格

C do-while允许从外部转到循环体内;

D do-while的循环体不能是复合语句;

88.若i为整型变量,则以下循环执行的次数是(B)

for(i=2;i==0;)printf(“%d”,i--);

A 无限次

B 0次

C 1次

D 2次

89.以下for 循环的执行次数是(C)

for(x=0,y=0;(y=123)&&(x<4);x++);

A 是无限循环

B 循环次数不定

C 执行4次

D 执行3次

90.下列循环语句中有语法错误的是D A while(x=y)5;

B while(0); C do 2;while(x==b);

D do x++ while(x==10);

91.有关语句for(;;);执行过程的描绘中,正确的是 C 92.A 不执行任何操作

B 空循环一次

C 无休止地执行循环体

D 上都不对

92.下面有关for循环的正确描述是D

A for循环只能用于循环次数已经确定的情况

B for循环是先执行循环体语句,后判定表达式

C 在for循环中,不能用break语句跳出循环体

D for循环体语句中,可以包含多条语句,但要用花括号括起来

93.与语句 while(!x);等价的语句是A

A while(x==0); B while(x!=0); C while(x!=1); D while(~x);

94.以下for循环是(D)

for(x=0,y=0;(y!=123)&&(x<3);x++);

A 无限循环 B 循环次数不定 C 执行4次 D 执行3次

95.下列关于switch语句和break语句的结论中,正确的是B A break语句是switch语句中的一部分

B 在switch语句中可以根据需要使用或不使用break语句

C 在switch语句中必须使用break语句

D switch语句是break语句的一部分

96.以下叙述中正确的B

A 调用printf函数时,必须要有输出项

B 使用putchar函数时,必须在之前包含头文件stdio.h

C 在C语言中,整数可以以十二进制、八进制或十六进制的形式输出

D 调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码

97.有以下程序段

int n,t=1,s=0;scanf(“%d”,&n);do{ s=s+t;t=t-2;}while(t!=n);

为使此程序段不陷入死循环,从键盘输入的数据应该是D。

A 任意正奇数

B 任意负偶数

C 任意正偶数

D 任意负奇数

98.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)

s=a;

for(b=1;b<=c;b++)s=s+1;

则与上述程序段功能等价的赋值语句是B A s=a+b;B s=a+c;C s=s+c;D s=b+c;99.有如下程序 B main()

{ int x=23;do

{ printf(“%d”,x--);} while(!x);}

该程序的执行结果是

A 321

B 23

C 不输出任何内容

D 陷入死循环

100.以下循环体的执行次数是(C)。main(){ int i,j;

for(i=0,j=1;i<=j+1;i+=2, j--)printf(“%d n”,i);}

A 3

B 2

C 1 D 0

101.以下不是死循环的语句为(A)

A for(y=1,x=1;x>=++y;x++)B for(;;x++)

C while(1){x++;} D for(i=10;;i--)

102.在C语言中,假定a和b为int型变量,则执行以下语句后b的值为D a=1;

b=10;

do {

b-=a;

a++;}

while(b--<0);

A 9

B-2

C-1 D 8

103.在C语言中,以下的for循环()。

for(x=0,y=0;(y!=123)&&(x<4);x++);C

A 是无限循环 B 循环次数不定 C 执行4次 D 执行3次

104.在TC中,与语句 “while(!x)” 等价的语句是(A)。

A while(x==0)

B while(x!=0)

C while(x!=1)

D while(~x)105.在C语言中,设已定义k为int整型变量,则有下面while循环执行(C)次。k=10;while(k==0)k=k-1;

A 10

B 无限

C 0

D 1

106.在C语言中,当do-while语句中的条件为(C)时,结束该循环。

A TURE

B 1

C 0

D 非0 107.下列说法中正确的是B

A 在程序中定义一个结构体类型,将为此类型分配存储空间。

B 结构体类型的成员名可与结构体以外的变量名相同。

C 结构体类型必须有名称。

D 结构体内的成员不可以是结构体变量。

108.当说明一个结构体变量时系统分配给它的内存是A A 各成员所需内存量的总和;

B 结构体中第一个成员所需的内存量;

C 成员中内存量最大者所需的容量;

D 结构体中最后一个成员所需 的内存量;

109.当说明一个共用体变量时系统分配给它的内存是C A 各成员所需内存量的总和;

B 第一个成员所需的内存量;

C 成员中内存量最大者所需的容量;

D 最后一个成员所需 的内存量;

110.设有以下说明语句

typedef struct { int n;char ch[8];}PER;

则下面叙述中正确的是B A PER 是结构体变量名

B PER是结构体类型名

C typedef struct 是结构体类型

D struct 是结构体类型名

111.以下选项中不能正确把cl定义成结构体变量的是B A typedef struct { int red;int green;int blue;} COLOR;COLOR cl;B struct color cl { int red;int green;int blue;};

C struct color { int red;int green;int blue;} cl;

D struct { int red;int green;int blue;} cl;112.设有如下定义:

struck sk { int a;float b;}data;int *p;

若要使P指向data中的a域,正确的赋值语句是(C)。A p=&a;

B p=data.a;

C p=&data.a;

D *p=data.a;113.设有以下说明语句

struct ex

{ int x float y;char z } example;则下面的叙述中不正确的是B A struct结构体类型的关键字

B example是结构体类型名

C x,y,z都是结构体成员名

D struct ex是结构体类型

114.有如下定义

struct person{char name[9];int age;};strict person class[10]={“Johu”, 17, “Mary”, 18, “Adam 16,};

根据上述定义,能输出字母M的语句是 D A prinft(“%cn”,class[3].mane);

B pfintf(“%cn”,class[3].name[1]);

C prinft(“%cn”,class[2].name[1]);

D printf(“%^cn”,class[2].name[0]);

115.若程序中有下面的说明和定义

struct abc

{int x;char y;} struct abc s1,s2;则会发生的情况A A 编译出错

B 程序将顺利编译`连接`执行

C 能顺利通过编译`连接`但不能执行

D 能顺利通过编译`但连接出错

116.设有定义: struct complex

{ int real,unreal;} data1={1,8},data2;则以下赋值语句中错误的是B A data2=data1;B data2=(2,6);

C data2.real=data1.real;D data2.real=data1.unreal;

117.C语言中,逻辑“真”等价于C

A 大于零的数

B 大于零的整数

C 非零的数

D 非零的整数

118.C语言的 switch 语句中,case 后B A 只能为常量

B 只能为常量或常量表达式

C 可为常量及表达式或有确定值的变量及表达式

D 可为任何量或表达式

119.main()

Paul”, 19 “ { int a,b,d=241;a=d/100%9;b=(-1)&&(-1);

printf(“%d,%d”,a,b);}B

A 6,1

B 2,1

C 6,0

D 2,0

120.若有int x=10,y=20,z=30;以下语句执行后x,y,z的值是(B)

if(x>y)

z=x;x=y;y=z;

A x=10,y=20,z=30

B x=20,y=30,z=30 C x=20,y=30,z=10

D x=20,y=30,z=20

121.以下程序段的输出结果是B

int a=10,b=50,c=30; if(a>b)a=b; b=c; c=a;

printf(“a=%d b=%d c=%dn”,a,b,c);

A a=10 b=50 c=10

B a=10 b=30 c=10 C a=50 b=30 c=10

D a=50 b=30 c=50

122.已知int i=10;表达式“20-0<=i<=9”的值B A 0

B 1 C 19

D 20

123.设有int i, j, k;则表达式i=1,j=2,k=3, i&&j&&k 的值为A A 1 B 2 C 3 D 0

124.逻辑运算符两侧运算对象的数据类型D A 只能是0或1

B 只能是0或非0正数

C 只能是整型或字符型数据

D 可以是任何类型的数据

125.能正确表示“当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)

126.已知x=43,ch=’a’,y=0;则表达式(x>=y&&ch<’b’&&!y)的值B A 0

B 1

C 语法错误

D 假

127.执行下列语句后a的值为B

int a=5,b=6,w=1,x=2,y=3,z=4;(a=w>x)&&(b=y>z);A 5

B 0

C 2

D 1

128.若w=1,x=2,y=3,z=4,则表达式w

129.设有int a=2,b;则执行b=a&&1;语句后,b的结果是B A 0

B 1

C 2

D 3

130.当a=5,b=2时,表达式a= =b的值为C

A 2

B 1

C 0

D 5 131.下列表达式中能表示a在0到100之间的B A a>0&a<100 B!(a<0||a>100)C 0

D!(a>0&&a<100)

132.已知:int x,a,b;下列选项中错误的if语句是B A if(a=b)x++;B if(a<=b)x++;C if(a-b)x++;D if(x)x++;

133.当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三 个选项含义不同,这个选项是(D)。

A k%2

B k%2==1

C(k%2)!=0

D!k%2==1

134.设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是A A(!a==1)&&(!b==0)B a

C a && b

D a||(b+b)&&(c-a)

135.以下4个选项中,不能看作一条语句的是D

A {;}

B a=0,b=0,c=0;

C if(a>0);

D if(b==0)m=1;n=2;136.以下非法的赋值语句是C

A n=(i=2,++i);

B j++;

C ++(i+1);

D x=j>0;

137.已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2的值是D A 6

B 0

C 2

D 1 138.有如下程序

main0

{ int a=2,b=-1,c=2;if(a

该程序的输出结果是C A 0

B 1

C 2

D 3

139.能表示x为偶数的表达式是A

A x%2==0

B x%2==1 C x%2

D x%2!=0 140.下面的程序段中共出现了几处语法错误?C int a,b;

scanf(“%d”,a);b=2a;

if(b>0)printf(“%b”,b);

A 1 B 2 C 3 D 4

141.要打开一个已存在的非空文件“file”用于修改,选择正确的语句_D_

A fp=fopen(“file”, “r”);

B fp=fopen(“file”, “a+”);

C fp=fopen(“file”, “w”);

D fp=fopen(“file”, “r+”);

142.fscanf函数的正确调用形式是。D

A fscanf(文件指针, 格式字符串, 输出列表); B fscanf(格式字符串, 输出列表, 文件指针); C fscanf(格式字符串, 文件指针, 输出列表); D fscanf(文件指针, 格式字符串, 输入列表); 143.若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是B A fopen(“A:userabc.txt”,“r”)B fopen(“A:userabc.txt”,“r+”)C fopen(“A:userabc.txt”,“rb”)D fopen(“A:userabc.txt”,“w” 144.以下叙述中错误的C

A C语言中对二进制文件的访问速度比文本文件快

B C语言中,随机文件以二进制代码形式存储数据

C 语句 FILE fp;定义了一个名为fp的文件指针

D C语言中的文本文件以ASCII码形式存储数据

145.若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数 feof(fp)的值为A A 0 B 1 C-1

D 一个非0值

146.下列关于C语言数据文件的叙述中正确的是D

A 文件由ASCII码字符序列组成,C语言只能读写文本文件

B 文件由二进制数据序列组成,C语言只能读写二进制文件

C 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

D 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

147.以下叙述中不正确的是D

A C语言中的文本文件以ASCⅡ码形式存储数据

B C语言中对二进制文件的访问速度比文本文件快

C C语言中,随机读写方式不适用于文本文件

D C语言中,顺序读写方式不适用于二进制文件

148.以下叙述中错误的是D

A 二进制文件打开后可以先读文件的末尾,而顺序文件不可以

B 在程序结束时,应当用fclose函数关闭已打开的文件

C 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据

D 不可以用FILE定义指向二进制文件的文件指针

149.若fp是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是 C A EOF

B 0

C 非零值

D NULL

150.在C程序中,可把整型数以二进制形式存放到文件中的函数是A A fprintf函数

B fread函数

C fwrite函数

D fputc函数

151.使用fopen()以文本方式打开或建立可读可写文件,要求:若指定的文件不存在,则新建一个,并使文件指针指向其开头,若指定的文件存在,打开它,将文件指针指向其结尾。正确的“文件使用方式”描述是B 152.A “r+”

B “w+”

C “a+”

D “a” 153.152.有以下程序

#include main(){ FILE *fp;char str[10];fp=fopen(“myfile.dat”,“w”);fputs(“abc”,fp);fclose(fp);fpfopen(“myfile.data”,“a++”);fprintf(fp,“%d”,28);rewind(fp);fscanf(fp,“%s”,str);puts(str);fclose(fp);}

程序运行后的输出结果是C

A abc

B 28bc

C abc28 D 因类型不一致而出错

153.在C语言中,以下哪个函数用于将字符输出到标准输出设备(A)

A putchar()

B open()

C read()

D getw()154.C语言中用于结构化程序设计的三种基本结构是A A 顺序结构、选择结构、循环结构

B if、switch、break C for、while、do-while

D if、for、continue

155.已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值 为

1、j的值为

2、k的值为3,以下选项中正确的输入语句是C A scanf(“%2d%2d%2d”,&i,&j,&k);B scanf(“%d %d %d”,&i,&j,&k);C scanf(“%d,%d,%d”,&i,&j,&k);

D scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);156.若有以下程序:

main()

{ int k=2,i=2,m;

m=(k+=i*=k);printf(“%d,%dn”,m,i);} 执行后的输出结果是(C)。

A 8,6

B 8,3

C 6,4

D 7,4

157.若有定义:int x,y;char a,b,c;并有以下输入数据(此处< CR> 代表换行 符,/u代表空格): 1u2 AuBuC

则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C 的正确程序段是D

A scanf(“x=%d y+%d”,&x,&y);a=getchar();b=getchar();c=getchar();B scanf(“%d %d”,&x,&y);a=getchar();b=getchar();c=getchar();C scanf(“%d%d%c%c%c,&x,&y,&a,&b,&c);

D scanf(”%d%d%c%c%c%c%c%c:&x,&y,&a,&a,&b,&b,&c,&c);158.有以下程序

#include main(){ char a,b,c,d;scanf(“%c%c”,&a,&b);c=getchar();d=getchar();printf(“%c%c%c%c ”,a,b,c,d);} 当执行程序时,按下列方式输入数据(从第1列开始,代表回车,注意:车也是一个字符)12 34 则输出结果是C

A 1234

B 12

C 123

D 1234 159.以下关于数组的描述正确的是C

A 数组的大小是固定的,但可以有不同的类型的数组元素;

B 数组的大小是可变的,但所有数组元素的类型必须相同;

C 数组的大小是固定的,但所有数组元素的类型必须相同;

D 数组的大小是可变的,但可以有不同的类型的数组元素;

160.在定义int a[10];之后,对a的引用正确的是A A a[9]

B a[6.3]

C a(6)

D a[10]

161.以下对一维数组a进行不正确初始化的是A A int a[10]=(0,0,0,0);B int a[10]={};C int a[]={0};

D int a[10]={10*2};

162.以下对字符数组进行不正确初始化的是A A static char word[]='cool';

B static char word[]={‘c’,’o’,’o’,’l’};C static char word[]={“cool”};D static char word[]=”cool”;

163.在执行char str[10]=”china”;strlen(str)的结果B A 5

B 6

C 7

D 9

164.在C语言中,引用数组元素时,其数组下标的数据类型允许是B A 整型常量

B 整型表达式或整型常量

C 实型常量

D 任何类型 的表达式

165.以下程序给数组所有的元素输入数据,空处应填入(C)

main()

{ int a[10],i=0;

while(i<10)scanf(“%d”,____________);} A &a[i] B a[i++]

int a=10,b=50,c=30; if(a>b)a=b; b=c; c=a;

printf(“a=%d b=%d c=%dn”,a,b,c);

A a=10 b=50 c=10

B a=10 b=30 c=10 C a=50 b=30 c=10

D a=50 b=30 c=50

166.有字符数组a[80],b[80],则正确的输出语句是D A puts(a,b);

B printf(“%s,%s”,a[],b[]);C putchar(a,b);

D puts(a);puts(b);

167.以下能正确定义字符串的语句是 D

A char str[]={'64'};

B char str=“x43”;

C char str=“;

D char str[]=”“;

168.以下数组定义中正确的是 D A int x[][3]={0};

B int x[2][3]={{1,2},{3,4},{5,6}};

C nt x[][3]={{1,2,3},{4,5,6}};

D int x[2][3]={1,2,3,4,5,6};

169.要说明一个有10个int元素的数组,应当选择语句A A int a[10] B int a[2,5] C int a[ ] D int *a[10] 170.已知: int a[10];则对a数组元素引用正确的是D A a[10] B a[3.5] C a(5)D a[10-10]

171.已有定义:char a[]=”xyz“,b[]={''x'',''y'',''z''};,以下叙述中正确的是 C A 数组a和b的长度相同

B a数组长度小于b数组长度

C a数组长度大于b数组长度

D 上述说法都不对

172.以下能正确定义一维数组的选项是B A int a[5]={0,1,2,3,4,5};B char a[]={0,1,2,3,4,5};C char a={''A'',''B'',''C''};D int a[5]=”0123“;

173.假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是D

A 3

B 6

C 10

D 20

174.执行下面的程序段后,变量k中的值为(A)。

int k=3, s[2];s[0]=k;k=s[1]*10;

A 不定值

B 33

C 30

D 10

175.设有数组定义: char array [ ]=”China“;数组 array所占的空间为C A 4个字节

B 5个字节

C 6个字节

D 7个字节

176.下列描述中不正确的是C A 字符型数组中可以存放字符串

B 可以对字符型数组进行整体输入、输出 C 可以对整型数组进行整体输入、输出

D 不能在赋值语句中通过赋值运算符”=“对字符型数组进行整体赋值

177.给出以下定义: char x[ ]=”abcdefg“;

char y[ ]={''a'',''b'',''c'',''d'',''e'',''f'',''g''};则正确的叙述为C A 数组X和数组Y等价

B 数组x和数组Y的长度相同

C 数组X的长度大于数组Y的长度

D 数组X的长度小于数组Y的长度

178.定义如下变量和数组: int i;

int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是

for(i=0;i<3;i++)printf(”%d“,x[i][2-i]);C

A 1 5 9

B 1 4 7

C 3 5 7

D 3 6 9

179.以下一维数组a 的正确定义是D A int a(10);

B float n=10,a[n];C int n;scanf(”%d“,&n);float a[n];D #define size 10;long a[size];180.合法的数组定义是D A int a[]=”string“;

B int a[5]={0,1,2,3,4,5};C vhst s=”string“;

D char a[]={0,1,2,3,4,5};

181.下列选项中,能正确定义数组的语句是D A int num[0..2008];B int num[];

C int N=2008;int num[N];D

#define N 2008 int num[N];

182.在C语言中,能实现字符串连接的函数是A A strcat()B strcmp()C strcpy()

D strlen()

183.在C语言中,定义数组int a[7]={3,4,5,6,7,8,9},则a[5]的值为D A 9 B 6 C 7 D 8

184.在C语言中,定义int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},i=5,则 下列选项中不能正确引用数组元素的是A A a[2*i-12]

B a[2*i-2] C a[12-i]

D a[2*i]

185.在C语言中,定义 char a[]={'a','b','l','l','o'},已知字符'b'的 ASCII码为98,则 printf(”%dn“,a[0]);的值为A A 97

B a

C 98

D b 186.在C语言中,有以下定义:char

b[10]={''h'',''n'',''s'',''p'',''k'',''s''};,则语句

printf(”%cn“,b[1]);的结果为B A h

B n

C s

D p

187.在C语言中,定义数组int a [12]={1,2,3,4,5,6,7,8,9,10,11,12},则a[3]的值B A 3

B 4

C 5

D 6

188.在C语言中,有以下程序main(){int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i<5){if(p[i]%2)j+=p[i];i++;}printf(”%dn“,j);}程序运行后的输出结果是A A 39

B 45

C 56

D 60

189.在C语言中,若有定义:int y=3,x[7]={1,2,3,4,5,6,7},则表达式y+=x[2]的值为A A 6

B 5

C 8

D 9

190.在C语言中,若有定义:int y=5,x[7]={1,2,3,4,5,6,7},则表达式y+=x[6]的值为D A 9

B 10

C 11

D 12

191.字符型常量在内存中存放的是A

A ASCⅡ 代码

B BCD 代码

C 内部码

D 十进制码

192.下列运算符中,结合方向为自左向右的是B A ? :

B ,C +=

D ++ 193.在C语言中运算对象必须是整型的运算符是A A %

B!

C /

D * 194.下列关于C语言的叙述错误的是A A 大写字母和小写字母的意义相同

B 不同类型的变量可以在一个表达式中 C 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型

D 同一个运算符号在不同的场合可以有不同的含义

195.在C语言中,错误的int类型的常数是A

A 32768

B 0

C 037

D 0xAF 196.C语句x*=y+2;还可以写成C

A x=x*y+2;

B x=2+y*x;C x=x*(y+2);

D x=y+2*x;

197.如果有整型变量x,浮点型变量y,双精度型变量z,则表达式y*z+x+y执 行后的类型为 A

A 双精度

B 浮点型

C 整型

D 逻辑型

198.设C语言中,一个int 型数据在内存中占2个字节,则unsigned int 型 数据的取值范围是C

A 0—255

B 0—32767

C 0—65535

D 0--2147483647 199.以下说法不正确的D

A 在C程序中,逗号运算符的优先级最低;

B 在C程序中,aph和aPh是两个不同的变量;

C 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变;

D 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数;

200.设有float x;则x是__B__变量。

A 整型

B 实型

C 字符型

D 长型

201.若变量已正确定义并赋值,下面符合C语言语法的表达式是B A a:=b+1

B a=b=c+2

C int 18.5%3

D a=a+7=c+b

202.若有float x,y;则以下不合法的语句是B A ++x;

B y=(x%2)/10;C x*=y+8;D x=y=10;

203.不合法的十六进制数是A A oxff B 0xabc C 0x11 D 0xbeef

204.现有 #define N 3;的宏定义,执行语句 i=N*3 后,i的值是C A 3

B 6

C 9

D 其它三个答案都不对

205.turbo c中int类型变量所占字节数是B A 1

B 2

C 3

D 4

206.正确的合法的定义变量的语句是B A int ab_=086;

B int _ab=0xE8 C char a-b=‘1’;D float a3.b; 207.以下选项中不属于C语言的类型的是D A signed short int B unsigned long int C unsigned int D long short

208.以下叙述中错误的是 D

A C程序中的#include和#define行均不是C语句

B 除逗号运算符外,赋值运算符的优先级最低

C C程序中,j++;是赋值语句

D C程序中,+、-、*、/、%号是算术运算符,可用于整型和实型数的运算

209.正确的字符串常量是A

A “ABCD”

B {ABCD}

C ‘ABCD’

D ABCD 210.以下选项中属于C语言的数据类型是C

A 复数型

B 逻辑型

C 双精度型

D 集合型

211.以下运算符中优先级最低的运算符是D A &&

B &

C ||

D = 212.以下叙述中错误的是A

A 用户所定义的标识符允许使用关键字

B 用户所定义的标识符应尽量做到“见名知意”

C 用户所定义的标识符必须以字母或下划线开头

D 用户定义的标识符中,大、小写字母代表不同标识

213.设有以下定义 int a=0;double b=1.25;char c=’A’;#define d 2 则下面语句中错误的是D

A a++;

B b++

C c++;

D d++;214.下列关于单目运算符++、--的叙述中正确的是D A 它们的运算对象可以是任何变量和常量

B 它们的运算对象可以是char型变量和int型变量,但不能是float型变量

C 它们的运算对象可以是int型变量,但不能是double型变量和float型变量

D 它们的运算对象可以是char型变量、int型变量和float型变量

215.以下选项中合法的实型常数是C A 5E2.0

B E-3

C.2E0

D 1.3E

216.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘101’为A

A 字符A

B 字符a

C 字符e

D 非法的常量

217.以下选项中合法的字符常量是B A “B”

B ‘10’

C 68

D D

218.若变量a、i已正确定义,且i已正确赋值,合法的语句是B A a==1

B ++i;

C a=a++=5;

D a=int(i);

219.以下选项中合法的字符常量是B A “B”

B ‘10’ C 68

D D

220.C语言提供的合法的数据类型关键字是B A Double

B short C integer D Char 221.在C语言中,合法的长整型常数是B

A 0

B 04962710

C 0.054838743

D 2.1869e10 222.表达式(int)2.5的值是A

A 2

B 3

C 0

D 2.5

223.以下选项中不能作为C语言合法常量的是A

A 'cd'

B 0.1e+6

C ”a“

D '11'

224.在TC中,已知: int x=10, y=3 , z;则下列语句的输出结果是 C printf(”%dn", z=(x%y,x/y));

A 1

B 0

C 3

D 4

225.若变量a、i已正确定义,且i已正确赋值,合法的语句是(B)。

A a==1

B ++i;C a=a++=5;D a=int(i);

226.设有说明语句:char a=’72’;则变量a为A A 包含1个字符

B 包含2个字符

C 包含3个字符

D 说明不合法

下载二级C语言100道经典选择题及答案word格式文档
下载二级C语言100道经典选择题及答案.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    C语言选择题大全

    C语言选择题精选 *1、A 一个C程序的执行是从_____。 A)本程序的main函数开始,到main函数结束√ B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C)本程序......

    C语言选择题

    ### ~~~1 下列叙述中正确的是( )。 程序设计就是编制程序 程序的测试必须由程序员自己去完成程序经调试改错后还应进行再测试程序经调试改错后不必进行再测试~C ~~~1 以下......

    C语言选择题

    ## ~~~1 下列叙述中正确的是( )。 程序设计就是编制程序 程序的测试必须由程序员自己去完成 程序经调试改错后还应进行再测试 程序经调试改错后不必进行再测试 ~C ~~~1 以下......

    C语言选择题[精选合集]

    1.结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句. 2.对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好. ⒊数据库管理系......

    幼儿教育题库c三、选择题(单选)及答案

    三、选择题 1、幼儿园教育是通过( )来实现的,它不仅为幼儿系统地提供新的学习经验,而且是帮助幼儿把学习经验系统化,引导其心理水平提升的重要手段。 A.课堂教学 B.户外活动 C.教......

    二级C用户手册

    全国计算机等级考试超级模拟软件 二级C用户手册 1.1 引言 南京易考无忧科技有限公司研制的全国计算机等级考试超级模拟软件提供了开放式的考试环境,具有自动计时、自动阅卷评......

    2016年计算机二级c语言题库及答案

    2016年计算机二级c语言题库及答案 一、选择题(每小题1分,共40小题,共40分) 1.设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,r......

    选择题-答案

    第一章 客户关系管理导论 一、单选题 1、属于快速反映供应链阶段的特点是(D) A 向客户推销 B 低经济批量C 缩短工序D 客户定制生产 2、客户关系管理的目的是(B) A 企业利润最......