2.11 运算符

2024-02-11 23:36
文章标签 运算符 2.11

本文主要是介绍2.11 运算符,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、选择题

1.1若有以下程序

main()

{   char  a='1',b='2';

    printf("%c,",b++);

    printf("%d\n",b-a);   }

程序运行后的输出结果是   C 

A)3,2     B)50,2

C)2,2     D)2,50

解析:b++是先赋值后自加,所以打印出来的是2,自加之后b=3,b-a的值是3-1=2,所以打印出2,所以结果是2,2

1.2有以下程序

main()

{

   int  a,b,d=25;

   a=d/10%9;  

   b=a&&(-1);  

   printf("%d,%d\n",a,b);

}

程序运行后的输出结果是   B  

A)6,1    B)2,1

C)6,0    D)2,0

解析:首先,a=d/10%9=25/10%9=2%9=2,b=a&&(-1),为逻辑运算,只判断真假,a=2为真,-1为真,逻辑与运算之后的结果为真,所以b=1,所以打印的结果是2,1

1.3若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a<b?a:c<d?c:d的值   A  

   A)1  B)2  c)3  D)4

解析:三目运算符(条件表达式?表达式1:表达式2;)的条件表达式成立时执行表达式1,否则执行表达式2,a<b?a:c<d?c:d为一个三目运算符作为另一个三目运算符的表达式2,所以先看a<b?:1<4成立,所以执行表达式1:a,就是1。

1.4、若给定条件表达式(m)?(a++): (a--),则其中表达式m   C  

A. 和(m= =0)等价 B. 和(m= =1)等价  

C. 和(m!=0)等价  D. 和(m!=1)等价

解析:在(m)?(a++): (a--),三目运算里条件表达式(m)?是判断m是否为真,等价于m不为0,即m!=0

1.5、以下选项中,当x为大于1的奇数时,值为0的表达式  D  

A. x%2==1      B. x/2      C. x%2!=0       D. x%2==0

解析:奇数对2取余的值一定为1,所以x%2==1为真,即表达式的值为1,x/2一定>=1,不为0,所以x/2也为真,即表达式的值也是1,同理,x%2!=0也成立,为真,即表达式的值也是1,x%2==0为假,即表达式的值为0

1.6 有如下程序段,输出结果为  C  

int i = 1;

int j = i++;

if( (i>j++) || (i++ == j) i+=j;

printf(%d\n , i );

A.   2      B.  3      C. 4       D. 5

解析:j=i++,被赋值为i的当前值1,之后i自增1为2,接下来是一个if语句,其中包含两个条件,用逻辑或||连接。C 语言中的逻辑或运算符具有短路特性,即如果第一个条件为真,则不会检查第二个条件。第一个条件是(i>j++)。由于此时i的值是 2,j的值是 1,所以i>j为真。但是,这里还有一个j++操作,它会在比较之后执行,使j自增 1 变为 2。不过,由于第一个条件已经为真,if语句中的逻辑或操作不会检查第二个条件(i++ == j)。所以i=2,j=2,然后执行i+=j,i=i+j=2+2=4

1.7 int a=12; 表达式a+=a-=a*=a的值是  C  

 A 12      B 144      C 0      D 132

解析:从右往左执行:a*=a=a*a=12*12=144,即此时a=144,然后a-=144=a-144=144-144=0,此时a=0,然后a+=0=0+0=0,此时a=0

  1.8若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a>b?a:c<d?c:d的值   B   

A)1  B)2  c)3  D)4

解析:首先a>b?:1>4不成立,所以执行表达式2(c<d?c:d):c<d?:3<2不成立,执行这个里面的表达式2(d),即为2

1.9 有以下程序

main()

{    int  i=1,j=2,k=3;

     if(i++==1&&(++j==3||k++==3))

        printf("%d  %d  %d\n",i,j,k);

}

程序运行后的输出结果是   D  

A)1  2  3    B)2  3  4

C)2  2  3    D)2  3  3

