逻辑表达式
逻辑表达式的定义:
逻辑表达式用于表示更复杂的条件,主要由与(&&)、或(||)、非(!)三种逻辑运算符组成。这些运算符允许我们组合多个条件,从而构建出能够表达更复杂逻辑关系的表达式。
逻辑运算符说明:
与(&&):二元运算符,当且仅当两个操作数都为真时,结果才为真。例如,p&&q,如果p和q都为真,则结果为真。
或(||):二元运算符,当至少一个操作数为真时,结果就为真。
例如,p||q,如果p或q(或两者)为真,则结果为真。
非(!):一元运算符,用于反转操作数的真假值。
例如,!p,如果p为真,则结果为假;如果p为假,则结果为真。
逻辑表达式的运算优先级:
非(!)运算的优先级高于算术运算符。与(&&)运算的优先级高于或(||)运算。
与(&&)和或(||)运算的优先级都低于关系运算符(如>、<、==等)。
逻辑表达式的运算对象与结果:
逻辑表达式的运算对象可以是任意类型的数据。在C++等编程语言中,0通常被视为假(false),而非0值被视为真(true)。
逻辑表达式的结果是一个布尔值,即真(true)或假(false)。
逻辑表达式的运算次序:
逻辑表达式遵循从左到右的运算次序。在某些情况下,如果左子表达式的值已经能够确定整个表达式的值(例如,在&&运算中,如果左子表达式为假,则整个表达式的结果必然为假,无需再计算右子表达式),则这种“惰性求值”策略会提高运算效率。
逻辑表达式的应用示例:
判断输入是否为整数:通过逻辑表达式和循环结构,可以确保用户输入的数值在合法范围内(如整数范围内)。
示例代码中使用了一个is_int函数来判断输入的double类型数值是否在int类型的范围内,并通过逻辑表达式和循环结构来反复提示用户输入,直到输入合法为止。
求两个数中的最大值:使用条件表达式(也称为三元运算符)可以简洁地求出两个数中的最大值,而无需使用if-else分支结构。示例代码中通过输入两个整数,并使用条件表达式将较大的数赋给变量c,然后输出该值。
条件表达式:
条件表达式(也称为三元运算符)的格式为:表达式1?表达式2:表达式3。
其执行过程为:如果表达式1为真,则整个表达式的结果为表达式2的值;否则,结果为表达式3的值。
条件表达式常用于取代简单的两分支情况,使代码更加简洁明了。
总结:
逻辑表达式和条件表达式是编程中常用的工具,它们允许我们以更简洁、更直观的方式表达复杂的逻辑关系和条件判断。通过合理使用这些表达式,我们可以编写出更加高效、易读的代码。
逻辑运算符两侧运算对象的数据类型有哪些
第一章C语言概述
一单项选择题
1.一个C程序的执行是从(A)。
A)本程序的main函数开始,到main函数结束
B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C)本程序的main函数开始,到本程序文件的最后一个函数结束
D)本程序文件的第一个函数开始,到本程序的main函数结束
2.以下叙述正确的是(C)。
A)在C程序中,main函数必须位于程序的最前面。
B)C程序的每行中只能写一条语句
C)C语言本身没有输入输出语句
D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误。
3.以下叙述不正确的是(D)。
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面。
4.C语言规定,在一个源程序中,main函数的位置(C)。
A)必须在最开始B)必须在系统调用的库函数的后面。
C)可以任意D)必须在最后
5.一个C语言源程序是由(B)。
A)一个主程序和若干子程序组成B)函数组成。
C)若干过程组成D)若干子程序组成
二填空题
1.C源程序的基本单位是函数。
2.一个C源程序中至少应包括一个main函数。
3.在一个C源程序中,注释部分两侧的分界符分别为/*和*/。
4.一个函数是由两部分组成的,它们分别是函数名和函数体。
5.在C语言中,一个函数的函数体一般包括声明部分和执行部分。
第三章数据类型、运算符与表达式
一单项选择题
1.下面四个选项中,均不是c语言关键字的选项是(A)。
A)defineIFTypeB)getccharprintf。
C)includescanfcaseD)whilegopow。
2.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符(C)。
A)必须为字母B)必须为下划线
C)必须为字母或下划线D)可以是字母、数字和下划线中任一种字符。
3.下列四个选项中,均是C语言关键字的选项是(B)。
A)autoenumincludeB)switchtypedefcontinue。
C)signedunionscanfD)ifstructtype。
4.下面四个选项中,均是不合法的用户标识符的选项是(C)。
A)AP_0doB)floatla0_A
C)b-agotointD)_123tempint。
5.以下有4组用户标识符,其中合法的一组是(C)。
A)For-subCaseB)4dDOSize。
C)f2_G3IFabcD)WORDvoiddefine。
二填空题
1.若x和a均是int型变量,则计算表达式(1)后的x值为12,计算表达式(2)后的x值为4。
(1)x=(a=4,6*2)
(2)x=a=4,6*2
2.若a是int型变量,则表达式(a=4*5,a*2),a+6的值为26。
3.若b是int型变量,则表达式b=25/3%3的值为2。
4.若s是int型变量,且s=6则下面表达式s%2+(s+1)%2的值为1。
5.若a,b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为6,b值为4,c值为2。
6.若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为10,n的值为6。
7.若有定义:intb=7;floata=2.5,c=4.7;则表达式a+(int)(b/3*(int)(a+c)/2)%4的值为4.5。
8.若有定义:inta=2,b=3;floatx=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值为3.5。
9.若有定义:intx=3,y=2;floata=2.5,b=3.5;则表达式(x+y)%2+(int)a/(int)b的值为1。
10.若x和n均是整型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为0。
第四章最简单的C程序设计——顺序程序设计
一单项选择题1~5BDDAB
1.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列,如果字符串长度大于5,则输出按方式(B)。
A)从左起输出该字符串,右补空格
B)按原字符长从左向右全部输出
C)右对齐输出该字串,左补空格
D)输出错误信息
2.已有定义inta=-2;和输出语句printf(“%8x”,a);以下正确的叙述是(D)。
A)整型变量的输出形式只有%d一种
B)%x是格式符的一种,它可以适用于任何一种类型的数据。
C)%x是格式符的一种,其变量的值按十六进制输出,但%8x是错误的。
D)%8x不是错误的格式符,其中数字8规定了输出字段的宽度。
3.若x,y均定义成int型,z定义为double型,以下不合法的scanf函数调用语句是。
(D)。
A)scanf(“%d%x,%le”,&x,&y,&z);。
B)scanf(“%2d*%d,%lf”,&x,&y,&z);。
C)scanf(“%x%*d%o”,&x,&y);。
D)scanf(“%x%o%6.2f”,&x,&y,&z);。
4.以下程序的输出结果是(D)。
main()
{intk=17;
printf("%d,%o,%x\n",k,k,k);
}
A)17,021,0x11B)17,17,17。
B)17,0x11,021D)17,21,11。
5.下列程序的运行结果是(B)。
#include<stdio.h>。
main()
{inta=2,c=5;
printf("a=%d,b=%d\n",a,c);。
}
A)a=%2,b=%5B)a=2,b=5
C)a=d,b=dD)a=2,c=5
二填空题
1.下面程序的运行结果是i:dec=4,oct=4,hex=4,unsigned=65531。
main()
{
shorti;
i=-4;
printf(“\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\n”,i,i,i,i);。
}
2.若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是5.0,4,c=3。
intb,c;floata;
scanf("%f,%d,c=%d",&a,&b,&c);
3.下列程序的输出结果是16.00,请填空。
main()
{inta=9,b=2;
floatx=6.6,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);。
}
4.在printf格式字符中,只能输出一个字符的格式字符是c;用于输出字符串的格式字符是s;以小数形式输出实数的格式字符是f;以标准指数形式输出实数的格式字符是e。
三编程题
1.若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。
想得到以下的输出格式和结果,请写出完整的程序(包括定义变量类型和设计输出)。
要求输出的结果如下:
a=<空格>3<空格><空格>b=<空格>4<空格><空格>c=<空格>5。
x=1.200000,y=2.400000,z=-3.600000。
x+y=<空格>3.60<空格><空格>y+z=-1.20<空格><空格>z+x=-2.40。
u=<空格>51274<空格><空格>n=<空格><空格><空格>128756。
c1=a<空格>or<空格>97(ASCII)。
c2=B<空格>or<空格>98(ASCII)。
/*
voidmain()
{
inta,b,c;
unsignedu;
longintn;
floatx,y,z;
charc1,c2;
a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1='a',c2='b';。
printf("a=%2db=%2dc=%2d\n",a,b,c);。
printf("x=%f,y=%f,z=%+f\n");。
printf("x+y=%5.2fy+z=%+5.2fz+x=%+5.2f\n",x+y,y+z,z+x);。
printf("u=%6dn=%9d\n");。
printf("c1=%cor%d(ASCII)\n",c1,c1);。
printf("c2=%cor%d(ASCII)\n",c2-32,c2);。
}
*/
2.输入一个华氏温度,要求输出摄氏温度。公式为。
输出要有文字说明,取2位小数。
/*
voidmain()
{
floatc,f;
printf("输入一个华氏温度:\n");。
scanf("%f",&f);。
c=5.0/9.0*(f-32);
printf("\n输入的华氏温度%.2f,摄氏温度为:%.2f\n",f,c);。
}
*/
3.编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。
/*
voidmain()
{
charc1,c2;
c1=getchar();
c2=getchar();
putchar(c1);
putchar(c2);
printf("\nc1=%c;c2=%c\n",c1,c2);。
}
*/
第五章选择结构程序设计
一单项选择题
1.逻辑运算符两侧运算对象的数据类型是(D)。
A)只能是0或1
B)只能是0或非0正数
C)只能是整型或字符型数据
D)可以是任何类型的数据
2.已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!y)的值是(C)。
A)0B)语法错C)1D)“假”
3.已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是(B)。
if(x>y)
z=x;x=y;y=z;
A)x=10,y=20,z=30B)x=20,y=30,z=30。
C)x=20,y=30,z=10D)x=20,y=30,z=20。
4.执行下列语句后a的值为(2),b的值为(1)。(C)。
inta,b,c;
a=b=c=1;
++a||++b&&++c;
A)错误1B)22C)21D)11
5.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是(C)。
A)A%2==1B)!(A%2==0)C)!(A%2)D)A%2。
二填空题
1.若从键盘输入58,则以下程序输出的结果是585858。
main()
{inta;
scanf(“%d”,&a);
if(a>50)printf(“%d”,a);。
if(a>40)printf(“%d”,a);。
if(a>30)printf(“%d”,a);。
}
2.下面程序的运行结果是-1。
main()
{
inta=2,b=3,c;
c=a;
if(a>b)c=1;
elseif(a==b)c=0;
elsec=-1;
printf(“%d\n”,c);。
}
3.以下程序实现:输入三个整数,按从大到小的顺序进行输出。请填空。
main()
{
intx,y,z,c;
scanf(“%d%d%d”,&x,&y,&z);。
if(x<y){c=x;x=y;y=c;}。
if(x<z){c=x;x=z;z=c;}。
if(y<z){c=y;y=z;z=c;}。
printf(“%d%d%d”,x,y,z);。
}
4.如果运行时输入字符Q,则下面程序的运行结果是Q。
main()
{
charch;
scanf(“%c”,&ch);
ch=(ch>=‘A’&&ch<=‘Z’)?(ch+32):ch;。
ch=(ch>=‘a’&&ch<=‘z’)?(ch-32):ch;。
printf(“%c”,ch);
}
5.若x为int类型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式x==0。
第六章循环控制
一单项选择题
1.下面程序段的运行结果是(C)。
intn=0;
while(n++<=2);
printf(“%d”,n);
A)2B)3C)4D)有语法错
2.设有程序段:
t=0;
while(printf(“*”))
{t++;
if(t<3)break;
}
下面描述正确的是(D)。
A)其中循环控制表达式与0等价
B)其中循环控制表达式与'0'等价。
C)其中循环控制表达式是不合法的
D)以上说法都不对
3.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空(B)。
#include<stdio.h>。
main()
{inta,b,t;
scanf(“%d%d”,&a,&b);
while(___________)
{if(a>b)
{t=a;a=b;b=t;}
printf(“%d,%d\n”,a,b);。
scanf("%d%d",&a,&b);。
}
}
A)!a=bB)a!=bC)a==bD)a=b。
4.C语言中,while和do-while循环的主要区别是(A)。
A)do-while的循环体至少无条件执行一次。
B)while的循环控制条件比do-while的循环控制条件更严格
C)do-while允许从外部转到循环体内。
D)do-while的循环体不能是复合语句。
5.对以下程序段描述正确的是(C)。
x=-1;
do
{x=x*x;}
while(!x);
A)是死循环B)循环执行二次
C)循环执行一次D)有语法错误
二填空题
1.以下程序运行后的输出结果是52。
main()
{inti=10,j=0;
do
{j=j+i;i--;}
while(i>2);
printf("%d\n",j);。
}
2.设有以下程序:
main()
{intn1,n2;
scanf("%d",&n2);。
while(n2!=0)
{n1=n2%10;
n2=n2/10;
printf("%d",n1);。
}
}
程序运行后,如果从键盘上输入1298,则输出结果为8921。
3.若输入字母b,程序输出结果为b,B;若输入字符*,程序将怎样等待重新输入。
#include<stdio.h>。
main()
{charc1,c2;
c1=getchar();
while(c1<97||c1>122)。
c1=getchar();
c2=c1-32;
printf("%c,%c\n",c1,c2);。
}
4.用以下程序计算1到100的整数的累加和。
main()
{inti=1,sum=0;
for(;i<=100;)
{sum+=i;
i++;
}
printf("sum=%d\n",sum);。
}
5.以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束。请填空。
main()
{floatx,amax,amin;
scanf(“%f”,&x);
amax=x;
amin=x;
while(x>=0)
{if(x>amax)amax=x;。
if(x<amin)amin=x;
scanf(“%f”,&x);
}
printf("amax=%f\namin=%f\n",amax,amin);。
}
还没有评论,来说两句吧...