C、a>10&&a<15D、!
(a<=10)&&!
(a>=15)
13.以下程序的输出结果是___A___。
main()
{inta=4,b=5,c=0,d;
d=!
a&&!
b||!
c;
printf("%d\n",d);
}
A、1B、0C、非0的数D、-1
14.语句:
printf("%d",(a=2)&&(b=-2));的输出结果是___D___。
A、无输出B、结果不确定C、-1D、1
15.设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为___C___。
A、0B、1C、2D、3
16.若变量c为char类型,能正确判断出c为小写字母的表达式是__D____。
A、'a'<=c<='z'B、(c>='a')||(c<='z')
C、('a'<=c)and('z'>=c)D、(c>='a')&&(c<='z')
17.能正确表示逻辑关系:
“a≥10或a≤0”的C语言表达式是___D___。
A、a>=10ora<=0B、a>=0|a<=10
C、a>=10&&a<=0D、a>=10||a<=10
18.有如下程序
main()
{
inta=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a
printf("%d,%d\n",k,m);
}
程序运行后的输出结果是___C___。
A、0,0B、0,1C、1,0D、1,1
19.设intx=1,y=1;表达式(!
x||y--)的值是___B___。
A、0B、1C、2D、-1
20.设有定义:
inta=2,b=3,c=4;,则以下选项中值为0的表达式是___A___。
A、(!
a==1)&&(!
b==0)B、(a
c||1
C、a&&bD、a||(b+b)&&(c-a)
21.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为__D___。
A、a<>0B、!
aC、a=0D、a
22.有如下程序段
inta=14,b=15,x;
charc='A';
x=(a&&b)&&(c<'B');
执行该程序段后,x的值为___D___。
A、trueB、falseC、0D、1
23.能正确表示a和b同时为正或同时为负的逻辑表达式是___D___。
A、(a>=0‖b>=0)&&(a<0‖b<0)B、(a>=0&&b>=0)&&(a<0&&b<0)
C、(a+b>0)&&(a+b<=0)D、a*b>0
24.以下程序的输出结果是___C___。
main()
{inta=5,b=4,c=6,d;printf("%d\n",d=a>b?
(a>c?
a:
c):
(b));
}
A、5B、4C、6D、不确定
25.若整型变量a、b、c、d中的值依次为:
1、4、3、2。
则条件表达式a
a:
cc:
d的值是____A__。
A、1B、2C、3D、4
26.若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?
(x++):
(y++)中的条件表达式(x-y)等价的是___C___。
A、(x-y>0)B、(x-y<0)C、(x-y<0||x-y>0)D、(x-y==0)
27.有以下程序段
intk=0,a=1,b=2,c=3;
k=a
b:
a;
k=k>c?
k:
b;
执行该程序段后,k的值是___B___。
A、3B、2C、1D、0
28.以下程序段中与语句k=a>b?
(b>c?
1:
0):
0;功能等价的是___A__。
A、if((a>b)&&(b>c))k=1;elsek=0;
B、if((a>b)||(b>c))k=1;elsek=0;
C、if(a<=b)k=0;elseif(b<=c)k=1;
D、if(a>b)k=1;elseif(b>c)k=1;elsek=0;
29.假定w、x、y、z、m均为int型变量,有如下程序段:
w=1;x=2;y=3;z=4;
m=(ww:
x;
m=(mm:
y;
m=(mm:
z;
则该程序执行后,m的值是___D___。
A、4B、3C、2D、1
30.下面程序的输出结果是___A___。
#include
main()
{
inti=2;
printf("%d",f(i,i+1));
}
intf(inta,intb)
{
intc;
c=a;
if(a>b)c=1;
elseif(a==b)c=0;
elsec=-1;
return(c);
}
A、-1B、0C、1D、2
31.下面的程序运行结果为___D___。
main()
{
intx=3,y=0,z=0;
if(x=y+z)printf("****");
elseprintf("####");
}
A、有语法错误不能通过编译B、输出****。
C、可以通过编译,但是不能通过连接,因而不能运行。
D、输出####。
32.若执行以下程序时从键盘上输入9,则输出结果是____B__。
main()
{intn;
scanf("%d",&n);
if(n++<10)printf("%d\n",n);
elseprintf("%d\n",n--);
}
A、11B、10C、9D、8
33.下列条件语句中,功能与其他语句不同的是___D___。
A、if(a)printf("%d\n",x);elseprintf("%d\n",y);
B、if(a==0)printf("%d\n",y);elseprintf("%d\n",x);
C、if(a!
=0)printf("%d\n",x);elseprintf("%d\n",y);
D、if(a==0)printf("%d\n",x);elseprintf("%d\n",y);
34.以下程序运行后的了输出结果是______。
main()
{inta=1,b=2,c=3;
if(c=a)printf("%d\n",c);
elseprintf("%d\n",b);
}
答案:
1
35.以下程序运行后的输出结果是______。
main()
{inta=1,b=3,c=5;
if(c=a+b)printf("yes\n");
elseprintf("no\n");
}
答案:
yes
36.若从键盘输入58,则以下程序输出的结果是______。
main()
{inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
答案:
585858
37.以下程序的输出结果是______。
main()
{inta=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
答案:
0
38.若有以下程序
main()
{intp,a=5;
if(p=1!
=0)
printf("%d\n",p);
else
printf("%d\n",p+2);
}
执行后输出结果是______。
答案:
1
39.表示条件:
10答案:
(x>10&&x<100||x<0)
40.若已知a=10,b=20,则表达式!
a
答案:
1
41.表示“整数x的绝对值大于5”时值为“真”的C语言表达式是______。
答案:
x>5||x<-5
42.以下程序运行后的输出结果是______。
main()
{intp=30;
printf("%d\n",(p/3>0?
p/10:
p%3));
}
答案:
3
43.以下程序运行后的输出结果是______。
main()
{
intx,a=1,b=2,c=3,d=4;
x=(a
a:
b;x=(xx:
c;x=(d>x)?
x:
d;
printf("%d\n",x);
}
答案:
1
4.2程序填空
1.输入一个字符,判断该字符是数字、字母、空格还是其他字符。
main()
{charch;
ch=getchar();
if(ch>=’a’&&ch<=’z’||ch>=’A’&&ch<=’Z’)
printf("ItisanEnglishcharacter\n");
elseif(ch>=’0’&&ch<=’9’)
printf("Itisadigitcharacter\n");
elseif(ch==‘’)
printf("Itisaspacecharacter\n");
else
printf("Itisothercharacter\n");}
第1空:
字符在计算机中以ASCII码的形式存储。
所以当输入的字符,即ch中字符所对应的ASCII码的范围在英文字母的ASCII码的范围内即可,参照p377。
由于英文字母又分为大写字母和小写字母,因此此处用一个逻辑或表达式,表示ch中是小写字母或者大写字母,都能使得表达式成立。
ch>=97&&ch<=122||ch>=65&&ch<=90
需要注意的是,对于本题区间所对应的表达式,不可写作97<=ch<=122,也不可写作’A’<=ch<=’Z’.对于97<=ch<=122因为在计算此表达式时的顺序是从左向右,因此先计算97<=ch。
无论ch中的取值如何,表达式97<=ch的值只有两种情况:
0或1.所以无论是0还是1,都小于122,因此97<=ch<=122恒成立。
第3空,判断ch中是否为空格,也是通过ch中字符与空格字符的ASCII码来判断。
在判断表达式的值是否相等时,用关系符号==;不要用赋值符号=。
2.输入x、y两个整数,按先大后小的顺序输出x、y。
#include“stdio.h”
main()
{intx,y,*px,*py,
(1);
scanf(“%d%d”,&x,&y);
(2);(3);
if(x{p=px;px=py;py=p;}
printf(“x=%d,y=%d\n”,x,y);
printf(“MAX=%d,MIN=%d\n”,*px,*py);
}
4.3程序改错
1.编程计算下面分段函数,输入x,输出y
main()
{intx,y;
printf(“\nInputx:
\n”);
scanf(“%d”,x);//错误同上题scanf
if(x<0)
y=x-1;
elseif(x>=0||x<=10)//||表示逻辑或,当左边表达式成立或者右边表达式成立时,整个表达式成立。
&&表示逻辑与,当左边表达式和右边表达式同时成立时,整个表达式成立。
此处用逻辑表达式来表示x的区间[0,10],因此应改用逻辑与符号
y=2x-1;//C语言中乘号不能省略,且用*表示乘法运算
else
y=3x-1;//C语言中乘号不能省略,且用*表示乘法运算
printf(“y=%d”,&y);//printf与scanf不用,printf后面给出的是变量名列表或表达式列表,无需地址符号
}
第一处改为:
scanf(“%d”,&x);
第二处改为:
x>=0&&x<=10
第三处改为:
y=2*x-1;
第四处改为:
y=3*x-1;
第五处改为:
printf(“y=%d”,y);
2.求100~300间能被3整除的数的和。
main()
{intn;
longsum;//若定义变量的语句有错误,常见考点有两个:
(1)变量的类型,
(2)在定义用于存放运算结果的变量时,一定要赋初值,一般赋值0或者循环初值。
for(n=100,n<=300,n++)//for语句的格式,三个表达式之间用分号,且分号不可省略
{
if(n%3=0)//=是赋值符号,用于将右边的值赋给左边的变量;==是关系符号,用来判断两个值是否相等。
改错中if后面表达式中的赋值符号是常见的考点。
sum=sum*n;
}
printf(“%ld”,sum);
}
第一处改为:
longsum=0;
第二处改为:
for(n=100;n<=300;n++)
第三处改为:
if(n%3==0)
第四处改为:
sum=sum+n;