解析:i++==1&&(++j==3||k++==3)先判断i++==1成立,之后i自加为2,(++j==3||k++==3)先判断++j==3成立,j=3所以后面的k++==3就不用判断了,所以k还是3,即输出2,3,3

2、填空题

2.1设a=12,n=5,则计算了表达式a%=(n%=2)后,a的值为  0  ,计算了表达式a+=a-=a*=a后,a的值为  0  

解析:a%=(n%=2):n初始值为 5,n%2 的结果是 1(5 除以 2 的余数是 1),因此n=1。即a%=1,=a%1=0任何数除以 1 的余数都是 0(除了 0 本身)

a+=a-=a*=a:从右往左执行:a*=a=a*a=12*12=144,即此时a=144,然后a-=144=a-144=144-144=0,此时a=0,然后a+=0=0+0=0,此时a=0

2.2 设x=2.5,a=7,y=4.7,则x+a%3*(int)(x+y)%2/4的值为  2.75 

解析:x+a%3*(int)(x+y)%2/4=x+1*(int)(x+y)%2/4=x+1*11%2/4=x+1/4=2.5+0.25=2.75

2.3 设a=2,b=3,x=3.5,y=2.5,则(float)(a+b)/2+(int)x%(int)y的值为  3.5 

解析:(float)(a+b)/2+(int)x%(int)y=(2+3)/2+3%2=2+1=3.5

2.4以下程序运行后的输出结果是  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);

}

解析:c=(a%b<1)||(a/b>1):首先a%b=10%20=10>1,所以表达式a%b<1为假,a/b=10/20=0,所以a/b>1也为假,在逻辑运算或的规律是有真则真,全假才假,所以表达式(a%b<1)||(a/b>1)为假,所以c=0,即打印出来的是10 20 0

2.5以下程序运行时若从键盘输入:B33<回车>.输出结果是   

#include "stdio.h"

main()

{

   char a;

        int   b;

   a=getchar();   

 scanf("%d",&b);   

   a = a - 'A' + '0';

   b = b * 2;

   printf("%c  %c\n",a,b);

}

解析:getchar()函数读取第一个字符 'B',并将其赋值给a。scanf("%d",&b);读取接下来的整数 "33",并将其赋值给b。a的值从 'B' 转换为对应的数字。转换的逻辑是a = a - 'A' + '0';。因为 'B' 的 ASCII 值是 66,'A' 的 ASCII 值是 65,所以'B'-'A'的结果是 1。再加上 '0'(其 ASCII 值是 48),最终a的值变为 1 + 48 = 49,即字符 '1'。a的值从 33 乘以 2,得到 66。

2.6设a、b、c均为int型变量且a=7.5, b=2,c=3.6, 则表达式a>b  && c>a  || a<b  &&  !c>b的值是 0  

解析:a=7.5, b=2,c=3.6,a>b 是7>2,为真。c>a 是3>7,为假,a<b 是7<2,为假。!c>b是!3>2,首先!3是0,然后0>2是假。a>b  && c>a结果是假。a<b  &&  !c>b是 结果也是假,因此,表达式a>b  && c>a  || a<b  &&  !c>b的值是假。

2.7设a、b、c均为int型变量且a=6, b=4,c=2, 则表达式!(a-b)+c-1  && b+c/2的值是

解析:!(a-b)+c-1  && b+c/2=!(6-4)+2-1&&4+2/2=!2+2-1&&4+1=0+2-1&&5=1&&5=1

2.8设a、b均为int型变量且a=2, b=4, 则表达式!(x=a) || (y=b)  && 0的值是  0  

解析:!(x=a)|| (y=b)  && 0=!(x=2)||(y=4)&&0=0||1&&0=1&&0=0

2.9设a、b、c均为int型变量且a=1, b=4,c=3, 则表达式!(a<b)  || !c && 1的值是  0  

解析:!(a<b)  || !c && 1=!(1<4)||!3&&1=!1||!3&&1=0||0&&1=0&&1=0

2.10 若有条件“2<x<3或x<-10”,其对应的C语言表达式是

解析:2<x<3为x>2&&x<3,或x<-10是||x<-10,即表达式为:x>2&&x<3||x<-10

