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中所有元素的和。
这道题目很简单,是的,的确简单,但是为什么还要说呢,因为如果你直接用循环进行累加,
非常简单,但是如果仅仅这么简单的话,也体现不出优势了。
剑指offer面试题:二维数组中的查找,C语言实现 我是从九度OJ上面看到这个 阅读详情

相关推荐

C语言二维数组初始化详解:从内存模型到面试题实战

在C语言中,数组是连续内存空间的抽象,而二维数组本质上是按行连续存储的一维内存块。理解其内存布局是掌握数组操作的关键,编译器通过固定的偏移量公式(基地址 + (行索引 * 列数 + 列索引) * 元素大小)来访问元素,这就要求列数必须在编译时确定,这也是为什么声明时可以省略行数但不能省略列数的根本原因。这种设计在工程实践中提升了代码的灵活性,允许根据初始化数据自动推导数组大小,同时保证了内存访问的效率。在初始化时,无论是平铺列表还是嵌套花括号,编译器都会严格按照行优先顺序填充数据,并为未显式初始化的元素补零

weixin_33393017的博客 241

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

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

weixin_51177279的博客 1619

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

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

心之所向 9692

【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的博客 831

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的博客 1151

c语言-数组、指针面试题

转载 说明:所有题目均摘录于网络以及我所见过的面试题目,欢迎补充! 无特殊说明情况下,下面所有题s目都是linux下的32位C程序。 先来几个简单的热热身。 1计算以下sizeof的值。 char str1[] = {'a', 'b', 'c', 'd', 'e'}; char str2[] = "abcde";char *ptr = "abcde";char boo...

weixin_30367873的博客 568

c语言面试题——数组

2、修改: 如果把int arr[20] 改为char arr[20], 并且内容有这三种 ‘a’ 、‘c’、‘d’,计算各个字符的个数。 3、计算1) 可以用for循环,累加(低级) (2) ...

dylan的博客 407

C语言高频面试题——指针数组数组指针

【代码】C语言高频面试题——指针数组数组指针。

weixin_45252056的博客 1721

Leetcode面试题 10.01. 合并排序的数组(C语言

Leetcode面试题 10.01. 合并排序的数组(C语言) 题目: 给定两个排序后的数组 A B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化 A B 的元素数量分别为 m n。例: 输入: A = [1,2,3,0,0,0], m = 3 B = [2,5,6], n = 3 输出: [1,2,2,3,5,6] 思路: ...

jeanlu的博客 308

二维数组提取_C语言面试题指针篇第4节,数组与指针结合,HR最喜欢用来刁难人了...

数组,从来都是考察指针最好的载体,所以数组与指针结合的考题是最多的,下面的题目就是通过指针数组结合来考察指针的:C语言面试题指针篇第4节,数组与指针结合,HR最喜欢用来刁难人了# include <stdio.h>int main( void)int a[5]={1,2,3,4,5};int *ptr=( int *)(&a+1);printf("%d,%d",*(a+1),...

weixin_42121905的博客 155

c语言 数组指针传递给函数_c语言-数组、指针面试题

1计算以下sizeof的值。char str1[] = {'a', 'b', 'c', 'd', 'e'}; char str2[] = "abcde"; char *ptr = "abcde"; char book[][80]={"计算机应用基础","C语言","C++程序设计","数据结构"};sizeof(str1)=? sizeof(str2)=? sizeof(ptr)=?size...

weixin_29133151的博客 3163

C语言:指针与数组关系简述(含面试题

char* &val+1->0x19+sizeof(char)偏移量结果[0x1a]1.定义一个数组指针p指向srr----->short(*p)[2]=&srr;字节序:小端字节序(低低/高高) 大端字节序(低高/高低)2.定义一个指针q指向&irr+1位置,且q指针+1偏移量 偏移2字节。先&str+1 走了[]到0x7,然后再强转为char*类型,再-2。int val=0;

2401_88982022的博客 326

c语言数组的作用重要性,C语言面试题(一)

原标题:C语言面试题(一)哈喽,前几篇文章将C语言基础 简单的写了写,不知道大家能不能理解哈,今天更新下C语言的一些常见面试题,希望能帮助到大家。1、描述⼀下gcc的编译过程?gcc编译过程分为4个阶段:预处理、编译、汇编、链接。预处理:头⽂件包含、宏替换、条件编译、删除注释编译:主要进⾏词法、语法、语义分析等,检查⽆误后将预处理好的⽂件编译成汇编⽂件。汇编:将汇编⽂件转换成 ⼆进制⽬标⽂件链接:...

weixin_29193359的博客 822

C语言实现:剑指offer面试题4——二维数组中的查找

题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组一个证书,判断数组中是否含有该整数。 显而易见可以通过遍历数组中所有数据的方法,来找到是否有满足题意的整数。 #include <stdio.h> #define N 100 int input[N][N]; int num; int m,n; int main() { scanf_s("%d%d%d",&num,&m,&n).

PGY_yyy的博客 432

C语言常见面试题:什么是数组数组在C语言中的作用是什么?

总的来说,数组在C语言中扮演着重要的角色,为数据的存储、处理、分析传递提供了强大而灵活的工具。通过合理地使用数组,可以有效地提高程序的效率可读性。数组是一种有序的数据结构,它用于存储具有相同数据类型的多个元素。数组中的每个元素都有一个唯一的索引,通过索引可以快速访问数组中的元素。在C语言中,数组主要用于存储操作大量相同类型的数据。

dxl920807的博客 973
上一篇: C语言面试题----switch语句
下一篇: C语言面试题---指针篇(一)
study_plus
博客等级 码龄9年 132粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值