内容正文:
一、 选择题(共40题)
1. 设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是( )
A.'x'&&'y'
B.x<=y
C.x||y+z&&y-z
D.!((x
2. 下列表达式中值为真的是( )
A.a=0 B.b=3>4 C.b=3+4==5 D.(float)1/2
3. 已知a=4,b=3,c=2;则表达式a>b>c的值为( )
A.2 B.1 C.0 D.无法确定
4. (2020年春季高考试题)以下程序段的运行结果是( )
int a=5,b=4,c=2,d=1;
if(a>b>c)d=3:
else d--;
printf("%d
",d);
A.0 B.1 C.2 D.3
5. 设有:int a=1,b = 2,c=3,d=4,m = 2,n=2;执行(m = a>b)&&(n=c>d)后n 的值为( )
A.2 B.1 C.3 D.4
6. 执行语句"x=5>1 + 2&&2 || 2*4<4-! 0"后,x 的值为( )
A.– 1 B.0 C.1 D.5
7. 以下程序的输出结果是( )
main( )
{ int a,b,d=241;
a=d∕100%9;
b=(-1)&&(-1).
Printf("%d, %d” , a,b);
}
A.6,1 B.2,1 C.6,0 D.2,0
8. 以下程序的输出结果是( )
main( )
{ int a= -1,b=1,k;
if((++ a<0) & & ! (b--<=0))
Printf("%d%d" ,a,b);
else
Printf("%d%d" ,b,a);
}
A.-1 1 B.0 1 C.1 0 D.0 0
9. 执行下面语句后x的值为( )
int a=14, b=15, x;
char c='A';
x=((a&&b)&&(c<'a'));
A.TRUE B.FALSE C.0 D.1
10. 能正确表示“当x取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是( )
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)
11. 下面的for语句是( )
for (x=0, y=0; (y!=123)&&(x<4); x++);
A.无限循环 B.循环次数不定 C.循环执行4次 D.循环执行3次
12. 循环语句for(i=0,x=0;!x&&i<=5; i++);的执行次数为( )
A.5次 B.6次 C.1次 D.无限
13. 设有说明语句:int a=1,b=2,c=3,d=4,m=2,n=2;则执行(m=ad)后n的值为( )
A.1 B.0 C.3 D.4
14. 逻辑运算符两侧运算对象的数据类型( )
A.只能是0或1 B.只能是0或非0正数 C.只能是整型或字符型数据 D.可以是任何类型的数据
15. 设有说明语句:int a=1,b=2,c=3,d=4,m=2,n=2;则执行(m=a>b)&&(n=c>d)后n的值为( )
A.1 B.2 C.3 D.4
16. 能正确表示“当x的取值在[-58,-40]和[40,58]范围内为真,否则为假”的表达式是( )
A.(x>=-58)&&(x<=-40)&&(x>=40)&&(x<=58)
B.(x>=-58)||(x<=-40)|1(x>=40)||(x<=58)
C.(x>=-58)&&(x<=-40)||(x>=40)&&(x<=58)
D.(x>=-58)||(x<=-40)&&(x>=40)||(x<=58)
17. 执行以下程序段后,w的值为( )
int w='A', x=14,y=15;
w=((x||y)&&(w<'a'));
A.-1 B.Null C.1 D.0
18. 设x、y和z都是int类型变量,且x=3,y=4,z=5,则下面的表达式中,值为0的表达式为( )
A.'x'&&'y'
B.x<=y
C.x||y+z&&y-z
D.!(x
19. 设a为整型变量,不能正确表达数学关系10
A.10
B.a==11|a==12||a==13||a==14
C.a>10&&a<15
D.!(a<=10)&&!(a>=15)
20. 如果x大于1并且小于或等于10,则为真,否则为假,正确的表达式是( )
A.1
B.x>1||x<=10
C.x>1&&x<=10
D.x>1&&x<10
21. 以下关于运算符优先顺序的描述中正确的是( )
A.关系运算符
B.逻辑与运算符
C.赋值运算符
D.算术运算符
22. (2018年春季高考试题)以下程序段的运行结果是( )
int x,y,z,d;
x=2;y=3;z=5;
d=z>y>x&&++y;
printf("%d,%d
",d,y);
A.0.4 B.1,4 C.0.3 D.1,3
23. 以下程序的输出结果是( )
long fun( int n)
{
long s;
if(n==1 || n= =2) s=2;
else s= n-fun(n-1);
return s;
}
main( )
{
printf(" %1d", fun(3));
}
A.1 B.2 C.3 D.4
24. 以下程序的输出结果是( )
int w=3;
main( )
{
int fun(int k);
int w= 10;
Printf("%d” ,fun(5) * w);
}
int fun(int k)
{
if(k= =0) return w;
return(fun(k-1) * k);
}
输出的结果是
A.360 B.3600 C.1080 D.1200
25. while(!E)中的表达式!E等价于( )
A.E==0 B.E!=1 C.E!=0 D.E==1
26. 以下程序的输出结果为( )
main( )
{ int a,b,c,x,y,z;
a=10;b=2;
c= ! (a%b);
x= ! (a/b);
y=(az= (a=0);
printf(c= %d,x= %d,y= %d,z=%d",c,x,y,z);
}
A.c=0,x=1 ,y=1 ,z=0
B.c=5,x=0,y=1,z=0
C.c=1 ,x=0,y=0,z=1
D.c= 10, x=2 ,y=0 ,z= 1
27. 在以下程序中,判断i>j共执行了次( )
A.4 B.7 C.5 D.6
28. 下列程序,运行后的结果为( )
#include
main( ){
int a[3][3]={1,2,3,4,5,6,7,8,9},sum=0;
for(int i=0;i<3;i++)
{for(int j=0;j<3;j++)
{if(i==j)
{sum=sum+a[i][j];}
}}
printf("%d",sum);}
A.15 B.16 C.17 D.18
29. 程序段如下:则以下说法中不正确的是 ( )
# include
main( )
{
int k = 2 ;
while(k≤7)
{
if(k%2) {k = k+3; printf("k= %d
" ,k) ;continue;}
k = k+l;
printf("k= %d∖n" ,k);
}
}
A.k=k+3;执行一次 B.k=k+1;执行2次 C.执行后k值为7 D.循环体只执行一次
30. 下面程序段的输出结果是( )
x=3;
do
{ y=x- - ;
if( ! y) {printf( "* "; continue ;}
printf(" # ");
} while(x=2);
A.# #
31. 以下程序的输出结果是( )
main( )
{ int y=10;
for( ;y>0;y- -)
if(y%3= =0)
{
printf(" %d" ,y) ;continue;
}
}
A.741 B.852 C.963 D.875421
32. 下列程序的输出结果是 ( )
# include
main( )
int i;
for(i = 4;i< = 10;i+ + )
{
if(i%3 = =0) continue;
printf( "%d" , i);
}
}
A.45 B.457810 C.69 D.678910
33. 对下面程序段,描述正确的是( )
for(t=1;t<=100;t++)
{ scanf("%d" , &x);
if(x<0) continue;
printf("%d∖t" ,x);
}
A.当x<0时,整个循环结束 B.当x>=0时,什么也不输出
C.printf函数永远也不执行 D.最多允许输出100个非负整数
34. 以下程序的输出结果是( )
main( )
{ int a,b;
for(a=1 ,b= 1 ;a<= 100;a++)
{
if(b>=10) break;
if (b%5== 1) { b+=5;continue; }
}
printf(" %d∖n" ,a);
}
A.101 B.6 C.4 D.3
35. 有以下程序:
main( )
{
int i=5;
do
{
if(i%3== 1)
if(i%5== 2)
{
printf(" * %d" ,i);break;
}
i+ + ;
}
while(i! =0);
printf( "
");
}
该程序的运行结果是( )
36. 若有说明语句:int w=1,x=2,y=3,z=4;则表达式w>x?w:z>y?z:x的值是( )
A.4 B.3 C.2 D.1
37. 下面程序段的运行结果是( )
for(x=3;x<6;x++)
printf((x%2)?(“**%d”):(“%d”),x);
A.**34**5 B.3**45 C.3**4**5 D.**345
38. 若有条件表达式(exp)?A++:b--,则以下表达式中能完全等价于表达式(exp)的是( )
A.(exp==0) B.(exp==1) C.(exp!=0) D.(exp!=1)
39. 若运行以下程序段时输入:35/(回车),则程序的运行结果是( )
float x, y;
char a; double r;
scanf("%f%f%c",&x,&y,&a);
switch(a)
{ case'+'; r=x+y; break;
case'-': r=x-y; break;
case'*':r=x*y;break;
case'/':r=x/y; break;
printf("%f",r);}
A.8.000000 B.-2.000000 C.15.000000 D.0.600000
40. 若a和b均是正整型变量,正确的switch语句是( )
A.switch(pow(a,2)+pow(b,2))
case 1: case 3: y=a+d;break;
case 0: case 5:y=a-b;}
B.switch(a*a+b*b);
{ case 3:
case 1:y=a+b;break;
case 0:y=b-a; break;}
C.switch a
{ default:x=a+b;
case 10:y=a-b;break;
case 11:x=a*b;break;
D.switch(a+b)
二、 简答题(共2题)
41. 阅读下列程序,写出输出结果。
# include
main( )
{float a=6,b=5,c=4,t;
if(a>b) {t=a;a=b;b=t;}
if(a>c) {t=a;a=c;c=t;}
if(b>c) {t=b;b=c;c=t;}
printf(”%5.2f,%5.2f,%5.2f”,a,b,c);
}
程序输出结果为:
42. 输入十个学生的成绩,先计算他们的总分,再输出他们的平均分。请将计算总分部分的程序填写完整。
# include
main( )
{ int i;
float scoresElθ] , sum=0 ;
printf(“输入10个学生的成绩:”);
printf("平均分=%.2f",sum/10);
}
三、 案例分析题(共1题)
43. 以下程序的输出结果是( )。
main()
{ int a=100, x=10, y=20, ok1=5, ok2=0;
if(xif(y!=10)
if(!ok1)a=1;
else if(ok2)a=10;
a=-1;
printf("%d
", a);
}
四、 程序分析题(共5题)
44. 写出下列程序运行结果。
main()
{ int a, b,c;
int s,w,t;
s=w=t=0;
a=-1;b=3;c=3;
if(c>0)s=a+b;
if(a<=0)
{ if(b>0)if(c<=0)w=a-b;}
else
if(c>0)w=a-b; else t=c;
printf("%d%d%d",s,w,t);}
45. 以下程序用于判断某一年是否为闰年(判断闰年的方法为:能被4整除但不能被100整除或者能被400整除)。
main()
{ int year;
print("请输入年数:");
scanf("%d", &year);
if((year%4==0)&&___________)
printf("%d年为闰年",year);
else if(__________)
printf("%d年为闰年",year);
else
printf("%d 为平年",year);}
46. 以下程序可实现从键盘输入两数a和b,并输出其中较大者的功能(不考虑相等的情况)。
main( )
{ ___________
scanf("%d%d",&a,&b);
if(___________)
printf("最大值为%d",a);
else printf("最大值为%d",b);}
47. 阅读下列程序写出程序的运行结果。
main()
{ int a=2,b=7,c=5;
switch(a>0)
{ case 1:switch(b<0)
{ case 1: printf("@");break;
case 2: printf("!");break;}
case 0:switch(c==5)
{ case 0: printf("*"); break;
case 1: printf("#");break;
case 2: printf("$");break;}
default: printf("&");}
printf("
");}
48. 写出下列程序的运行结果________
#include
main()
{ int i=1,s=3;
do{ s+=i++;
if(s%7==0)continue;
else ++i;}while(s<15);
printf("i=%d", i);}
五、 编程题(共4题)
49. 从键盘输入三个整数,输出其中的较小者。
50. 有一个函数编写程序,从键盘输入x,输出y值。
51. 输入三个整数x,y,z,请把这三个数由小到大输出。
52. 输入两个正整数m和n,求其最大公约数。
参考答案及解析
一、 选择题
1. 【答案】D
【解析】[!((x
2. 【答案】D
3. 【答案】C
4. 【答案】A
5. 【答案】A
6. 【答案】C
7. 【答案】B
8. 【答案】C
9. 【答案】D
【解析】[因为x后面是逻辑符号构成,所以它的值为1或0(若后面的式子逻辑和为真就是1,否则为0)。因为14与15都是非零的,非零的逻辑值均为1,所以(a&&b)是1。A的ascII码(ascII码就是电脑中字母转换为数字时的数值)是小于a的。所以(c<'a')是真,即是1。]
10. 【答案】C
11. 【答案】C
【解析】(y一直是0,所以y!=123一直成立,所以就看x,一共循环四次。)
12. 【答案】B
【解析】(!x&&i<=5,!x为真,只须i<=5为真,i取值为0,1,2,3,4,5。)
13. 【答案】B
【解析】
[(m=ad)进行处理,此题因为&&左边的表达式为真,所以会处理&&右边的(n=c>d)这个式子,由以上分析,(c>d)为假,其真值为0,所以n为0。]
14. 【答案】D
15. 【答案】B
【解析】
[m=a>b值为0,也即是&&左边的表达式为假,所以不在处理&&右边的(n=c>d)这个式子,n的值仍为2。]
16. 【答案】C
17. 【答案】C
【解析】
(x,y都不等于0,即x,y都为真,进行“或”运算“”时,有一个为真即为真所以x||y逻辑值为1;'a'=97,'A'=65,所以w<'a'为真。)
18. 【答案】D
19. 【答案】A
20. 【答案】C
【解析】
(条件同时满足用求与“&&”。)
21. 【答案】C
22. 【答案】C
23. 【答案】A
24. 【答案】B
25. 【答案】A
【解析】
(!E就是非E,当E==0的时候!E的值是真,所以while循环成立。B选项 E!=1 如果E==2的时候!E是0为假,明显不对;C选项E!=0 类似的道理,D选项E==1,!E是假。所以选A。)
26. 【答案】C
27. 【答案】D
28. 【答案】A
29. 【答案】D
30. 【答案】C
31. 【答案】B
32. 【答案】B
33. 【答案】D
34. 【答案】D
35. 【答案】D
36. 【答案】A
【解析】
[w>x?w:z>y?z:x条件表达式是从右向左结合,所以先执行z>y?z:x得4,在进行w>x?w:4运算得4。]
37. 【答案】A
【解析】
[printf((x%2)?(“**%d”):(“%d”),x);为条件语句。当循环执行x=3时,判断条件(x%2)为真,执行(“**%d”)(语句中没有
就不换行)。然后循环执行x=4时 判断后执行(“##%d
”)(并加换行),故选A。]
38. 【答案】C
39. 【答案】D
【解析】
[从键盘输入35/,a='/',则执行case/对应的语句 r=x/y;break;得r=0.6,输出默认6位小数。]
40. 【答案】D
【解析】
选项A中switch后一对圆括号中的表达式类型必须是整型,字符型,而在此表达式pow(a,2)+pow(b,2)中调用了求幂函数,此函数的运算结果是双精度型,因此不符合语法要求;将产生语法错误,选项B中在switch首行的最后多了一个分号,选项C中switch后的表达式必须在一对圆括号中。
二、 简答题
41. 【答案】4.00,5.00,6.00
42. 【答案】for(i=0;i<10;i+ + )
{ Scanf(" % f" , &scores[i]);
sum=sum+scores[i];
}
三、 案例分析题
43. 【答案】-1
四、 程序分析题
44. 【答案】200
45. 【答案】year%100!=0
year%400==0
46. 【答案】inta,b; a>b
47. 【答案】#?
48. 【答案】i=8
五、 编程题
49. 【答案】程序源代码:
main()
{ int a, b, c, min;
scanf(“%d%d%d”, &a, &b, &c);
if(a>b)min=b;
else min=a;
if(min>c)min=c;
printf(“%d”, min);}
50. 【答案】程序源代码:
main()
{ float x; double y;
scanf(“%f“,&x);
if(x<=0)y=x*x;
else if(x<10)y=2*x*x-3;
else y=x*x+5;
printf(“%.2f”,y);}
51. 【答案】程序源代码:
main()
int x, y, z,t;
scanf("%d%d%d",&x,&y,&z);
if(x>y)
{ t=x;x=y;y=t;}
if(x>z)
{ t=z;z=x;x=t;}
if(y>z)
{ t=y;y=z;z=t;}
printf("small to big: %d%d%d
", x, y, z);
}
52. 【答案】程序源代码:
main()
{
int a, b, i, temp;
printf("please input two numbers:
");
scanf("%d, %d", &a, &b);
if(afor(i=b;i<=2;i++)
if(a%i=0&&b%i==0)break;
printf("gongyueshu: %d
", i);
}
学科网(北京)股份有限公司
$$