通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
第1题
以下选项中,能表示逻辑值“假”的是( )。
1
0.000001
0
100.0
第2题
以下表达式的值与x无关、其值恒为真的是( )。
0<x<5
x>10&&x<5
x>10ǁx<5
x<10&&x>5
第3题
当变量c的值不为2、4、6时,值也为“真”的表达式是( )。
(c==2)ǁ(c==4)ǁ(c==6)
(c>=2&&c<=6)ǁ(c!=3)ǁ(c!=5)
(c>=2&&c<=6)&&!(c%2)
(c>=2&&c<=6)&&(c%2!=1)
第4题
设有定义:
int a=0,b=1;
以下表达式中,会产生“短路”现象,致使变量b的值不变的是 ( )。
+aǁ++b
a++ǁ++b
++a&&b++
a++&&b++
第5题
若有定义语句
int b=2;
则表达式(b<<2)/(3ǁb)的值是( )。
4
8
2
第6题
若a是数值类型,则逻辑表达式(a==1)ǁ(a!=1)的值是( )。
不知道a的值,不能确定
第7题
以下选项中,当x为大于1的奇数时,值为0的表达式是( )。
x%2==1
x/2
x%2!=0
x%2==0
第8题
int k1=10,k2=20;
执行表达式(k1=k1>k2)&&(k2=k2>k1)后,k1和k2的值分别为 ( )。
0和1
0和20
10和1
10和20
第9题
已知a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=c<d)后n的值为( )。
-1
第10题
执行以下程序段后,w的值为( )。
int w='A',x=14,y=15; w=((x||y)&&(w<'a'));
NULL
第11题
有以下程序:
#include <stdio.h> main() { int a,b,c=241; a=c/100%9; b=(-1)&&(-1); printf("%d,%d\n",a,b); }
程序运行后的输出结果是( )。
2,1
6,1
6,0
2,0
第12题
#include <stdio.h> main() { int a=-2,b=0; while(a++&&++b); printf("%d,%d\n",a,b); }
1,3
0,2
0,3
1,2
第13题
有以下程序
#include <stdio.h> main(){ int n=2,k=0; while(k++&&n++>2); printf("%d %d\n",k,n); }
0 2
1 3
5 7
1 2
第14题
以下叙述中正确的是( )。
分支结构是根据算术表达式的结果来判断流程走向的
在C语言中,逻辑真值和假值分别对应1和0
对于浮点变量x和y,表达式:x==y是非法的,会出编译错误
关系运算符两边的运算对象可以是C语言中任意合法的表达式
第15题
若变量已正确定义,在if(W)printf("%d\n",k);中,以下不可替代W的是( )。
a<>b+c
c=getchar()
a==b+c
a++
第16题
为了避免在嵌套的if-else语句中产生二义性,C语言规定与else子 句配对是( )。
与其在同一行上的if子句
在其之后最近的不带else的if子句
与其缩排位置相同的if子句
在其之前最近的不带else的同层if子句
第17题
下列条件语句中,输出结果与其他语句不同的是( )。
if(a)printf("%d\n",x);else printf("%d\n",y);
if(a==0)printf("%d\n",y);else printf("%d\n",x);
if(a!=0)printf("%d\n",x)else printf("%d\n",y);
if(a==0)printf("%d\n",x)else printf("%d\n",y);
第18题
int a=1,b=2,c=3;
以下语句中执行效果与其他三个不同的是( )。
if(a>b)c=a,a=b,b=c;
if(a>b){c=a,a=b,b=c;}
if(a>b)c=a;a=b;b=c;
if(a>b){c=a;a=b;b=c;}
第19题
有以下程序段,若变量已正确定义并赋值
if(a>b)printf("x=%d,",x); else printf("y=%d,",y); if(a<=b)i++; else j++;
则与此程序段功能相同的选项是( )。
if(a>b) { printf("x=%d,",x); j++ } else { printf("y=%d,",y); i++ }
if(a>b) { printf("x=%d,",x); i++ } else { printf("y=%d,",y); j++ }
if(a<=b) { printf("x=%d,",x); i++ } else { printf("y=%d,",y); j++ }
if(a>=b) { printf("x=%d,",x); i++ } else { printf("y=%d,",y);j++}
第20题
#include <stdio.h> main() { int x=0x13; if(x=0x12)printf("True"); printf("False\n"); }
True
TrueFalse
False
TrueFalseTrue
第21题
有以下程序段:
scanf("%d%d%d",&a,&b,&c); if(a>b)a=b; if(a>c)a=c; printf("%d\n",a);
该程序段的功能是( )。
输出a、b、c中的最小值
输出a、b、c中的最大值
输出a的原始值
输出a、b、c中值相等的数值
第22题
scanf("%d%d%d",&a,&b,&c); if(a<b)a==b; if(a<c)a="=c;" printf("%d\n",a);
第23题
以下程序的功能是判断输入的一个整数是否能被3或7整除,若能 整除,输出YES,否则输出NO。在下划线处应填入的选项是 ( )。
#include <stdio.h> main() { int k; printf("Enter a int number:"); scanf("%d",&k); if _____ printf("YES\n"); else printf("NO\n"); printf("%d\n",k%3); }
((k%3==0)ǁ(k%7==0))
(k/3==0)ǁ(k/7==0)
((k%3=0)ǁ(k%7=0))
((k%3==0)&&(k%7==0))
第24题
#include <stdio.h> main() { if('\0'==0)putchar('1'); if('0'==0)putchar('2'); if('a'>'b')putchar('3'); }
123
23
3
第25题
#include <stdio.h> main(){ int x; scanf("%d",&x); if(x>10) printf("1"); else if(x>20) printf("2"); else if(x>30) printf("3");}
若运行时输入:35<回车>,则输出结果是( )。
第26题
int a,b,c; a=10;b=50;c=30; if(a>b)a=b,b=c;c=a; printf("a=%db=%dc=%d",a,b,c);
程序的输出结果是( )。
a=10 b=50 c=10
a=10 b=50 c=30
a=10 b=30 c=10
a=10 b=30 c=50
第27题
若变量已正确定义,有以下程序段:
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);
其输出结果是( )。
程序段有语法错误
3,5,3
3,5,5
3,5,7
第28题
以下函数按每行8个输出数组中的数据:
void fun(int *w,int n) { int i; for(i=0;i<n;i++) {______ printf("%d",w[i]);} printf("\n");}
下划线处应填入的语句是( )。
if(i/8==0) printf("\n");
if(i/8==0) printf("\n"); B.if(i/8==0)continue;
if(i%8==0) printf("\n");
if(i%8==0)continue;
第29题
#include <stdio.h> main() { int x=1,y=2,z=3; if(x>1) if(y>x)putchar('A'); else putchar('B'); else if(z<x)putchar('C'); else putchar('D');}
程序的运行结果是( )。
D
C
B
A
第30题
#include <stdio.h> main() { int x=1,y=2,z=3; if(x>y) if(y<z) printf("%d",++z); else printf("%d",++y); printf("%d\n",x++); }
程序运行的结果是( )。
331
41
第31题
#include main() { int x=1,y=0; if(!x)y++; else if(x==0) if(x)y+=2; else y+=3; printf("%d\n",y); }
第32题
在以下程序:
#include <stdio.h> main() { int a=1,b=0; if(!a) b++; else if(a==0)if(a)b+=2; else b+=3; printf("%d\n",b); }
第33题
#include <stdio.h> main() { int x; scanf("%d",&x); if(x<=3); else if(x!=10) printf("%d\n",x); }
程序运行时,输入的值在( )范围才会有输出结果。
不等于10的整数
大于3且不等于10的整数
大于3或等于10的整数
小于3的整数
第34题
若有以下程序
#include <stdio.h> main() { int a=1,b=2,c=3,d=4; if((a==2)||(b==1))c=2; if((c==3)&&(d==-1))a=5; printf("%d,%d,%d.%d\n",a,b,c,d); }
则程序的输出结果是( )。
2,2,2,4
2,1,2,-1
5,1,2,-1
1,2,3,4
第35题
#include <stdio.h> main() { int a=0,b=0,c=0,d=0; if(a=1)b=1;c=2; else d=3; printf("%d,%d,%d,%d\n",a,b,c,d); }
程序输出( )。
0,0,0,3
编译有错
1,1,2,0
0,1,2,0
第36题
有如下程序
:#include <stdio.h> main() { int x=0x13; if(x=0x18)printf("T"); printf("F"); printf("\n"); }
TF
T
F
TFT
第37题
有以下计算公式:
若程序前面已在命令行中包含math.h文件,不能够计算上述公式的程 序段是( )。
y=sqrt(x); if(x<0)y=sqrt(-x);
if(x>=0)y=sqrt(x); else y=sqrt(-x);
if(x>=0)y=sqrt(x); if(x<0)y=sqrt(-x);
y=sqrt(x>=0?x:-x);
第38题
如有表达式(w)?(-x):(++y),则其中与w等价的表达式是 ( )。
w==1
w==0
w!=1
w!=0
第39题
若有定义:int x,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是( )。
(x-y==0)
(x-y<0)
(x-y>0)
(x-y<0ǁx-y>0)
第40题
有如下嵌套的if语句:
if(a<b) if(a<c)k="a;" else="" k="c;" if(b<c)k="b;"
以下选项中与上述if语句等价的语句是( )。
k=(a<b)?a:b;k=(b<c)?b:c;
k=(a<b)?((b<c)?a:b):((b<c)?b:c);
k=(a<b)?((a<c)?a:c):((b<c)?b:c);
k=(a<b)?a:b;k=(a<c)?a:c;
第41题
以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是( )。
if((a>b) && (b>c)) k=1; else k=0;
if((a>b)ǁ(b>c)) k=1; else k=0;
if(a<=b) k=0; else if(b<=c) k=1;
if(a>b) k=1; else if(b>c) k=1; else k=0;
第42题
有语句:k=x<y?(y<z?1:0):0; 以下选项中,与此语句功能相同的是( )。
if(x<yǁy<z)k=1;else k="0;"
if(x<y)k=0;else if(y<z)k="1;"
if(x<y)if(y<z)k=1;else k="0;"
if(x<y &&="" y<z)k="1;else" k="0;"
第43题
若有定义:
int a=0,b=0,c=0,d=0;
有C语言表达式 (a++ && b++)? c++ : d++,以下关于其执行顺序的叙述 正确是( )。
先执行a++,表达式a++的值为0,由此即可确定(a++ && b++)值为0,因此执行d++
先执行a++,表达式a++的值为0;再执行b++,表达式b++的值为0,由此可确定(a++ && b++)值为0,因此执行d++
先执行a++,表达式a++的值为1;再执行b++,表达式b++的值为1,由此可确定(a++ && b++)值为1,因此执行c++
先执行b++,表达式b++的值为1;再执行a++,表达式a++的值为1,由此可确定(a++ && b++)值为1,因此执行c++
第44题
以下关于C语言表达式:(++aǁ++b)? ++c:++d执行顺序的叙述正确的是 ( )。
先执行++a,表达式++a的值为1;再执行++b,表达式++b的值为1,由此可确定(++aǁ++b)值为1,因此执行++c
先执行++a,表达式++a的值为1,由此可确定(++aǁ++b)值为1,因 此执行++c
先执行++b,表达式++b的值为1;再执行++a,表达式++a的值为1,由此可确定(++aǁ++b)值为1,因此执行++c
先执行++a,++b,++c,++d,使得a,b,c,d的值都为1,由此可 确定(++aǁ++b)值为1,因此执行++c
第45题
#include <stdio.h> main() { char a='H'; a=(a>='A'&&a<='z')?(a-'A'+'a'):a; printf("%c\n",a); }
a
H
h
第46题
#include <stdio.h> main() { int x; for(x=3;x<6;x++) printf((x%2)?("*%d"):("#%d"),x); printf("\n"); }
*3#4*5
#3*4#5
*3*4#5
*3#4#5
第47题
#include <stdio.h> int m1(int x,int y) { return x<=y?x:y; } int m2(int x,int y) { return x<=y?y:x; } int fun(int a,int b){ return a+b; } main() { int x=2,y=3,z=1; printf("%d\n",fun(m1(x,y),m2(y,z))); }
6
5
第48题
#include <stdio.h> main() { int a=0,b=0,c=0,d=0; (++a||++b)?++c:++d; printf("%d,%d,%d,%d\n",a,b,c,d);}
1,0,1,0
1,1,0,1
1,0,0,1
1,1,1,0
第49题
下列叙述中正确的是( )。
在switch语句中,不一定使用break语句
在switch语句中,必须使用default
break语句必须与switch语句中的case配对使用
break语句只能用于switch语句
第50题
float x=1.5; int a=1,b=3,c=2;
则正确的switch语句是( )。
switch(a+b) { case 1: printf("*\n"); case c: printf("**\n"); }
switch((int)x); { case 1: printf("*\n"); case 2: printf("**\n"); }
switch(x) { case 1.0: printf("*\n"); case 2.0: printf("**\n"); }
switch(a+b) { case 1: printf("*\n"); case 2+1: printf("**\n"); }
第51题
若有定义语句int a,b;double x;则下列选项中没有错误的是( )。
switch(x%2) { case 0:a++;break; case 1:b++;break; default:a++;b++; }
switch((int)x/2.0) { case 0:a++;break; case 1:b++;break; default:a++;b++; }
switch((int)x%2) { case 0:a++;break; case 1:b++;break; default:a++;b++; }
switch((int)(x)%2) { case 0.0:a++;break; case 1.0:b++;break; default:a++;b++;}
第52题
#include <stdio.h> main() { int k,n=0;char c,str[]="teach"; for(k=0;str[k];k++) { c=str[k]; switch(k) { case 1: case 3: case 5: putchar(c); printf("%d",++n); break; default:putchar('N'); } } }
Ne1NN
e1a2e3
Ne1Nc2N
Na1NNNN
第53题
#include <stdio.h> main() { char c; while((c=getchar())!='\n') { switch(c-'2') { case 0: case 1:putchar(c+4); case 2:putchar(c+4);break; case 3:putchar(c+3); default:putchar(c+2);break; } } printf("\n"); }
程序运行后从第一列开始输入以下数据:2473<回车>程序的输出结果是( )。
668977
4444
6677877
68766
第54题
#include <stdio.h> main() { int a,b; for(a=0; a<3; a++) { scanf("%d", &b); switch(b) { default: printf("%d,", ++b); case 1: printf("%d,", ++b); case 2: printf("%d,", ++b); } } }
执行时输入:1 2 3 <回车>,则输出结果是( )。
2,3,3,4,5,6,
2,3,4,
2,2,3,4,4,4,
2,3,4,3,4,4,
第55题
#include <stdio.h> main() { int i=1,k=0; for(;i<6;) { switch(i%3) { case 0:k++; case 1:k++;break; case 2:k++;continue; } i+=1; } printf("%d\n",k); }
程序的运行情况是( )。
形成无限循环
输出6
输出5
输出4
第56题
#include <stdio.h> main() { int s; scanf("%d",&s); while(s>0) { switch(s) { case 1:printf("%d",s+5); case 2:printf("%d",s+4);break; case 3:printf("%d",s+3); default:printf("%d",s+1);break; } scanf("%d",&s); } }
运行时,若输入1 2 3 4 5 0<回车>,则输出结果是( )。
6566456
66656
66666
6666656
第57题
int i,n; for(i=0; i<8; i++) { n=rand()%5; switch(n) { case 1: case 3:printf("%d\n",n);break; case 2: case 4:printf("%d\n",n);continue; case 0:exit(0); } printf("%d\n",n); }
以下关于程序执行情况的叙述中,正确的是( )。
for循环语句固定执行8次
当产生的随机数n为4时结束循环操作
当产生的随机数n为1和2时不做任何操作
当产生的随机数n为0时结束程序运行
第58题
#include <stdio.h> main() { int a[]={2,3,5,4},i; for(i=0;i<4;i++) switch(i%2) { case 0: switch(a[i]%2) { case 0:a[i]++;break; case 1:a[i]--; }break; case 1:a[i]=0; } for(i=0;i<4;i++)printf("%d",a[i]); printf("\n"); }
3344
2050
3040
0304
第59题
#include <stdio.h> main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0:a++;break; case 1:b++;break; } case 2:a++;b++;break; case 3:a++;b++;break; } printf("a=%d,b=%d\n",a,b); }
a=1,b=0
a=2,b=2
a=1,b=1
a=2,b=1
第60题
#include <stdio.h> 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); }
235
0235
02356
2356
第61题
#include <stdio.h> main() { char *s="120119110"; int n0,n1,n2,nn,i; n0=n1=n2=nn=i=0; do { switch(s[i++]) { default:nn++; case '0':n0++; case '1':n1++; case '2':n2++; } }while(s[i]); printf("n0=%d,n1=%d,n2=%d,nn=%d\n",n0,n1,n2,nn); }
n0=3,n1=8,n2=9,nn=1
n0=2,n1=5,n2=1,nn=1
n0=2,n1=7,n2=10,nn=1
n0=4,n1=8,n2=9,nn=1
选择题(1 - 61题,共计100分)