C语言面试题---数组

c语言指针与数组面试题讲解 C语言指针与数组面试题讲解 阅读详情

版本声明:本文转载于公众号TeachPlus

C语言面试题---数组

阅读下面这题:
有一个数组:int arr[20] ={1,0,1,0,0,0,1,1,1,0,0,1,1,0,1,0,0,1,1,1};
数组中全部都是由0和1组成,是写程序,计算数组中0,1的个数
要求:
不得使用任何形式的判断语句
包括但不限于if、switch、三目与算符,或以循环代替判断的方法。

本题解析

# include <stdio.h>
int  main()
{
   int arr[20] = {1,0,1,0,0,0,1,1,1,0,0,1,1,0,1,0,0,1,1,1};
   int tmp[2] = {0,0};
   int i = 0;
   for(i = 0 ; i < 20 ; i++)
   {
       tmp[arr[i]]++;
   }
   printf("there are %d 0,and %d 1\n",tmp[0],tmp[1]);
   return 0;
}
在这道题目中,巧妙的使用了了一个数组作为另外一个数组的下标,
tmp数组只有两个元素,因此下标的取值范围只有0和1,
而arr数组中的元素同样也只有0和1,所以可以遍历arr数组,
并且以arr数组中的元素作为tmp数组的下标,
那么tmp[0]中存储的值就是arr数组中0的个数,
同样的tmp[1]中存储的值就是arr数组中1的个数了。

相关知识点

数组的各种操作,可以直接考察出面试者对于算法的掌握程度,
因此在面试中出现的频次非常高,几乎可以认为是必出的考题。
下面还有几道关于数组的面试题,大家也可以一起看看
先看一道数组求和的题目给定一个含有n个元素的整型数组a,求a中所有元素的和。
这道题目很简单,是的,的确简单,但是为什么还要说呢,因为如果你直接用循环进行累加,
非常简单,但是如果仅仅这么简单的话,也体现不出优势了。
C语言初阶面试题---囊括90%知识点 函数指针的本质是一个指针变量,该指针指向这个函数,总结就是函数指针就是指向函数的指针**定义格式:**类型说明符(*函数名)(参数)**详细了解:**https://huaweicloud.csdn.net/63a56868b878a54545946a07.html?defaultdefault函数指针是需要把一个函数的地址赋值给它,有两种写法:调用函数指针的方式也有两种:x = fun();示例:return x+y;return x-y;//函数指针//第一种写法。 阅读详情

相关推荐

WSL2迁移后用户名不见了?一招教你快速恢复Ubuntu22.04默认用户

本文针对WSL2迁移后Ubuntu 22.04默认用户名丢失的常见问题,提供了详细的诊断与修复方案。通过分析迁移底层逻辑,指导用户使用`ubuntu2204.exe config --default-user`命令或配置`/etc/wsl.conf`文件快速恢复用户身份,并涵盖权限修复、冲突解决及自动化迁移脚本等进阶内容,确保子系统迁移后环境完整可用。

web39explorer的博客 527

面试题:给定一个数组,数组中只包含01。请找到一个最长的子序列,其中01的数量是相同的

注释:如果只考虑从0到i的求,显然只要求0就可以得到从0开始的一个最长子序列;但如果不是从0开始呢?假设我们得到sum[j]的值,这时候我们在往后遍历的过程中又得到了另外一个位置i的求值sum[i]同样等于sum[j],那就说明从j到i的求0。注意有个初始条件是第一次出现sum==0时的位置求解。 面试题:给定一个数组,数组中只包含01。请找到一个最长的子序列,其中01的数...

心之所向 9690

避坑指南:RK3568双网口RMII模式DTS配置常见错误与调试技巧

本文详细解析了RK3568双网口RMII模式DTS配置中的常见错误与调试技巧,涵盖时钟配置、PHY识别、复位时序等关键问题。通过实战案例系统化调试方法,帮助开发者快速解决百兆以太网连接不稳定、PHY识别失败等典型问题,提升开发效率。

weixin_42549037的博客 326

【保姆级讲解】C语言---数组精华面试题

【保姆级讲解】C语言---数组精华题荟

weixin_51177279的博客 1619

【C语言学习笔记】:8道经典的数组、指针相关面试题

复制完后,实参的地址形参的地址没有任何联系,对形参地址的修改不会影响到实参,但是对形参地址所指向对象的修改却能直接反映在实参中,这是因为形参所指向的对象就是实参的对象。前面我们说过,指针传递本质上也是值传递,要想在子函数修改str的值,必须要传递指向str的指针,因此子函数要传递的是str的地址,这样通过指针方式修改str的值,将malloc的内存首地址赋值给str。"进行了拷贝,该局部变量是存放在栈中的,当函数退出时,栈被清空,p会被释放,因此返回的是一个已经被释放的内存地址,这样做是错误的。

Jiangziyadizi的博客 770

【C习题】经典数组与指针面试题(万字)

经典数组指针面试题

Shun_Hua的博客 696

经典面试题之C语言数组

题目 有一个数组int arr[20] = {1,0,1,1,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,1};数组中的全部都是01组成,试写程序计算数组中的01个数。要求:不能使用任何形式的判断语句 解答 #include<stdio.h> int main(void) { int arr[20] = {1,0,1,1,1,1,1,1,1,0,0,1,0,0...

