C语言复习

1.进制

三要素:数位(第几位) 基数 位权(当前位对应的值)

二进制:B     八进制:O   十进制:D   十六进制:X

0和1                  111 /072               10              1111 1111/0xFF

正数的原码=反码=补码

负数的反码=原码取反  补码=反码+1

无符号整数补码举例:

假设使用8位表示无符号整数,计算无符号整数5的补码。

  1. 确定位数:n=8n=8。

  2. 计算补码

    28−5=256−5=25128−5=256−5=251
  3. 二进制表示

    • 5的二进制:00000101

    • 251的二进制:11111011

左移<<    低位补0,不需要考虑补码

右移>>  无符号数:高位补0   负数需要知道其补码表示

               有符号数:高位补符号位(正补0,负补1)负数需要知道其补码表示

负数需要补码参与运算

2.     ASCII 码   0~127

 NULL   \0   的ASCII码都是0

\n的ASCII码是10

A的ASCII码是65     a的ASCII码是97

0  '0' 的ASCII码是48

回车的ASCII码是13

3.关键字

3.1存储类型:auto static extern  register

面试题:static关键字的特点

       1.作用域:static修饰的变量或者函数只能在本文件使用,不能被外部文件引用。

        2.生命周期延长:局部变量:生命周期从函数调用开始到程序结束

                                   全局变量:生命周期从程序运行到程序结束

        3.存储位置:静态区

        4.初始化:static修饰的变量未赋初始值,自动初始化为0,只初始化一次

面试题:如何引用一个其他文件的全局变量    

        头文件 extern int a;//声明

        .c文件  int a=10;//定义

        其他文件之间调用a变量

3.2  数据类型

        char,short,int,float,double,long,signed,unsigned,

注意:short和long不能搭配,互斥

        取值范围:一个字节占8bit

char    -2^7~2^7-1

int    -2^31~2^31-1

unsigned char: 0~2^8-1   0~255

3.3 构造数据类型

struct   union   enum

大小:struct   最大成员类型的整数倍

           union    最大成员的大小

例题:

union {int x;char a;
} u;u.x = 10;
printf("%c\n", u.a);

x和a共用一块内存   x占4字节   a占其中低地址1字节

10的二进制为00000000 00000000 00000000 00001010

因此a的ASCII码为10   对应字符\n

3.4控制语句:

if,else,for,while,do..while,break,continue,return

3.5  其他

sizeof,strlen,constmvolatile,typedef,void

面试题:sizeof和strlen的区别

sizeof用来计算数组,结构体等的大小,包含\0

strlen用来计算字符串的长度,不包含\0

面试题:const的特点

const修饰的变量不能修改,常量化

const修饰的变量必须初始化

C++中const修饰的函数为常成员函数,保护成员不被修改

C++中形参const修饰用于保护成员不被修改

C++中const修饰对象表示常对象,只能访问常成员函数

int const  *a   指向可以变,指向的内容不可以变

const int  * a   指向可以变,指向的内容不可以变

int  *const a     指向不能变,指向的内容可以变

const int *const a   指向不可以变,指向的内容不可以变

面试题:typedef和define的区别

typedef是重定义,可以将复杂的名字简单化

define是宏定义关键字,用于宏替换,通常表达式需要加()

4.标识符

命名规则:由字母数字下划线组成,不能以数字开头,不能和关键字重复

5.运算符:

1.关系

2.算数

3.位

笔试题:将一个数的某一位置1或清零,写出表达式.

数a     需要设置的位置n

置1        a =  a |    (1<<n)

置0        a =  a  &  (~(1<<n))

4.逻辑

5.三目

6.赋值

7.逗号

8.自增自减

6.输入输出语句

1.scanf("%d",&a)     printf("%d",a)

2.int a;a = getchar()        char b;   putchar(b)    while(getchar()!=10);吸收回车,读取直到碰到回车,输入缓冲区全部丢弃

3.gets(name)        puts(name)    

7.for循环笔试题

笔试题:打印水仙花数100~999

