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时表示连续中断,判断如果当前的统计数大于之前最大的则替换,然后继续下一个位置开始的统计即可。
谢谢

相关推荐
ChoSeitaku32 分钟前
链表循环及差集相关算法题|判断循环双链表是否对称|两循环单链表合并成循环链表|使双向循环链表有序|单循环链表改双向循环链表|两链表的差集(C)
c语言·算法·链表
娅娅梨34 分钟前
C++ 错题本--not found for architecture x86_64 问题
开发语言·c++
DdddJMs__13537 分钟前
C语言 | Leetcode C语言题解之第557题反转字符串中的单词III
c语言·leetcode·题解
汤米粥39 分钟前
小皮PHP连接数据库提示could not find driver
开发语言·php
冰淇淋烤布蕾42 分钟前
EasyExcel使用
java·开发语言·excel
拾荒的小海螺1 小时前
JAVA:探索 EasyExcel 的技术指南
java·开发语言
马剑威(威哥爱编程)1 小时前
哇喔!20种单例模式的实现与变异总结
java·开发语言·单例模式
娃娃丢没有坏心思1 小时前
C++20 概念与约束(2)—— 初识概念与约束
c语言·c++·现代c++
白-胖-子1 小时前
【蓝桥等考C++真题】蓝桥杯等级考试C++组第13级L13真题原题(含答案)-统计数字
开发语言·c++·算法·蓝桥杯·等考·13级
好睡凯1 小时前
c++写一个死锁并且自己解锁
开发语言·c++·算法