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

C语言—每日选择题—Day46

第一题

1. 下列程序段的输出结果是()

#include <stdio.h>
int main() 
{int x = 1,a = 0,b = 0;switch(x) {case 0:  b++;case 1:  a++;case 2:  a++;b++;}printf("a=%d,b=%d\n", a, b);return 0;
}

A:a=2,b=1

B:a=1,b=1

C:a=1,b=0

D:a=2,b=2

答案及解析 A

switch语句记住一点就是,当满足case的条件,如果case里面没有break,就会继续执行下面的所有语句;

所以x = 1;执行了case1,case2的语句;

第二题

2. 若二维数组a有m列,则在a[ i ] [ j ]前的元素个数为()

A:j * m + i

B:i * m + j

C:i * m + j - 1

D:i * m + j + 1

答案及解析 B

第i行,前面肯定是有0~i - 1行的,因为别忘了是从0下标开始的

所以0 ~ i - 1行一共有 i 行,每行有 m 列,那前 i 行一共就是  i * m 列 

那这一行 j 前面下标是 0 ~ j - 1,就是 j 个元素;

所以在a[ i ][ j ]之前的元素一共是i *m + j

第三题

3. 以下数据中,不正确的数值或字符常量是( )

A:c

B:66

C:0xaa

D:50

答案及解析 A

A:错误,单独的c,并不是 'c' ,所以不是表示的字符,这样直接的c,可以理解为16进制,但是前面没有0x,所以也不是16进制的表示方法,既不正确;

B:就是正常的int类型的数据

C:0x开头的是表示16进制的数字,范围就是0~9,a~f

D:正常的int类型

第四题(好题)

4. 以下程序的输出的结果是()

#include <stdio.h>
int x = 3;
void incre() 
{static int x = 1;x *= x + 1;printf("%d", x);
}
int main() 
{int i;for(i = 1; i < x; i++) {incre();}return 0;
}

A:33

B:22

C:26

D:25

答案及解析 C

本题涉及同名全局变量和静态变量;

局部静态变量只会初始化一次,在局部变量和全局变量名一样的时候,优先使用局部变量

所以在incre函数内部压根不会用到全局变量的x,在main函数中的x也不会用到incre的x,因为静态变量x的生命周期和作用域都是在incre上,所以即使是静态的,但是出了自己的作用域也不会发挥作用;最后我们只需要分清,在main函数的x是全局变量,在incre函数的x是static的局部变量就OK了;

第一次进入循环就是2;

第二次进入循环,由于静态局部变量只会初始化一次,所以x依旧是2,之后进行计算得6;

打印结果就是26;

第五题

5. 有以下程序,程序运行后的输出结果是()

float fun (int x, int y) 
{return (x+y);
}
int main() 
{int a=2, b=5, c=8;printf("%3.0f\n", fun( (int)fun(a+c, b) ,  a-c) );return 0;
}

A:编译出错

B:   9

C:21

D:9.0

答案及解析 B

本题涉及的知识点还是蛮杂的,涉及了强制类型转换,格式化打印格式和函数的调用做参数;这里直接讲解重点:

大家肯定是会算出来fun里面的fun(a+c, b)的值为15.000000

所以fun( (  int)fun(a + c, b)   ,   a-c   ) = fun(  (int)15.000000  ,   a-c )

强制类型转换为int类型,舍去小数部分为 fun(15, a-c) = 9.000000;

但是在格式化打印这里是规定的  %3.0f

这里小数点后面的数字是表示 保留几位小数,所以这里为0,就是不保留小数,也就是9;

但是小数点前面的数字表示的就是右对齐,数字是几,就右对齐几个空格位置,所以这里其实是先输出3个空格位置,再输出3;

这里我用hhh来区分,看的更明显

http://www.lryc.cn/news/258770.html

相关文章:

  • flex布局,换行的元素上下设置间距
  • 【智能家居】八、监控摄像采集、人脸识别比对进行开门功能点
  • golang的文件操作
  • 数据库版本管理框架-Flyway(从入门到精通)
  • 外网访问内网服务器使用教程
  • C# Dictionary 利用 ContainsValue 查询指定值是否已经存在
  • 招不到人?用C语言采集系统批量采集简历
  • HXDSP2441-Demo板
  • 静态路由的原理和配置
  • Ubuntu20.04降低linux版本到5.4.0-26-generic
  • C++ 类型萃取
  • 【JVM从入门到实战】(四)类的生命周期
  • 2023年度美食关键词-葱油花卷
  • 「Verilog学习笔记」简易秒表
  • 《每天一个Linux命令》 -- (12) file命令
  • 如何使用ArcGIS Pro制作类似CAD的尺寸注记
  • Go语言bufio包的使用
  • 计算机网络之IP篇
  • Java中JDK类库常用的6种设计模式
  • C++ 用法全面剖析
  • 数据库结构
  • 什么是HTML以及超链接,特殊符号转义的简单使用
  • 汽车销售技巧培训应该学习哪些内容
  • 机器学习---Adaboost算法
  • Java网络编程,使用UDP实现TCP(三), 基本实现四次挥手
  • “百里挑一”AI原生应用亮相,百度智能云千帆AI加速器首个Demo Day来了!
  • PyTorch深度学习实战(25)——自编码器
  • 靠谱的车- 华为OD统一考试(C卷)
  • Apache Flink(十一):Flink集群部署-Standalone集群部署
  • vue的组件传值