int a,b,c;
for(int i=100;i<1000;i++)
{a=i%10;b=i/10%10;c=i/100;if((int)(pow(a,3)+pow(b,3)+pow(c,3))==i)//if(a*a*a+b*b*b+c*c*c==i){printf("%d是水仙花数\n",i);}
}

笔试题:打印99乘法表

for(int i=1;i<10;i++)
{for(int j=1;j<=i;j++){printf("%d * %d = %-2d ",i,j,i*j);}printf("\n");
}

笔试题:打印图案

*
**
***
****
*****

for(int i=1;i<6;i++)
{for(int j=1;j<=i;j++){printf("*”);}printf("\n");
}

8.while循环

while(!E);     !E等价于 E==0

9.数组

什么是一维数组:相同数据类型元素的集合

什么是二维数组:数组的数组,每个元素是一维数组    行可以省略   列不能省略

内存连续存储

10.排序算法

1.冒泡排序:两两比较,满足条件交互

int temp;
for(int i=1;i<length;i++)
{for(int j=0;j<length-i;j++){if(arr[j]<arr[j+1}){temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}
}

2.选择排序:每次从未排序的部分与已排序的最后一个比较,选择最大或者最小元素,返回下标,放在已排序的后面

for(int i=0;i<length-1;i++)//已排序
{int index=i;int temp;for(int j=i+1;j<length;j++)//未排序{if(arr[j]<arr[index]){index=j;}}if(index!=i){temp = arr[index];arr[index]=arr[i];arr[i] =temp;}
}

笔试题:打印斐波那契数列前15个数

int arr[15]={1,1};
for(int i=2;i<15;i++)
{arr[i]=arr[i-1]+arr[i-2];
}
for(int i=0;i<15;i++)
{printf("%d ",arr[i]);
}
printf("\n");

笔试题:杨辉三角前十行

int arr[10][10];
for(int i=0;i<10;i++)
{arr[i][0]=1;arr[i][i]=1;for(int j=1;j<i;j++){arr[i][j]=arr[i-1][j]+arr[i-1][j-1];}
}for(int i=0;i<10;i++)
{for(int j=0;j<=i;j++){printf(" %d ",arr[i][j]);if(i==j){printf("\n");}    }
}

11.数组清零函数

1.bzero(buff,sizeof(buff))

2.memset(buff,0,sizeof(buff))

12.指针

面试题:说一说对指针的理解

指针分为一级指针,二级指针,多级指针,常用的是一级指针和二级指针。

一级指针就是指向变量的指针,存放变量的地址。二级指针就是指向一级指针的指针,存放一级指针的地址。

指针不初始化就是野指针,对野指针进行访问或者操作会出现段错误。

对指针进行解引用获取指针存放地址对应的值

面试题:指针和数组的区别

指针指向的内存地址可以是不连续的,数组的内存地址是连续的。

指针需要动态分配内存,数组内存是静态分配的。

指针分配的空间需要手动释放,数组的内存系统会自动释放。

指针取值需要解引用,数组取值用数组名[index]

指针的大小是4或者8字节,数组大小由数据类型和元素个数决定。

指针数组:int *p[3]={&a,&b,&c}   

数组指针:int (*p)[3]=arr  arr为数组

面试题:指针数组和数组指针的区别

指针数组本质上是一个数组  *p[3], 数组中每个元素都是指针

数组指针本质上是指针,(*p)[3],()可以理解为强调它是指针,指向一维数组时,(*p)[0]代表第一个元素的值,指向二维数组时,p[0][0]代表第一个元素的值.

13.函数

值传递:void fun(int a,int b)      fun(a,b)  a,b不会改变

地址传递   void fun(int *a,int *b)       fun(&a,&b)  a,b会改变

引用传递      void fun(int &a,int &b)      fun(a,b) a,b会改变

14.string函数族

写出strlen、strcpy、strcat源码实现

int strlen(const char* buff)
{int count=0;while(*buff){count++;buff++;}return count;
}char* strcpy(char* str,const char* buff)
{if (str == NULL || buff == NULL)// 检查空指针{ return;}char *temp=str;while(*buff){*str=*buff;str++;buff++;}*str='\0';return temp;
}char *strcat(char* str,const char* buff)
{if (str == NULL || buff == NULL)// 检查空指针{ return;}while(*str){str++;}while(*buff){*str=*buff;str++;buff++;}*str='\0';return temp;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/7563.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

31、Java集合概述

目录 一.Collection 二.Map 三.Collection和Map的区别 四.应用场景 集合是一组对象的集合&#xff0c;它封装了对象的存储和操作方式。集合框架提供了一组接口和类&#xff0c;用于存储、访问和操作这些对象集合。这些接口和类定义了不同的数据结构&#xff0c;如列表、集合…

Unity|小游戏复刻|见缝插针1(C#)

准备 创建Scenes场景&#xff0c;Scripts脚本&#xff0c;Prefabs预制体文件夹 修改背景颜色 选中Main Camera 找到背景 选择颜色&#xff0c;一种白中透黄的颜色 创建小球 将文件夹里的Circle拖入层级里 选中Circle&#xff0c;位置为左右居中&#xff0c;偏上&…

Word 中实现方框内点击自动打 √ ☑

注&#xff1a; 本文为 “Word 中方框内点击打 √ ☑ / 打 ☒” 相关文章合辑。 对第一篇增加了打叉部分&#xff0c;第二篇为第一篇中方法 5 “控件” 实现的详解。 在 Word 方框内打 √ 的 6 种技巧 2020-03-09 12:38 使用 Word 制作一些调查表、检查表等&#xff0c;通常…

Android Studio:视图绑定的岁月变迁(2/100)

一、博文导读 本文是基于Android Studio真实项目&#xff0c;通过解析源码了解真实应用场景&#xff0c;写文的视角和读者是同步的&#xff0c;想到看到写到&#xff0c;没有上帝视角。 前期回顾&#xff0c;本文是第二期。 private Unbinder mUnbinder; 只是声明了一个 接口…

第13章 深入volatile关键字(Java高并发编程详解:多线程与系统设计)

1.并发编程的三个重要特性 并发编程有三个至关重要的特性&#xff0c;分别是原子性、有序性和可见性 1.1 原子性 所谓原子性是指在一次的操作或者多次操作中&#xff0c;要么所有的操作全部都得到了执行并 且不会受到任何因素的干扰而中断&#xff0c;要么所有的操作都不执行…

算法中的移动窗帘——C++滑动窗口算法详解

1. 滑动窗口简介 滑动窗口是一种在算法中常用的技巧&#xff0c;主要用来处理具有连续性的子数组或子序列问题。通过滑动窗口&#xff0c;可以在一维数组或字符串上维护一个固定或可变长度的窗口&#xff0c;逐步移动窗口&#xff0c;避免重复计算&#xff0c;从而提升效率。常…

基于SpringBoot的网上考试系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

【java数据结构】map和set

【java数据结构】map和set 一、Map和Set的概念以及背景1.1 概念1.2 背景1.3 模型 二、Map2.1 Map说明2.2 Map的常用方法 三、Set3.1 Set说明3.2 Set的常用方法 四、Set和Map的关系 博客最后附有整篇博客的全部代码&#xff01;&#xff01;&#xff01; 一、Map和Set的概念以及…

基于迁移学习的ResNet50模型实现石榴病害数据集多分类图片预测

完整源码项目包获取→点击文章末尾名片&#xff01; 番石榴病害数据集 背景描述 番石榴 &#xff08;Psidium guajava&#xff09; 是南亚的主要作物&#xff0c;尤其是在孟加拉国。它富含维生素 C 和纤维&#xff0c;支持区域经济和营养。不幸的是&#xff0c;番石榴生产受到降…

企业信息化2:行政办公管理系统

总裁办公室作为综合行政管理部门服务于整个公司&#xff0c;工作职责包含从最基础的行政综合到协调督办、对外政务、品牌建设等等&#xff0c;工作量繁多而且琐碎。如何通过信息化来实现标准化和常态化的管理手段&#xff0c;确保总裁办的各项工作有章可循&#xff0c;提高工作…

基于springboot+vue的古城景区管理系统的设计与实现

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

使用 Elasticsearch 导航检索增强生成图表

作者&#xff1a;来自 Elastic Louis Jourdain 及 Ivan Monnier 了解如何使用知识图谱来增强 RAG 结果&#xff0c;同时在 Elasticsearch 中高效存储图谱。本指南探讨了根据用户查询动态生成知识子图的详细策略。 检索增强生成 (RAG) 通过将大型语言模型 (LLM) 的输出基于事实数…

【数据结构】_以SLTPushBack(尾插)为例理解单链表的二级指针传参

目录 1. 第一版代码 2. 第二版代码 3. 第三版代码 前文已介绍无头单向不循环链表的实现&#xff0c;详见下文&#xff1a; 【数据结构】_不带头非循环单向链表-CSDN博客 但对于部分方法如尾插、头插、任意位置前插入、任意位置前删除的相关实现&#xff0c;其形参均采用了…

ceph新增节点,OSD设备,标签管理(二)

一、访问客户端集群方式 方式一: 使用cephadm shell交互式配置 [rootceph141 ~]# cephadm shell # 注意&#xff0c;此命令会启动一个新的容器&#xff0c;运行玩后会退出&#xff01; Inferring fsid c153209c-d8a0-11ef-a0ed-bdb84668ed01 Inferring config /var/lib/ce…

Spring Data JPA 实战:构建高性能数据访问层

1 简介 1.1 Spring Data JPA 概述 1.1.1 什么是 Spring Data JPA? Spring Data JPA 是 Spring Data 项目的一部分,旨在简化对基于 JPA 的数据库访问操作。它通过提供一致的编程模型和接口,使得开发者可以更轻松地与关系型数据库进行交互,同时减少了样板代码的编写。Spri…

Git进阶笔记系列(01)Git核心架构原理 | 常用命令实战集合

读书笔记&#xff1a;卓越强迫症强大恐惧症&#xff0c;在亲子家庭、职场关系里尤其是纵向关系模型里&#xff0c;这两种状态很容易无缝衔接。尤其父母对子女、领导对下属&#xff0c;都有望子成龙、强将无弱兵的期望&#xff0c;然而在你的面前&#xff0c;他们才是永远强大的…

基于模糊PID的孵化箱温度控制系统(论文+源码)

1系统方案设计 本课题为基于模糊PID的孵化箱温度控制系统&#xff0c;其以STM32最小系统与模糊PID控制器为控制核心。系统主要包括数据采集模块、处理器模块、电机控制模块。 数据采集模块由温度传感器构成&#xff0c;通过温度传感器感应温度变化&#xff0c;获得待处理的数据…

Arcgis国产化替代:Bigemap Pro正式发布

在数字化时代&#xff0c;数据如同新时代的石油&#xff0c;蕴含着巨大的价值。从商业决策到科研探索&#xff0c;从城市规划到环境监测&#xff0c;海量数据的高效处理、精准分析与直观可视化&#xff0c;已成为各行业突破发展瓶颈、实现转型升级的关键所在。历经十年精心打磨…

ThreeJS示例教程200+【目录】

Three.js 是一个强大的 JavaScript 库,旨在简化在网页上创建和展示3D图形的过程。它基于 WebGL 技术,但提供了比直接使用 WebGL 更易于使用的API,使得开发者无需深入了解 WebGL 的复杂细节就能创建出高质量的3D内容。 由于目前内容还不多,下面的内容暂时做一个占位。 文章目…

opengrok_使用技巧

Searchhttps://xrefandroid.com/android-15.0.0_r1/https://xrefandroid.com/android-15.0.0_r1/ 选择搜索的目录&#xff08;工程&#xff09; 手动在下拉框中选择&#xff0c;或者 使用下面三个快捷按钮进行选择或者取消选择。 输入搜索的条件 搜索域说明 域 fullSearc…