当前位置: 首页 > news >正文

C语言--每日选择题--Day28

第一题

1. 设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(  )

A:6.500000

B:6

C:5.500000

D:6.000000

答案及解析 D

本题考查的是不同数据类型之间的变量进行运算时发生的类型转换;

不涉及强制类型转换的规则:

1. char --> int --> float --> double;

2. 有符号会转换为无符号

强制类型转换只针对一个变量,括号后面是谁就针对谁;

本题为(int)a + b / b;

首先a被强制类型转换为int类型,会直接保留整数部分,a = 5;

b / b = 1.000000 因为b为double类型;

所以(int)a + b / b = 5 + 1.000000 ;

int 隐式类型转换为double

(int)a + b / b = 6.000000

第二题(易错题)

2. s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S。则以下选项中正确的是()

A:if(s1>s2) S;

B:if(strcmp(s1,s2)) S;

C:if(strcmp(s2,s1)>0) S;

D:if(strcmp(s1,s2)>0) S;

答案及解析 D

这里考的一方面是对strcmp函数的认识,另一方面考的就是在if语句中的真假;

strcmp函数,比较两个字符串的大小,通过两个字符串的第一个字符的ASCII值比较,若相等就继续往下比,左操作数的大,就是左字符串大,反之亦然;

if中的真假:0为假,非0为真

所以本题的B选项是最容易错的选项,如果s1 < s2 ,返回值为负数,但是在if语句中负数也为真值,所以会执行S,B选项错误;

第三题(易错题)

3. i = 1,j = 0 是正确的吗?

char c = 48;
int i = 1, j = 10;
j = !(c > j)&&i++;

A:正确

B:错误

答案及解析 A

本题中一是要看优先级,二是考查结合性

相关博客:

C语言操作符优先级表格(建议收藏,每次看一下)-CSDN博客

首先,优先级:括号 > ++ > ! >&&

所以先算括号里的是必然的,j = !1 && i++;

那之后就是要根据优先级去算i++了吗?

当然不是,因为这时候我们的 !1和i++是&&的两个操作数;

先要遵守结合性;&&的结合性也就是运算顺序:从左到右

所以会先算!1 = 0;

j = 0 && i++;

而左边算完之后为0,又因为&&是有0就是0,岁月右边的i++不会计算;

最后i = 1, j = 0;

第四题

4. 若a是float型变量,b是unsigned型变量,以下输入语句中合法的是( )

A:scanf("%6.2f%d", &a, &b);

B:scanf("%f%n", &a, &b);

C:scanf("%f%3o", &a, &b);

D:scanf("%f%f", &a, &b);

答案及解析 C

单独的unsigned是unsigned int的缩写,表示无符号整数;

A:%6.2f,在scanf中,不需要精度,所以错误;

B:%n是用来统计字符个数的,不参加输入输出语句;

C:正确,八进制也是一个整数;

D:格式不匹配;

第五题

5. 下面程序执行后的输出值为()

#define  SUM(x) 3*x*x+1
int main() 
{int i=5, j=8;printf("%d\n", SUM(i+j));return 0;
}

A:64

B:508

C:420

D:其他几项都不对

答案及解析 A

记住一点,define就是替换,不要自己添加符号;

所以SUM(i+j) 被替换为 3 * i + j * i + j + 1 = 3 * 5 + 8 * 5 + 8 + 1 = 64

相关文章:

  • C语言进阶之笔试题详解(2)
  • el-select多选multiple数据无法删除,回显成功,但无法编辑,选中和删除都没反应
  • 7-2 凯撒密码(生成字母映射字典)
  • CSS实现一些小功能
  • 磁盘配额Quota案例,针对组,用户设置宽限期限,限制值的报表
  • 记一次mysql 3306端口映射到外网 frp
  • Sass基础知识之【变量】
  • 如何利用BI系统
  • Java Web 学习之路(1) —— 前端篇
  • vue分环境打包及案例代码
  • 网络入门---网络编程预备知识
  • 数据结构-选择排序(简单选择、堆)
  • Oracle通过MyBatis执行批量插入与更新问题
  • rabbitmq-server-3.11.10.exe
  • 深度学习-模型调试经验总结
  • 〔开发系列〕一次关于小程序开发的深度总结
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • css选择器
  • C语言笔记(第一章:C语言编程)
  • Git的一些常用操作
  • Intervention/image 图片处理扩展包的安装和使用
  • ucore操作系统实验笔记 - 重新理解中断
  • 排序算法学习笔记
  • 前端相关框架总和
  • 前端之React实战:创建跨平台的项目架构
  • 用jQuery怎么做到前后端分离
  • 数据库巡检项
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #每日一题合集#牛客JZ23-JZ33
  • (145)光线追踪距离场柔和阴影
  • (9)STL算法之逆转旋转
  • (补)B+树一些思想
  • (待修改)PyG安装步骤
  • (独孤九剑)--文件系统
  • (二)Linux——Linux常用指令
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NetCore部署微服务(二)
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • [2023年]-hadoop面试真题(一)
  • [acm算法学习] 后缀数组SA
  • [Angular 基础] - 数据绑定(databinding)
  • [BZOJ 3680]吊打XXX(模拟退火)