为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

## c语言 选择题

2018-09-10 43页 doc 171KB 80阅读

用户头像

is_822433

暂无简介

举报
## c语言 选择题C语言题库 一、选择题 1.下列叙述中错误的是( ) A.算法正确的程序最终一定会结束。 B.算法正确的程序可以有零个输出。 C.算法正确的程序可以有零个输入。 D.算法正确的程序对于相同的输入一定有相同的结果。 ~B 2.下列叙述中错误的是( ) A.C程序必须由一个或一个以上的函数组成。 B.函数调用可以作为一个独立的语句存在。 C.若函数有返回值,必须通过return语句返回。 D.函数形参的值也可以传回给对应的实参。 ~D 3.C语言源程序名的后缀是( ) A.exe B.c C.o...
##  c语言  选择题
C语言库 一、选择题 1.下列叙述中错误的是( ) A.算法正确的程序最终一定会结束。 B.算法正确的程序可以有零个输出。 C.算法正确的程序可以有零个输入。 D.算法正确的程序对于相同的输入一定有相同的结果。 ~B 2.下列叙述中错误的是( ) A.C程序必须由一个或一个以上的组成。 B.函数调用可以作为一个独立的语句存在。 C.若函数有返回值,必须通过return语句返回。 D.函数形参的值也可以传回给对应的实参。 ~D 3.C语言源程序名的后缀是( ) A.exe B.c C.obj D.cp ~B 4.下列叙述中错误的是( ) A.用户定义的标示符允许使用关键字。 B.用户定义的标示符应做到“见名知意”。 C.用户定义的标示符必须以字母或下划线开头。 D.用户定义的标示符中大、小写字母代表不同标示。 ~A 5.下列关于函数的叙述正确的是( ) A.每个函数都可以被其他的函数调用(包含main函数)。 B.每个函数都可以被单独编译。 C.每个函数都可以单独运行。 D.在一个函数内部可以定义另一个函数。 ~B 6.下列不合法的用户标示符是( ) A.j2_key B._int C.4d D._8_ ~C 7.下列定义变量的语句中错误的是( ) A.int _int; B.double int_; C.char for; D.float us$; ~D 8.按照C语言规定的用户标示符命名规则,不能出现在标示符中的是( ) A.大写字母 B.连字符 C.数字字符 D.下划线 ~B 9.对于一个正常运行的C程序,下列叙述正确的是( ) A.程序的执行总是起止于main函数。 B.程序的执行总是从第一个函数开始,结束于main函数 C.程序的执行总是从main函数开始,在最后一个函数结束 D.程序的执行总是从第一个函数开始,在最后一个函数结束 ~A 10.下列叙述正确的是( ) A.C语言程序从源程序中第一个函数开始执行 B.可以在程序中由用户指定一个函数作为主函数,程序将从此开始执行 C.C语言规定必须用main作为主函数名,程序从此开始执行,在次结束 D.main可作为用户标示符,可以命名任意一个函数作为主函数 ~C 11.下列叙述正确的是( ) A.C程序中的注释只能出现在程序的开始位置 B.C程序写格式严格,一行只能写一个语句 C.C程序书写格式自由,一行可以写多条语句 D.用C语言编写的程序只能放在一个程序文件中 ~C 12.下列不合法的数值常量是( ) A.011 B.1e1 C.8.0e0.5 D.0xabc ~C 13.可在C程序中用作用户标识符的一组是( ) A.and _2007 B.date y-m-d C.hi dr.tom D.case big1 ~A 14.下列关于long、int和short类型数据占用内存大小的叙述正确的是( ) A.均占4个字节 B.根据数据的大小来决定所占内存的字节数 C.由用户自己定义 D.由C语言编译系统决定 ~D 15.设变量已正确定义并赋值,以下正确的表达式是( ) A.x=y*5=x+z B.int(15.8%3) C.x=y+z+3,++y D.x=25%5.0 ~C 16.设有定义:int k=1;float f=7;则下列选项中错误的表达式是( ) A.k=k>=k B.-k++ C.k%int(f) D.k>=f>=m ~C 17.表达式3.6-5/2+1.2+5%2的值是( ) A.4.3 B.4.8 C.3.3 D.3.8 ~D 18.下列叙述中错误的是( ) A.C程序中的#include和#define行均不是C语句 B.除逗号运算符外,赋值运算符的优先级最低 C.C程序中,j++;是赋值语句 D.C程序中,+、-、*、%是算术运算符,可用于整型数和实型数的运算 ~D 19.下列选项中,当x为大于1的奇数时,值为0的表达式是( ) A.x%2==1 B.x/2 C.x%2!=0 D.x%2==0 ~D 20.下列叙述中错误的是( ) A.C语句必须以分号结束 B.复合语句在语法上被看作一条语句 C.空语句出现在任何位置都不会影响程序运行 D.赋值表达式加上分号就构成赋值语句 ~C 21.下列正确定义且赋初值的语句是( ) A.int n1=n2=10; B.char c=32; C.float f=f+1.1; D.double x=12.3E2.5 ~B 22.若变量已正确定义并赋值,下列合法的语句是( ) A.x=y==5 B.x=n%2.5 C.x+n=i D.x=5=1+4 ~A 23.以下定义正确的是( ) A.int a=b=0; B.char A=65+1,b='b'; C.float a=1,"b=&a,"c=&b; D.double a=0.0;b=1.1; ~B 24.有下列程序: *main() *{char a1='M',a2='m'; *printf("%c\n",(a1,a2)); *} 下列叙述正确的是( ) A.程序输出M B.程序输出m C.格式说明符不足,编译出错 D.程序运行时产生出错信息 ~B 25.有下列程序: *main() *{int x,y,z; *x=y=1; *z=x++,y++,++y; *printf("%d,%d,%d\n",x,y,z); *} *程序运行的结果是( ) A.2,3,3 B.2,3,2 C.2,3,1 D.2,2,1 ~C 26.设有定义:int k=0;下列选项的4个表达式中与其他3个表达式的值不同的是( ) A.k++ B.k=k+1 C.++k 8.k+1 ~A 27.在C语言中,以下说法不正确的是( ) A.在C程序中,整数和实数都能被准确无误的表示出来 B.在C程序中,任何一个变量名都代表存储器的一个位置 C.静态变量的生存周期与整个程序的运行期相同 D.C语言中,任何变量都必须先声明才能进行引用 ~A 28.若有以下定义和语句: *int a=010,b=0x10,c=10; *printf("%d,%d,%d\n",a,b,c); *则输出结果是( ) A.8,10,10 B.10,10,10 C.8,8,10 D.8,16,10 ~D 29.设C语言中,float类型数据占4个字节,则double类型数据占( )个字节 A.1 B.2 C.8 D.4 ~C 30.以下正确的实型常量( ) A.E3.4 B.-12345 C.2.2e0.8 D.4 ~B 31.设int类型的数据长度为2个字节,则unsigned int类型数据的取值范围是( ) A.0~255 B.0~65535 C.-32768~32767 D.-256~255 ~B 32.设a和b均为int型变量,且a=6,b=11,则能使值为3的表达式是( ) A.b%(a%4) B.b%(a-a%5) C.b%a-a%5 D.(b%a)-(a%4) ~D 33.已定义变量a为整型,则不能正确表示99&&a<14 D.!(a<=9)&&!(a>=14) ~A 34.以下程序运行的结果是( ) *#include *main() *{int a=3,b=4,c=8,d=4,m=1,n=3; *printf("%d\n",(m=a>b)&&(n=c>d)) *} A.0 B.1 C.2 D.3 ~A 35.能正确表示“当x的取值范围在[1,10]和[100,110]范围内为真,否则为假”的表达式是( ) A.(x>=1)&&(x<=10)&&(x>=100)&&(x<=110) B.(x>=1)||(x<=10)||(x>=100)||(x<=110) C.(x>=1)&&(x<=10)||(x>=100)&&(x<=110) D.(x>=1)||(x<=10)&&(x>=100)||(x<=110) ~C 36.若有定义:int a=4,b=5;float x=3.4,y=2.1;则下面表达式的值为( ) *(float)(a+b)/2+(int)x%(int)y A.5.5 B.55 C.5.500000 D.55.00000 ~C 37.若a为int型变量,则执行以下语句后,a的值为( ) *a=5;a+=a-=a*a; A.25 B.-40 C.40 D.-14 ~B 38.若已定义x和y为整型变量,且x=7,则表达式y=2.3+x/2的值是( ) A.6 B.5 C.5.0 D.6.0 ~B 39.有以下程序: *main() *{int y=1,x=2,z=3; *printf("%d,%d\n",(++x,y++),z+2); *} *执行后的输出结果是( ) A.3,5 B.2,5 C.3,3 D.1,5 ~D 40.以下程序的输出结果是( ) *main() *{int a=1,b=2; *printf("%d,%d\n",--a,++b); *} A.1,2 B.1,3 C.0,2 D.0,3 ~D 41.C语言程序的执行是( ) A.从程序的主函数开始,到程序的主函数结束 B.从程序的主函数开始,到程序的最后一个函数结束 C.从程序的第一个函数开始,到程序的最后一个函数结束 D.从程序的第一个函数开始,到程序的主函数结束 ~A 42.下面说法正确的是( ) A.一个C程序可以有多个函数 B.一个C语言的函数中只允许有一对花括号 C.C语言一个语句可以写在一行内,也可以写在多行内 D.在对C程序进行编译时,可以发现注释行中的拼写错误 ~C 43.以下说法正确的是( ) A.C程序是以函数为基本单位的,整个程序由函数组成 B.C语言程序的一条语句可以写在不同的行上 C.C程序的注释行对程序运行不起作用,所以注释应该尽可能少写 D.C程序的每个语句都以分号结束 ~C 44.以下标示符不是关键字的是( ) A.break B.char C.Switch D.return ~C 45.若要求定义具有10个int型元素的一维数组a,则下列定义语句中错误的是( ) A.#define N 10 *int a[N] B.#define n 5 *int a[2*n] C.int a[5+5] D.int n=10,a[n] ~D 46.下设有如下程序段 *char s[20]="Beijing",*p; *p=s; *则执行p=s;语句后,以下叙述正确的是( ) A.可以用*p表示s[0] B.s数组中元素的个数和p所指字符串长度相等 C.s和p都是指针变量 D.数组s中的内容和指针变量p中的内容相同 ~A 47.下列数组定义中错误的是( ) A.int x[][3]={0}; B.int x[2][3]={{1,2},{3,4},{5,6}}; C.int x[][3]={{1,2,3},{4,5,6}}; D.int x[2][3]={1,2,3,4,5,6}; ~B 48.有以下程序: *main() *{int i,t[][3]={9,8,7,6,5,4,3,2,1}; *for(i=0;i<3;i++) printf("%d",t[2-i][i]); *} *程序执行后的输出结果是( ) A.7 5 3 B.3 5 7 C.3 6 9 D.7 5 1 ~B 49.若有定义语句:int a[3][6];,按内存中的存放顺序,a数组的第10元素是( ) A.a[0][4] B.a[1][3] C.a[0][3] D.a[1][4] ~B 50.以下错误的定义语句是( ) A.int x[][3]={{0},{1},{1,2,3}}; B.int x[4][3]={{1,2,3},{1,2,3},{1,2,3}}; C.int x[4][]={{1,2,3},{1,2,3},{1,2,3}}; D.int x[][3]={1,2,3,4}; ~C 51.以下不正确的定义语句是( ) A.double x[5]={1.0,2.0,3.0,4.0,5.0}; B.int y[5]={0,1,2,3,4,5}}; C.char c[]={'1','2','3','4','5'}; D.char c2[]={'a','b','c'}; ~B 52.若有以下定义,则正确引用数组元素的是( ) *int a[5],*p=a; A. *&a[5] B. *a+2 C. *(p+5) D. *(a+2) ~D 53.若有说明:int a[][3]={0,0};则不正确的叙述是( ) A.数组a的每个元素的初值都是0 B.数组a的第一维大小为1 C.数组a的行数为1 D.只有元素a[0][0]和a[0][1]初值为0,其余元素得不到初值0 ~D 54.下列二维数组初始化语句中,不正确的是( ) A.int b[][2]={1,2,3,4,5,6,7}; B.int b[3][5]={0,0,0}; C.int b[][4]={{1,2},{3,4,5},{6}}; D,int b[3][2]={(1,2),(3,4),(5,6)}; ~D 55.有以下程序: *main() *{int aa[5][5]={{1,2,3,4},{5,6,1,8},{5,9,10,2},{1,2,5,6}}; *int s=0,i; *for(i=0;i<4;i++) *s+=aa[i][2]; printf("%d",s); *} *程序运行后的输出结果是( ) A.26 B.19 C.10 D.20 ~B 56.设已有定义:float x;,则下列对指针变量p进行定义且赋初值的语句中正确的是( ) A.float *p=1024; B.int *p=(float)x; C.float p=&x; D.float *p=&x; ~D 57.设有定义语句int (*f)(int);,则以下叙述正确的是( ) A.f是基类型为int的指针变量 B.f是指向函数的指针变量,该函数具有一个int类型的形参 C.f是指向int类型一维数组的指针变量 D.f是函数名,该函数的返回值是其类型为int类型的地址 ~B 58.设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是( ) A.*p=*q B.p=q C.*p=&n1; D.p=*q ~A 59.在16位编译系统上,若有定义int a[]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是( ) A.p向高地址移了一个字节 B.p向高地址移了一个存储单元 C.p向高地址移了两个字节 D.p与n+1等价 ~A 60.若有定义语句:int k[2][3],*pk[3];,则下列语句中正确的是( ) A.pk=k; B.pk[0]=&k[1][2]; C.pk=k[0]; D.pk[1]=k; ~B 61.若有定义:char(*p)[6];则标识符p( ) A.是一个指向字符型变量的指针 B.是一个指针数组名 C.是一个指针变量,它指向一个含有6个字符型元素的一维数组 D.定义不合法 ~C 62.下面程序段的运行结果是( ) #include void main() { char str[]="abc",*p=str; printf("%d\n",*(p+3)); } A.67 B.0 C.字符'C'的地址 D.字符'C' ~B 63.若有以下定义,则对a数组元素的正确引用是( ) int a[5],*p=a; A.*&a[5] B.*a+1 C.*(p+5) D.*(a+2) ~D 64.数字字符0的ASC||值为48,运行下列程序的输出结果是( ) main() { char a='1',b='2'; printf("%c,",b++); printf("%d\n",b-a); } A.3,2 B.50,2 C.2,2 D.2,50 ~C 65.下列不合法的字符常量是( )。 A.'\018' B.'\"' C.'\\' D.'\xcc' ~A 66.下列能正确定义字符串的语句是( ) A.char str[]={'\064'}; B.char str="kx43"; C.char str=''; D.char str[]="\0"; ~D 67.下列合法的字符型常量是( ) A.'\x13' B.'\081' C.'65' D."\n" ~A 68.已知大写字母A的ASC||码是65,小写字母a的ASC||码是97。下列不能将变量c中的大字字母转换为对应小写字母的语句是( ) A.c=(c-'A')%26+'a' B.c=c+32 C.c=c-'A'+'a' D.c=('A'+C)%26-'a' ~D 69.已知字符'A'的ASC||码值是65,字符变量c1的值是'A',c2的值是'D'。执行语句printf("%d,%d",c1,c2-2);后,输出结果是( ) A.A,B B.A,68 C.65,66 D.65,68 ~C 70.下列正确的字符串常量是( ) A."\\\" B.'abc' C.Olympic Games D."" ~D 71.要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,下列正确的程序段是( ) A.while((ch=getchar())!='N') printf("%c",ch); B.while(ch=getchar()!='N') printf("%c",ch); C.while(ch=getchar()=='N') printf("%c",ch); D.while((ch=getchar())=='N') printf("%c",ch); ~A 72.有以下程序段 char ch;int k; ch='a';k=12; printf("%c,%d,",ch,ch,k); printf("k=%d\n",k); 已知字符a的ASC||十进制代码为97,则执行上述程序段后输出结果是( ) A.因变量类型与格式描述符的类型不匹配输出无定值 B.输出项与格式描述符个数不符,输出为零值或不定值 C.a,97,12k=12 D.a,97,k=12 ~D 73.有定义语句:int b;char c[10];,则正确的输入语句是( ) A.scanf("%d%s",&b,&c); B.scanf("%d%s",&b,c); C.scanf("%d%s",b,c); D.scanf("%d%s",b,&c); ~B 74.设有定义:int a; float b;,执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876543.0,a和b的值分别是( ) A.876和543.000000 B.87和6.000000 C.87和543.000000 D.76和543.000000 ~B 75.设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。下面的输入形式中正确的是( )(注:□代表空格字符)。 A.10□X□20□Y B.10□X20□Y C.10□X20Y D.10X20□Y ~A 76.有下列程序段: int j; float y;char name[50]; scanf("%2d%f%s",&j,&y,name); 当执行上述程序段,从键盘上输入55566 7777abc后,y的值为( ) A.55566.0 B.566.0 C.7777.0 D.566777.0 ~B 77.以下选项中不是字符常量的是( ) A.'\v' B.'\x2a' C.'a' D."\0" ~D 78.以下选项中非法的字符常量是( ) A.'\\' B.'\020" C.'\xAA' D.'0' ~B 79.在执行完下面的C语句段之后,则B的值是( ) char a='A'; int b; B=((34&&56)&&(a<'b')); A.0 B.1 C.TRUE D.FALSE ~B 80.若变量已正确定义,以下正确的程序段是( ) A.while(ch=getchar()=='\N') putchar(ch); B.while((ch=getchar())=='\n')putchar(ch); C.while((ch=getchar())!='\N')putchar(ch); D.while((ch=getchar())!='\n')putchar(ch); ~D 81.若变量已正确定义,下面程序段的输出结果是( ) #include main() {float x=1.236547; printf("%f\n",(int)(x*1000+0.5)/(float)1000); } A.1.237000 B.输出格式说明与输出项不匹配,输出无定值 C.1.236000 D.1.24 ~A 82.设已定义x为double类型变量: #include main() { float x=323.82631; printf("%.2e\n",x); } 则以上语句( ) A.输出格式描述符的域宽不够,不能输出 B.输出为32.38e+01 C.输出为3.24e+002 D.输出为3.24e2 ~C 83.若有以下定义和语句: int u=011,v=0x11,w=11; printf("%o,%x,%d\n",u,v,w); 则输出结果是( ) A.9,17,11 B.9,11,11 C.11,11,11 D.11,17,11 ~C 84.语句"printf("a\bhow\'are\'y\\\bou\n");"的输出结果是( ) A.a\bhow\'are\'y\\bou B.a\bhow\'are\'y\bou C.how'are'you D.ahow'are'y\bou ~C 85.若变量已正确定义,要求通过scanf("%c%d%c%d",&c1,&a,&c2,&b)语句给变量a和b赋数值32和45,给变量c1和c2赋字符A和B;以下选项中数据从第1列开始输入,正确的输入形式是( ) A.A32<回车>B45<回车> B.A45<回车>B32<回车> C.A32B45<回车> D.A 32 B 45<回车> ~D 86.若有"double a;",则正确的输入语句是( ) A.scanf("%lf",a); B.scanf("%f",&a); C.scanf("%lf",&a); D.scanf("%le",&a); ~D 87.已知i、j、k为int型变量,若要从键盘输入2,3,4<回车>,使i、j、k的值分别为2、3、4,以下正确的输入语句是( ) A.scanf("%3d,%3d,%3d",&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); ~B 88.下列运算符中优先级最高的运算符是( ) A.! B.% C.-= D.&& ~A 89.下列运算符中优先级最低的运算符是( ) A.|| B.!= C.<= D.+ ~A 90.为表示关系x≥y≥z,应使用的C语言表达式是( ) A.(x>=y)&&(y>=z) B.(x>=y)AND(y>=z) C.(x>=y>=z) D.(x>=y)&(y>=z) ~A 91.设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是( ) A.a&&b B.a<=b C.a||b+c&&b-c D.!(a main() { char p[]={'a','b','c'},q[10]={'a','b','c'}; printf("%d%d\n",strlen(p),strlen(q)); } 下列叙述中正确的是( ) A.在给p和q数组赋初值时,系统会自动添加字符串结束符,故输出的长度都为3 B.由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3 C.由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3 D.由于p和q数组中都没有字符串结束符,故长度都不能确定 ~A 133.若要求从键盘读入含有空格字符的字符串,应使用函数( ) A.getc() B.gets() C.getchar() D.scanf() ~B 134.当用户要求输入的字符串中含有空格时,应使用的输入函数是( ) A.scanf() B.getchar() C.gets() D.getc() ~C 135.当有定义语句:char s[10];,若要从终端给s输入5个字符,错误的输入语句是( ) gets(&s[0]); scanf("%s",s+1); gets(s); scanf("%s",s[1]); ~D 当以下叙述中错误的是( ) A.gets函数用于从终端读入字符串 B.getchar函数用于从磁盘文件读入字符 C.fputs函数用于把字符串输出到文件 D.fwrite函数用于以二进制形式输出数据到文件 ~B 136.下列关于字符串的叙述中正确的是( ) A.C语言中有字符串类型的常量和变量 B.两个字符串中的字符个数相同时才能进行字符串大小的比较 C.可以用关系运算符对字符串的大小进行比较 D.空串一定比空格打头的字符串小 ~D 137.下面能正确进行字符串赋值的是( ) A.char s[5]={"ABCDE"}; B.char s[5]={'A','B','C','D','E'}; C.char*s; s="ABCDE"; D.char*s;printf("%s",s); ~C 138.字符串"\\\"ABCDEF\"\\"的长度是( ) A.15 B.10 C.7 D.8 ~B 139.下面各语句行中,能正确进行赋值字符串操作的是( ) A.char s[5]={'a','b','c','d','e'}; B.char *s;gets(s); C.char *s;*s="ABCDEF"; D.char s[5];scanf("%s",&s); ~B 140.设已执行预编译命令#include,以下程序段的输出结果是( ) char s[]="abcdefg"; printf("%d\n",strlen(s)); A.7 B.8 C.9 D.10 ~A 141.若已包括头文件且已有定义char s1[18],s2={"ABCDE"}和int i,现要将字符串"ABCDE"赋给s1,下述语句错误的是( ) A.strcpy(s1,s2); B.strcpy(s1,"ABCDE"); C.s1="ABCDE"; D.for(i=0;i<6;i++) s1[i]=s2[i]; ~C 142.在下列给出的表达式中,与while(E)中的(E)不等价的表达式是( ) A.(!E==0) B.(E>0||E<0) C.(E==0) D.(E!=0) ~B 143.已知字母A的ASCII值为65,若变量kk为char型,以下不能正确判断出kk的值为大写字母的表达式是( ) A.kk>='A'&&kk<='Z' B.!(kk>='A'||kk<='Z') C.(kk+32)>='a'&&(kk+32)<='z' D.isalpha(kk)&&(kk<91) ~B 144.设有定义:int a=2,b=3,c=4;,则下列选项中值为0的表达式是( ) A.(!a==1)&&(!b==0) B.(a=2&&c<=6)||(c!=3)||(c!=5) C.(c>=2&&c<=6)&&!(c%2) D.(c>=2&&c<=6)&&(c%2!=1) ~C 147.在嵌套使用if语句时,C语言规定else总是( ) A.和之前与其具有相同缩进位置的if配对 B.和之前与其最近的if配对 C.和之前与其最近的且不带else的if配对 D.和之前的第一个if配对 ~C 148.设变量x和y均已正确定义并赋值。下列if语句中,在编译时将产生错误信息的是( ) A.if(x++) ; B.if(x>y&&y!=0) C.if (x>0) x-- else y++ D.if (y<0){;} else x++; ~C 149.若变量已正确定义,有以下程序段: *int a=3,b=5,c=7; *if(a>b) a=b;c=a; *if(c!=a) c=b; *printf("%d,%d,%d\n",a,b,c); *其输出结果是( ) A.程序段有语法错误 B.3,5,3 C.3,5,5 D.3,5,7 ~B 150.下列叙述中正确的是( ) A.break只能用于 switch语句 B.switch语句中必须使用default C.break必须与switch语句中的case配对使用 D.在switch中,不一定使用break ~D 151.若变量已正确定义,以下表达式错误的是( ) A.a/b+c B.a%(5.0) C.a=1/3*(x=y=10,x*2) D.a=b=c ~B 152.下列程序运行后的输出结果是( ) *main() *{int a=4,b=3,c=2,d=1; *printf("%d",a=8) break; *if(a%2==1) *{a+=5;continue;} *a=3; *} *printf("%d\n",b);} A.3 B.4 C.5 D.6 ~B 161.下列叙述中正确的是( ) A.break语句只能用于switch语句中 B.continue的作用是使程序的执行流程跳出包含它的所有循环 C.break语句只能用于循环体内和switch语句中 D.在循环体内使用break语句和continue语句的作用相同 ~C 162.设有程序段: *int k=12; *while (k=1)k=k-1; *则下面描述中正确的是( ) A.while循环执行10次 B.循环是无限循环 C.循环体语句一次也不执行 D.循环体语句执行一次 ~C 163.下列程序段的运行结果是( ) *x=y=0; *while(x<25) *{y++; *x+=++y; *} *printf("%d,%d",y,x); A.30,9 B.9,30 C.3,1 D.10,30 ~D 164.while和 do while循环的主要区别是( ) A.do while循环的循环体不能是复合语句 B.do while循环允许从循环体外转到循环体内 C.while循环的循环体至少被执行一次 D.do while循环的循环体至少被执行一次 ~D 165.下面的for语句的循环次数是( ) *for(x=1,y=0;(y!=19&&(x<6);x++); A.无限循环 B.循环次数不定 C.最多执行6次 D.最多执行5次 ~D 166.下面结论中错误的是( ) A.可以用do while语句实现的循环一定可以用while语句实现 B.可以用for语句实现的循环一定可以用while语句实现 C.可以用while语句实现的循环一定可以用for语句实现 D.do while语句和while语句的区别仅是while出现的位置不同 ~D 167.若i,j已定义成int型,则以下程序段中内循环体的总执行次数是( ) *for(i=6;i>0;i--) *for(j=0;j<4;j++){...} A.20 B.24 C.25 D.30 ~B 168.以下循环体的执行次数是( ) *main() *{int i,j; *for(i=0,j=1;i *main() *{ int a=3,b=4,c=8,d=4,m=1,n=3; * printf("%d\n",(m=a>b)&&(n=c>d)); *} A.0 B.1 C.2 D.3 ~A 173.有定义语句:int b;char c[10];,则正确的输入语句是( ) A.scanf("%d%s",&b,&c); B.scanf("%d%s",&b,c); C.scanf("%d%s",b,c); D.scanf("%d%s",b,&c); ~B 174.有下列程序: *main() *{ int m,n,p; * scanf("m=%dn=%dp=%d",&m,&n,&p); * printf("%d%d%d",m,n,p); *} *若想从键盘上输入数据,使变量m的值为123,n的值为456,p的值为789,则正确的输入是( ) A.m=123 n=456 p=789 B.m=123 n=456 p=789 C.m=123,n=456,p=789 D.123 456 789 ~A 175.要求当A的值为奇数时,表达式的值为“假”,A的值为偶数时,表达式的值为“真”。则以下能满足要求的是( ) A.A%2==1 B.!(A%2==0) C.!(A%2) D.A%2 ~C 176.当把四个表达式用作if语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是( ) A.k%2 B.k%2==1 C.(k%2)!=0 D.!k%2==1 ~A 177.下列不能正确计算代数式(1/3)sin2(1/2)值的C语言表达式是( ) A.1/3*sin(1/2)*sin(1/2) B.sin(0.5)*sin(0.5)/3 C.pow(sin(0.5),2)/3 D.1/3.0*pow(sin(1.0/2),2) ~A 178.在printf的格式字符中,e格式字符的作用是( ) A.以十六进制无符号形式输出整数 B.以带符号的十进制形式输出整数 C.以指数形式输出实数 D.以字符形式输出,且只输出一个字符 ~C 179.若要从键盘读入含有空格字符的字符串,应使用函数( ) A.getc() B.gets() C.getchar() D.scanf() ~B 180.当a=4,b=5,c=7,d=6时,执行下面一段程序: *if(a=5或a<=0”的C语言表达式是( ) A.a>=5 or a<=0 B.a>=0 || a<=5 C.a>=5 && a<=0 D.a>=5 || a<=0 ~D 190.以下能正确表示x在-5到5(含-5和5)内,值为“真”的表达式是( ) A.(x>=-5)&&(x<=5) B.!(x>=-5||x<=5) C.x<5 && x>-5 D.(x<-5)||(x<5) ~A 191.以下关于运算符优先顺序描述中正确的是( ) A.算术运算符<关系运算符<赋值运算符<逻辑运算符 B.赋值运算符<逻辑运算符<关系运算符<算术运算符 C.逻辑运算符<关系运算符<算术运算符<赋值运算符 D.关系运算符<算术运算符<赋值运算符<逻辑运算符 ~B 192.以下合法的C语言赋值语句是( ) A.a=b=1 B.a=int a+b C.a=2,b=3 D.i++; ~D 193.若i、j已定义成int型,则以下程序段中内循环体的总执行次数是( ) *for(i=6;i>0;i--) *for(j=0;j<4;j++){...} A.20 B.24 C.25 D.30 ~B 194.以下选项中非法的字符常量是( ) A.'\\' B.'\0201' C.'\xAA' D.'0' ~B 195.如果在一个函数的复合语句中定义了一个变量,则该变量( ) A.在该复合语句中有效,在该复合语句外无效 B.在该函数内都有效 C.在本程序的原文件范围内均有效 D.此定义方法错误,其变量为非法变量 ~A 196.以下不正确的定义语句是( ) A.double x[5]={1.0,2.0,3.0,4.0,5.0}; B.int y[5]={0,1,2,3,4,5}; C.char c1[]={'1','2','3','4','5'}; D.char c2[]={'a','b','c'}; ~B 197.C语言中,凡未指定存储类别的局部变量的隐含存储类别是( ) A.自动(auto) B.静态(static) C.外部(extern) D.寄存器(register) ~A 198.如果要打开一个已经存在的非空文件“FILE”并进行修改,正确的语句是( ) A.fp=fopen("FILE","r"); B.fp=fopen("FILE","a+"); C.fp=fopen("FILE","w+"); D.fp=fopen("FILE","r+"); ~D 199.下列程序的功能时:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。 main() { int r; float s; scanf("%d",&r); s=pi*r*r; printf("s=%f\n",s); } 出错的原因是( ) A.注释语句书写位置错误 B.存放圆半径的变量r不应该定义为整型 C.输出语句中格式描述符号非法 D.计算圆面积的赋值语句中使用了非法变量 ~D 200.以下叙述错误的是( ) A.在程序中凡是以“#”开始的语句行都是预处理命令行 B.预处理命令行的最后不能以分号表示结束 C.#define MAX是合法的宏定义命令行 D.C程序对预处理命令行的处理是在程序执行的过程中进行的 ~C 201.下列叙述中正确的是( ) A.预处理命令行必须位于源文件的开头 B.在源文件的一行上可以有多条预处理命令 C.宏名必须用大写字母表示 D.宏替换不占用程序的运行空间 ~D 202.若程序中有宏定义行:#define N 100,则下列叙述中正确的是( ) A.宏定义中定义了标识符N的值为整数100 B.在编译程序对C源程序进行预处理时用100替换标识符N C.对C源程序进行编译时用100替换标识符N D.在运行时用100替换标识符N ~B 203.程序 #include #define M 5 #define N M+M main() { int k; k=N*N*5; printf("%d\n",k); } 的输出结果是( ) A.100 B.50 C.55 D.45 ~C 204.下列叙述中正确的是( ) A.预处理命令行必须位于C源程序的起始位置 B.在C语言中,预处理命令行都以#开头 C.每个C程序必须在开头包含预处理命令行:#include D.C语言的预处理不能实现宏定义和条件编译的功能 ~B 205.C语言的编译系统对宏命令的处理是( ) A.在系统对源程序进行编译前 B.和其他语句的编译同时进行 C.在程序连接时进行 D.在程序运行时进行 ~A 206.以下叙述中不正确的是( ) A.预处理命令行都必须以“#”号开始,结尾不加分号 B.在程序中凡是以“#”开始的语句行都是预处理命令行 C.C程序在执行过程中对预处理命令进行处理 D.预处理命令可以放在程序的任何位置 ~C 207.下面叙述中正确的是( ) A.C语言中预处理是指完成宏替换和文件包含指定的文件的调用 B.预处理命令只能位于C源程序文件的首部 C.预处理命令可以放在程序中的任何位置 D.预处理命令结尾需要加分号 ~C 208.以下有关宏替换的叙述不正确的是( ) A.使用宏定义可以嵌套 B.宏定义仅仅是符号替换 C.双引号中出现的宏名不替换 D.宏名必须用大写字母表示 ~D 209.在“文件包含”预处理语句的使用形式中,当#include后面的文件名用尖括号(<>)括起时,寻找被包含文件的方式是( ) A.仅仅搜索当前目录 B.仅仅搜索源程序所在目录 C.在标准目录下查找指定文件 D.先在源程序所在目录搜索,如没找到,再按系统指定的标准目录查找 ~C 210.下列对结构体类型变量td的定义中,错误的是( ) A. typedef struct aa B. struct aa { int n; { int n; float m; float m; }AA; }td; AA td; C. struct D. struct {int n; { int n; float m; float m; }aa; }td; struct aa td; ~C 211.下列叙述错误的是( ) A.可以通过typedef增加新的类型 B.可以用typedef将已存在的类型用一个新的名字来代表 C.用typedef定义新的类型名后,原有的类型名仍有效 D.用typedef可以为各种类型起别名,但不能为变量起别名 ~A 212.设有以下语句: typedef struct TT {char c;int a[4];}CIN; 则下列叙述中正确的是( ) A.可以用TT定义结构体变量 B.TT是 struct类型的变量 C.可以用CIN定义结构体变量 D.CIN是struct TT类型的变量 ~C 213.下列关于typedef的叙述错误的是( ) A.用typedef可以增加新的类型 B.typedef只是将已存在的类型用一个新的名字来代表 C.用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名 D.用typedef为类型说明一个新名,通常可以增加程序的可读性 ~A 214.有以下结构体类型说明和变量定义中正确的是( ) A. typedef struct B. struct REC { int n;char c;}REC; { int n;char c;}; REC t1,t2; REC t1,t2; C. typedef struct REC; D. struct { int n=0;char c='A';}t1,t2; { int n;char c;}REC; REC t1,t2; ~A 215.定义以下结构体数组: struct st { char name[15]; int age; }a[10]={"ZHAO",14,"WANG",15,"LIU",16,"ZHANG",17}; 执行语句printf("%d,%c"a[2].age,*(a[3].name+2)))的输出结果为( ) A.15,A B.16,H C.16,A D.17,H ~C 216.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为( ) A.EOF B.非0值 C.0 D.NULL ~B 217.读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中buffer代表的是( ) A.一个文件指针,指向待读取的文件 B.一个整型变量,代表待读取的数据的字节数 C.一个内存块的首地址,代表读入数据存放的地址 D.一个内存块的字节数 ~C 218.如果需要打开一个已经存在的非空文件“FILE"并进行修改,正确的语句是( ) A.fp=fopen("FILE","r"); B.fp=fopen("FILE","a+"); C.fp=fopen("FILE","w+"); D.fp=fopen("FILE","r+"); ~D 219.若以"a+"方式打开一个已存在的文件,则以下叙述正确的是( ) A.文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加或读操作 B.文件打开时,原有文件内容不被删除,只能进行读操作 C.文件打开时,原有文件内容被删除,只能进行写操作 D.以上各种说法都不正确 ~A 220.使用fgets(str,n,p)函数从文件中读入一个字符串,以下叙述错误的是( ) A.字符串读入后会自动加入'\0' B.fp是指向该文件的文件型指针 C.fgets函数将从文件中最多读入n-1个字符 D.fgets函数将从文件中最多读入n个字符 ~D 二.填空题 1.该变量已正确定义为整型,则表达式n=i=2,++i,i++ [<3>]。 2.已知字母A的ASCII值为65,下列程序运行后的输出结果是[<67 g>] main() {char a,b; a='A'+'5'-'3';b=a+'6'-'2'; printf("%d%c",a,b); } 3.下列isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0。请填空。 int isprime(int a) {int i; for(i=2;i<=a/2;i++) if(a%i==0)[]; []; } 4.设有定义:float x=123.4567;,则执行下列语句后的输出结果是[<123.460000>] printf("%f\n",(int)(x*100+0.5)/100.0); 5.若有定义:int a=4,b=5,c=6;接着顺序执行下列语句后,变量b中的值是[<1>]。 c=(a-=(b-5)); c=(a%3)+(b=1); 6.若a的值为1,则表达式!a||++a的值是[<1>]。 7.下列程序的功能是:求出数组x中各相临两个元素的和依次存放到数组a中,然后输出。请填空。 main() {int x[10],a[9],i; for(i=0;i<10;i++) scanf("%d",&x[i]); for([];i<10;i++) a[i-1]=x[i]+[]; for(i=0;i<9;i++) printf("%d",a[i]); printf("\n"); } 8.设有定义语句:int a[][3]={{0},{1},{3}},则数组元素a[1][2]是[<0>] 9.下列程序中的数组a包括10个整数元素,从a中第二个元素起,分别将后项减前项之差存入数组b,并按每行4个输出,请填空。 main() {int a[10],b[10],i; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=1;i<10;i++) []; for(i=1;i<10;i++) {printf("%d",b[i-1]); if(i%4==0) printf("\n"); } } 10.下面程序将二维数组a的行和列互换后存放到一个二维数组b中,请填空。 main() {int a[2][3]={{1,2,3},{4,5}},b[3][2],i,j; for(i=0;i<2;i++) { for(j=0;j<3;j++) [] } } } 11.下列程序运行后的输出结果是[<10 20 0>]。 main() {int a,b,c; a=10;b=20;c=(a%b<1)||(a/b>1); printf("%d %d %d\n",a,b,c); } 12.下列程序用于判断a、b、c能否构成三角形,若能输出YES,否则输出NO。请填空。 main() {float a,b,c; scanf("&f&f&f",&a,&b,&c); if([<(a+b>c)&&(a+c>b)&&(b+c>a)>]) printf("YES\n"); else printf("NO"); } 13.已有定义:char c='';int a=1,b;执行b!=c&&a;后b的值为[<0>]。 14.下列程序的输出结果是[<1>]。 main() {int a=1,b=2,c=3; if(c=a) printf("%d\n",c); else printf("%d\n",b); } } 15.下列程序的输出结果是[<1>]。 main() {int x,a=1,b=2,c=3,d=4; x=(ax)?x:d; printf("%d\n",x); } 16.下列程序的输出结果是[<0235>] main() {int k=5,n=0; do {switch(k) {case 1: case 3:n+=1;k--;break; default:n=0;k--; case 2: case 4:n+=2;k--;break; } printf("%d",n); }while(k>0&&n<5); } 17.下列程序的输出结果是[<25>] main() {int i; for(i=1;i<=10;i++) { if((i*i>=20)&&(i*i<=100)) break; } printf("%d\n",i*i); } 18.下列程序的输出结果是[<2,2,0>] main() {int a=-5,b=1,c=1; int x=0,y=2,z=0; if(c>0) x=x+y; if (a<=0) { if(b>0) if(c<=0) y=x-y; } else if (c>0) y=x-y; else z=y; printf("%d,&d,&d\n",x,y,z); } 19.有下列程序段,且变量已正确定义和赋值: for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1)); printf("s=%f\n\n",s); 请填空,使下列程序段的功能与之完全相同。 s=1.0;k=1; while([]) {s=s+1.0/(k*(k+1));[];} printf("s=%f\n\n",s); 20.下列程序的功能是:将输入的正整数按逆序输出。例如,如输入135则输出531,请填空。 main() {int n,s; scanf("%d",&n); do {s=n%10;printf("%d",s);[];} while (n!=0); } 21.下列程序的功能是计算:s=1+12+123+1234+12345.请填空。 main() {int t=0,s=0,i; for(i=1;i<=5;i++) {t=i+[];s=s+t;} printf("%d\n",s); } 22.下列程序的运行结果是[<32>]。 main() {int i=0,a=0; while(i<20) {for(;;) {if(i%10==0)break; else i--; } i+=11; a+=i; } printf("%d\n",a); } 23.下列程序中,fun()函数的功能是计算x^2-2x+6,主函数中将调用fun() 函数计算: y1=(x+8)^2-2(x+8)+6 y2=sin^2(x)-2sin(x)+6 请填空。 #include "math.h" double fun(double x) {return(x*x-2*x+6);} main() { double x,y1,y2; printf("Enter x:"); scanf("%lf",&x); y1=fun([]); y2=fun([]); printf("y1=%lf,y2=%lf\n",y1,y2); } 24.有下列程序: int sub(int n) {return (n/10+n%10);} main() { int x,y; scanf("%d",&x); y=sub(sub(sub(x))); printf("%d\n",y); } 若运行时输入:1234,程序的输出结果是[<10>]。 25.以下程序的输出结果是[<4>]。 #include main() { int a[5]={2,4,6,8,10},*p; p=a;p++; printf("%d",*p); } 26.以下程序的输出结果是[<3 5>]。 #include void swap(int a,int b) { int t ; t=a;a=b;b=t; } main() { int i=3,j=5,p=&i,q=&j; swap(p,q);printf("%d %d",p,q); } 27.下面程序段的运行结果是[<68>]。 char str[]="ABCD",*p=str; *printf("%d\n",*(p+3)); 28.若变量a和b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的输出语句[]。 ~~~2 29.执行下列程序时,输入1234567,则输出结果是[<12 34>]。 #include main() { int a=1,b; scanf("%2d%2d",&a,&b);printf("%d%d\n",a,b); } 30.若已知:a=1,b=2,则表达式:!(a]。 31.若s是int型变量,且s=8,则s%3+(s+1)%3表达式的值为[<2>]。 32.若x和n均是int型变量,且x=12,n=5,则执行y=x%=(n%=2)表达式后y的值为[<0>]。 - 23 -
/
本文档为【## c语言 选择题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索