3、填空题

3.1、 编写程序,从标准输入读取字符,并把它们写到标准的输出中。除了大写字母变换成小写字母外,所有字符的输出形式与它们的输入形式相同。

代码:

#include <iostream>
using namespace std;
int main()
{char str;//定义一个字符串存储输入的数据while(cin >> str)//从终端获取输入的字符串{// 如果字符是大写字母,则转换为小写字母if (str>='A'&&str<='Z'){str=str-'A'+'a';}// 输出字符cout << str;}return 0;
}

结果:

4、分析题

4.1、  思考一下,有两个整形变量ab,如何在不使用第3个变量的情况下,实现ab变量值的交换

   方法一: 异或

#include <iostream>
using namespace std;
int main()
{int a=10,b=20;a=a^b;b=a^b;a=a^b;cout << a << " " << b << endl;return 0;
}

结果:

方法二:加减

#include <iostream>
using namespace std;
int main()
{int a=10,b=20;a=a+b;b=a-b;a=a-b;cout << a << " " << b << endl;return 0;
}

结果:

这篇关于2.11 运算符的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/701120

相关文章

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Kotlin运算符重载函数及作用场景

《Kotlin运算符重载函数及作用场景》在Kotlin里,运算符重载函数允许为自定义类型重新定义现有的运算符(如+-…)行为,从而让自定义类型能像内置类型那样使用运算符,本文给大家介绍Kotlin运算... 目录基本语法作用场景类对象数据类型接口注意事项在 Kotlin 里,运算符重载函数允许为自定义类型重

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短

【重学 MySQL】十九、位运算符的使用

【重学 MySQL】十九、位运算符的使用 示例检查权限添加权限移除权限 在 MySQL 中,位运算符允许你直接在整数类型的列或表达式上进行位级操作。这些操作对于处理那些需要在二进制表示上进行直接修改或比较的场景特别有用,比如权限管理、状态标记等。 &(位与) 对两个数的二进制表示进行位与操作。只有两个相应的二进制位都为 1 时,结果的该位才为 1,否则为 0。 |(位

C语言程序设计(数据类型、运算符与表达式)

一、C的数据类型 C语言提供的数据类型: 二、常量和变量 2.1常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量。 常量区分为不同的类型: 程序中用#define(预处理器指令)命令行定义变量将代表常量,用一个标识符代表一个常量,称为符合常量。 2.2变量 变量代表内存中具有特定属性的一个存储单元,用来存放数据,在程序运行期间,这些值是可以 改变的。 变

第二十四章 rust中的运算符重载

注意 本系列文章已升级、转移至我的自建站点中,本章原文为:rust中的运算符重载 目录 注意一、前言二、基本使用三、常用运算符四、通用约束 一、前言 C/C++中有运算符重载这一概念,它的目的是让即使含不相干的内容也能通过我们自定义的方法进行运算符操作运算。 比如字符串本身是不能相加的,但由于C++中的String重载了运算符+,所以我们就可以将两个字符串进行相加、但实际

《C++中的移动构造函数与移动赋值运算符:解锁高效编程的最佳实践》

在 C++的编程世界中,移动构造函数和移动赋值运算符是提升程序性能和效率的重要工具。理解并正确运用它们,可以让我们的代码更加高效、简洁和优雅。 一、引言 随着现代软件系统的日益复杂和对性能要求的不断提高,C++程序员需要不断探索新的技术和方法来优化代码。移动构造函数和移动赋值运算符的出现,为解决资源管理和性能优化问题提供了有力的手段。它们允许我们在不进行不必要的复制操作的情况下,高效地转移资源

Java基础--基本运算符介绍

Java运算符 用于指明对于操作数的运算方式。 分类: 按照操作数的数目来进行分类: 单目a++ 双目a+b 三目(a>b)?x:y; 按照运算符的功能来进行分类: 算术运算:+ - * / %(取余)++ – 如: int x=1; x=x+1;//x空间内的值,自己增加了一个 x++;//x空间内的值,自增一个 ++x;//对于x空间内的值来讲都是一致,最终的结果都自