c语言经典测试题9

1.题1

cpp 复制代码
#include <stdio.h>
int main()
{
int i = 1;
sizeof(i++);
printf("%d\n", i);
return 0;
}

上述代码运行结果是什么呢?

我们来分析一下:其实这题的难点就是sizeof操作后i的结果是否会改变,首先我们创建了一个整型i,我们知道i++为后置++,先试用后加1,我们知道一般表达式的运算是在运行时执行的,而sizeof是一个编译阶段就执行的运算符,在其内的任何运算都不执行,只推测出其中表达式结果的类型求其大小,故前后i的值不变。所以i的值还是为1.

我们运行看看:

2.题2

cpp 复制代码
int main()
{
char c='A';
if('0'<=c<='9') printf("YES");
else printf("NO");
return 0;
}

上述代码的运行结果是什么呢?

我们来分析一下:上述代码中字符A的ASCLL值为65,if的判断条件为'0'<=c<='9'大家这个时候可能以为这还不简吗?不就是判断ASCLL值的大小,那运行结果应该为NO,事实是这样吗?

我们运行看看:

这是怎么回事呢?其实这个if的判断条件的运算顺序是不同的,'0'<=c<='9'并非判断x大于等于字符0,小于等于字符9,而是先执行'0'<=c,使用这个表达式的结果再和'9'比较,'0'的ASCII码值是48,'A'的ASCII码值是'65',故'0'<c是真值1,1无疑是小于字符'9'的,最终是真。

3.题3

cpp 复制代码
unsigned short x = 65530;
unsigned int y = x;

假设编译器规定 int 和 short 类型长度分别为32位和16位,若有下列C语言语句,则 y 的机器数为:

A: 0000 7FFA B: 0000 FFFA C: FFFF 7FFA D: FFFF FFFA

我们来分析一下:unsigned short类型的x变量2个字节保存了65530,十六进制形式为0xFFFA,x给y赋值时会整型提升,而无符号数在提升时高位补0,其实就相当于把x的值放在了y的低2个字节的空间中,故选B

4.题4

cpp 复制代码
#include<stdio.h>
int main()
{
int n = 1001;
int ans = 0;
for(int i = 1; i <= n; ++i)
{
ans ^= i % 3;
}
printf("%d",ans);
return 0;
}

上述代码的运行结果是什么呢?

我们来分析一下:i % 3 的值按1、2、0循环,可推算出ans按1、3、3、2、0、0循环,循环进行1001次,而1001%6=5,也就是ans按规律得到的第5个数为最终结果,故ans=0

5.题5

给定一个二进制数组, 计算其中最大连续 1 的个数。示例: 输入:[1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.

cpp 复制代码
int findMaxConsecutiveOnes(int* nums, int numsSize){
int max_count = 0, cur_size = 0;;
for (int i = 0; i < numsSize; i++) {
if (nums[i] == 1) {
cur_size++;
}else {
max_count = max_count > cur_size ? max_count : cur_size;
cur_size = 0;
}
}
max_count = max_count > cur_size ? max_count : cur_size;
return max_count;

这题的思路较为简单,统计连续1的个数,遇到0时表示连续中断,判断如果当前的统计数大于之前最大的则替换,然后继续下一个位置开始的统计即可。
谢谢

相关推荐
lyw205619几秒前
微服务八股(自用)
java·开发语言
dot to one2 分钟前
Qt 中 QWidget涉及的常用核心属性介绍
开发语言·c++·qt
液态不合群9 分钟前
理解 C# 中的各类指针
java·开发语言·c#
橙子1991101618 分钟前
Kotlin 中的作用域函数
android·开发语言·kotlin
zimoyin18 分钟前
Kotlin 懒初始化值
android·开发语言·kotlin
黄雪超44 分钟前
JVM——方法内联之去虚化
java·开发语言·jvm
h汉堡1 小时前
C/C++内存管理
java·c语言·开发语言·c++·学习
旋风小飞棍1 小时前
如何在sheel中运行spark
大数据·开发语言·scala
xinxiyinhe1 小时前
内存泄漏与OOM崩溃根治方案:JVM与原生内存池差异化排查手册
java·开发语言·jvm
水水沝淼㵘1 小时前
嵌入式开发学习日志(数据结构--顺序结构单链表)Day19
linux·服务器·c语言·数据结构·学习·算法·排序算法