经典面试题之C语言(数组)
题目
有一个数组int arr[20] = {1,0,1,1,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,1};数组中的全部都是0,1组成,试写程序,计算数组中的0,1的个数。要求:不能使用任何形式的判断语句
解答
#include<stdio.h>
int main(void)
{
int arr[20] = {1,0,1,1,1,1,1,1,1,0,0,1,0,0...
只有0_1的数组
对上一篇博客问题进行改进https://blog.csdn.net/qq_41864967/article/details/85084614
给定一个只包含0或1的数组,找出其中包含相同0的个数和1的个数的最
长子序列,输出子序列的长度, 要求在O(n)的时间复杂度内完成。
如:对于数组[0,0,1,1,0],输出结果为4。子序列[0,0,1,1] 或
[0,1,1,0] 为符合条件的最长...
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));//数组首
数组 方法
数组
方法
数组的反转
数组的反转:数组中的元素颠倒顺序,例如:原始数组为1,2,3,4,5 数组反转之后为 5,4,3,2,1
思路:本质是考察交换两个变量的值 两种方式
实现反转,就需要将数组最远端的元素和最近端位置互换
定义两个变量,保存数组的最小索引和数组的最大索引
让两个索引上的元素交换位置
最小的索引变量++,最大的索引变量--,再次交换位置
最小的索引超过了最大索引,数组反转结束
...
数组练习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);
..