dong223的博客 829

c语言如何删除数组中的某一个元素_这是国外某嵌入式公司的C语言面试题,很多程序员都做错了...

在C语言程序开发中,程序员可以在定义数组时对其初始化,并且允许只对一部分元素初始化,未显式给定初值的元素将被置零,例如:int a[5] = {1, 2};这行C语言代码执行完毕后,数组 a 中的元素将是 1,2,000。这是C语言数组的基本知识点。但是遗憾的是,从我昨天在圈子里分享的一个面试题来看,仍有部分C语言程序员认为未显式给定初值的数组元素值是未定义的。下面是国外某嵌入式公司的面试题,...

weixin_39970855的博客 1473

初阶数据结构(C语言实现)——3.2数组相关面试题

为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。然后返回 nums 中唯一元素的个数。思路1:另外开辟一个数组,src从头往后遍历,遇到不是要删除元素,就把该元素赋值给数组,直到遍历完整个数组,在最后再把数组赋值到原数组。原地移除数组中所有的元素val,要求时间复杂度为O(N),空间复杂度为O(1)。

graceyun的博客 1150

2023最新中级难度C语言面试题,包含答案。刷题必备!记录一下。

好记性不如烂笔头内容来自。

m0_62946064的博客 590

0 1 C语言

研究01串是一件很好玩的事情,现在有一个长度为n的01串,当一个连续的子串中01个数相同,这个子串就是好的子串,现在请你写代码算出这个长度为n的01串中有多少个好的子串。

Naion的博客 2999

盘点四种计算数组中元素值为1个数的方法

本文介绍了四种不同的方法来统计数组中元素值为1个数,并通过性能比较分析讨论了每种方法的优缺点。通过最佳实践建议,我们希望帮助读者在选择合适的方法时做出明智的决策。随着数据处理机器学习领域的不断发展,我们将看到更多高效且易于使用的工具库出现。未来,我们可以期待更先进的算法技术来提高数组操作的性能效率。同时,我们也应该保持对新技术新方法的关注,以便在需要时能够利用它们来解决实际问题。

这家伙很懒,什么都没有留下 1768

只有0_1数组

对上一篇博客问题进行改进https://blog.csdn.net/qq_41864967/article/details/85084614 给定一个只包含01数组,找出其中包含相同0个数1个数的最 长子序列,输出子序列的长度, 要求在O(n)的时间复杂度内完成。 如:对于数组[0,0,1,1,0],输出结果为4。子序列[0,0,1,1] 或 [0,1,1,0] 为符合条件的最长...

qq_41864967的博客 1001

C语言--指针数组面试题的解析

指针数组一维数组字符数组字符串数组二维数组 一维数组 int a[] = { 1,2,3,4 }; printf("%d\n", sizeof(a)); //数组a的字节大小:16 printf("%d\n", sizeof(a + 0));//数组首元素地址a[0]的地址的大小:4/8,x86占4个字节,x64占八个字节 printf("%d\n", sizeof(*a)); //a==(a+0),a[0]的字节大小:4 printf("%d\n", sizeof(a + 1));//数组

Eccentric_Lee的博客 633

数组 方法

数组 方法 数组的反转 数组的反转:数组中的元素颠倒顺序,例如:原始数组1,2,3,4,5 数组反转之后为 5,4,3,2,1 思路:本质是考察交换两个变量的值 两种方式 实现反转,就需要将数组最远端的元素最近端位置互换 定义两个变量,保存数组的最小索引数组的最大索引 让两个索引上的元素交换位置 最小的索引变量++,最大的索引变量--,再次交换位置 最小的索引超过了最大索引,数组反转结束 ...

weixin_51621893的博客 265

关于数组的几道面试题

关于数组的几道面试题  分类: C/C++     数组是最基本的数据结构,关于数组面试题也屡见不鲜,本文罗列了一些常见的面试题,仅供参考,如果您有更好的题目或者想法,欢迎留言讨论。目前有以下18道题目,如有好的题目,随时更新。  数组数组中的最大值最小值 求数组中的最大值次大值 求数组中出现次数超过一半的元素 求数组中元素的最短距离 求两个有序数组

nbfcome的专栏 1192

数组练习01

1、有一个数组:int [] arr = {8,4,2,1,23,344,12} 猜数游戏:从键盘中任意输入一个数据,判断数组中是否包含此数 遍历 public static void main(String[] args) { int[] arr = {8,4,2,1,23,344,12}; System.out.println("任意输入一个数字:"); Scanner scanner = new Scanner(System.in); ..

m0_51996043的博客 2876

C语言数组笔试题解析

关于这类题,我们需要了解一下基本内容 sizeof 字符串开辟空间的大小,包括’\0’ strlen 字符串长度,求的是字符串的有效个数,不包括’\0数组名一般代表首元素的地址 只有两种情况,代表整个数组的地址 sizeof(数组名)单独使用时 &数组名 具体理解如下: 一维数组: ...

weixin_43219708的博客 583

超雪 sn0wbreeze-v2.8b11 Iphone 4 解锁激活利器

超雪 sn0wbreeze-v2.8b11 Iphone 4 解锁激活利器

上一篇: C语言面试题----switch语句
下一篇: C语言面试题---指针篇(一)
study_plus
博客等级 码龄9年 132粉丝 21原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值