C语言 Day1 笔记 作业

Lv1 C语言 每日作业 C语言每日作业 阅读详情

一、笔记

1.C语言程序的基本结构

预处理指令:通常放在程序的开头,#include <stdio.h> 。预处理器指令以#字符开始,最常见的#include,用于包含其他的头文件。 

函数:程序中至少包含一个函数,即main()函数。main()函数是程序执行的起点。一个C程序中可以包含其他的函数,这些函数可以自己定义也可以是从库中调用。

变量:变量用于存储数据。在C语言中,每个变量都有特有类型。

语句和表达式:语句是执行特定任务的语句,如赋值语句、调用函数等,表达式则是计算产生值的计算公式。

注释:注释用于解释程序的功能,对代码进行解释和描述。注释可以用/*   */或者//  来书写。

2.gcc命令

编译命令:gcc 文件 

运行命令:./ 文件

如果有多文件交叉使用,需要将多个源文件一起编译

例如 gcc 1.c 2.c 3.c -o test

警告:某些警告在一定程度上可以忽略,不会影响文件的输出

​错误:错误必须全部解决,编译器才可以对源码进行编译

gcc 编译流程

预处理  处理程序的头文件展开、宏定义替换、删注释等内容,生成.i文件

gcc  -E  hello.c -o  hello.i

编译  检查代码的规范性,是否有语法错误,将代码翻译成汇编语言;生成 .s文件

gcc  -S  hello.i -o  hello.s

汇编  将.s文件转换成二进制目标文件,生成.o文件

gcc  -c  hello.s  -o  hello.o

链接  将程序中所用到的库加载到代码中,生成最终的可执行文件

gcc  hello.o -o hello

3.数值型数据的表达形式

二进制

逢二进一,每一位上的数字范围:0/1

八进制

逢八进一,每一位上的数字范围:0-7

十进制

逢十进一,每一位上的数字范围:0-9

十六进制

逢16进一,每一位上的数字范围:0-9,A-F对应10-15

进制转化表

4.原码、反码、补码

源码 十进制正常转换 二进制 后的 数值

反码 十进制 的取反 符号位 不变

补码 反码 + 1

5.数据类型

整型

​字符型   char               1字节

整型       int                  4字节

​短整型   short int         2字节

长整型   ​long int          8字节

无符号   unsigned 

浮点型

单精度浮点型   float                4 字节

​双精度浮点型   double            8 字节

长浮点型          ​long double    16字节

sizeof( )       用于测量变量空间大小

6.常量分类和声明

整形常量

二进制 0b 无 0b1010

八进制 0 %#o 024

十进制 无 %d 131

十六进制 0x %#x 0xDB4

浮点常量              小数

字符常量              ' A '

#define 宏定义

#dedine  常量的常量名   替换语句           如 #define   MAX_SIZE  255

const  修饰符

可以修饰变量为常量,同时在进行声明变量的时候,可以让变量在执行的过程中 不被改变

#define 是无脑替换

const 只能用于修饰变量 让变量成为常量

#define 没有在 ==栈区== 创建空间

const 创建的空间 ,空间大小由常量类型决定

7.运算符

算数运算符

    int a = 10;
    int b = 20;
    printf("a + b = %d\n", a + b);  // 30

赋值运算符

    int a = 10;
    a += 20;  // a = a + 20
    printf("a = %d\n", a);  // 30

关系运算符

    int a = 10;
    int b = 20;
    printf("a > b: %d\n", a > b);  // 0 (false)
    printf("a < b: %d\n", a < b);  // 1 (true)
    printf("a >= b: %d\n", a >= b);  // 0 (false)
    printf("a <= b: %d\n", a <= b);  // 1 (true)
    printf("a == b: %d\n", a == b);  // 0 (false)
    printf("a != b: %d\n", a != b);  // 1 (true)

逻辑运算符

&& :  当两边的操作数都为真(非零)时,结果才为真。如果任一操作数为假(即零),结果就为假

||  : 只要两个操作数中的任一操作数为真,结果就为真。只有当两个操作数都为假,结果才为假

!  : 这是一个单目运算符,对值进行取反操作。如果操作数为真,结果为假,反之亦然

& : 果两个相应的二进制位都为1,则结果为1,否则为0

| : 如果两个相应的二进制位中至少有一个1,则结果为1,否则为0

^  : 相同为0 不同为1

~ : 对数的每一位取反,0变1,1变0。

<< : 把位向左移动指定的位数,右边用0填充。

>> : 把位向右移动指定的位数,左边的空位如何填充取决于数字的符号 如正数左边填充0,负数左边填充1

指针运算符

* : 解引用运算符  这个运算符返回指针所指向的值

& : 取地址运算符  这个运算符返回变量的内存地址

++ -- : 自增和自减运算符 :这些运算符用于改变指针的值,使其指向下一个或上一个内存位置

8.sizeof 运算符

用于获取一个特定类型或特定对象的大小(以字节为单位)。其可以应用于任何数据类型,包括基本类型(如int、char、double等)、派生类型(如数组、指针等)和自定义类型(如结构体、联合等)

9.格式符号

二、作业

1.  通过位操作 操作一个 32 位的数据对其进行如下操作

一次性操作两位 对 这个32位数据中的 5位 和 6位 变成11

一次性操作两位 对 这个32位数据中的 7位 和 8位 变成10

一次性操作两位 对 这个32位数据中的 9位 和 10位 变成01

一次性操作两位 对 这个32位数据中的 11位 和 12位 变成00

#include <stdio.h>

int main(int argc, char const *argv[])
{
    unsigned int i = 0;

    i |= (3 << 5);
    i |= (2 << 7);
    i |= (1 << 9);
    i &= ~(2 << 10);

    printf("i =%d\n", i);

    return 0;
}

2. 写一个小的登录功能

用户可以循环登录 例如输入错了一次密码 可以在进行输入

用户只能输错 3 次 3次后自动退出程序

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int main(int argc, char const *argv[])
{
    char i[20] = "0";
    char p[20] = "0";
    char name[128] = "张三";
    char password[128] = "123";
    
    int j = 0;

    while(j < 3)
    {
        printf("输入姓名:");
        scanf("%s", &i);
        printf("输入密码:");
        scanf("%s", &p);

        if((strcmp(name, i) == 0) && (strcmp(password, p) == 0))
        {
            printf("登录成功\n");
            break;

        }
        else
        {
            if((!strcmp(name, i) == 0) || (!strcmp(password, p) == 0))
            {
                printf("输入错误\n");
                j++;
            }
        }

    }
    

    if(3 == j)
    {
        printf("登录失败\n");
    }

    return 0;

}

Ubuntu 22.04 上 Mezzanine CMS 完整安装指南 CMS(内容管理系统)是构建博客、企业官网等静态与动态内容混合站点的核心技术栈;Django 作为 Python 生态中最成熟的 Web 框架,凭借其 ORM、Admin 和安全机制,成为 CMS 开发的首选基础。Mezzanine 是基于 Django 的轻量级 CMS,以开箱即用、零配置多语言和内置 SEO 工具为特色,特别适合中小项目快速落地。在 Ubuntu 这类强调稳定性的服务器操作系统上部署时,关键挑战并非代码逻辑,而是系统层依赖协同——如 Python 版本锁定、SQLite FTS5 支持、 阅读详情

相关推荐

Java全栈面试宝典:从P6到P8-10

答案: CAP定理说一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance)中的两个。C:所有节点在同一时刻看到的数据一样。你写了一个值,立刻读,不管从哪个节点读,都能读到最新值。A:每个请求都能得到非错误的响应,即使某些节点挂了。系统一直能对外服务,不会返回超时或拒绝。P:网络分区发生时,系统仍能继续工作。网络分区就是节点之间网络不通了,但节点本身还活着。CAP不是"三选二",而是当网络分区发生时,你必须在C和

_abab的专栏 81

C语言 Day4 笔记 作业

函数是具有特定功能的独立代码块 有四大基本要素函数名 符合标识符规则 calculateSum参数列表 输入接口,定义接收的数据类型 int a。

gbsns的博客 970

【微服务】Spring Aop原理深入解析

spring原理深度解析

congge 1万+

C语言Day01笔记

可以通过宏定义的方式来进行声明一个变量。

2503_90889017的博客 1844

C语言 Day3 笔记 作业

方式1:按行优先初始化方式2:连续初始化(自动填充)2行4列,剩余补0方式3:动态初始化指针数组i<3;i++)

gbsns的博客 898

C语言Day05笔记

返回类型 函数名(参数列表) {// 函数体return 返回值;// 若返回类型为 void,可省略 return。

2503_90889017的博客 1187

C语言自学入门 DAY1

摘要:本文是一名高中毕业生分享学习C语言的成长历程。作者因高考成绩不理想进入大专学习物联网专业,希望通过博客记录学习过程来督促自己克服惰性。文章阐述了选择C语言的原因(作为编程基础),并分享了第一天的学习内容:安装开发工具、创建GitHub仓库、编写第一个程序;Helloworld"。作者期待通过持续学习提升竞争力,并寻求志同道合者的交流。博客将成为其学习历程的见证,展现从零开始的成长足迹。

2502_90646966的博客 435

C语言Day02笔记

C语言中 唯一一个三目运算符- 负号 单目运算符 1 个操作数 -1+ 加号 双目运算符 2 个操作数 1+1格式:条件?语句1 : 语句2当条件为真时 则执行 语句1当条件为假时 则执行 语句2。

2503_90889017的博客 495

C语言基础 day1作业

1、思维导图2、作业

weixin_49366095的博客 188

C语言个人笔记day1

机器语言汇编语言高级语言

y2022的博客 1410

CH573从入门到精通

CH573是南京沁恒微电子(WCH)推出的一颗32 位 RISC-V 内核、集成 2.4GHz 射频收发器的低功耗蓝牙(BLE)MCU/SoC。它把「MCU + 蓝牙射频 + 常用外设」集成在一颗芯片里,一颗芯片就能完成数据采集、逻辑控制和无线通信,非常适合电池供电的小型物联网节点、可穿戴设备与低成本蓝牙配件。RISC-V 内核:采用沁恒自研的 RISC-V3A 内核,摆脱了对 ARM 内核授权的依赖,是国产芯片自主可控路线的代表之一;蓝牙集成度高。

qq_64312451的博客 291

Spring 源码系列(23): SpringApplication.run() 启动全流程

本文深入解析了SpringApplication.run()的核心流程,通过源码拆解揭示了从启动到容器就绪的完整生命周期。文章重点分析了三个关键阶段:prepareEnvironment的配置加载逻辑(系统属性>环境变量>配置文件)、createApplicationContext的容器类型推断机制(基于classpath判断Web/Reactive/普通应用),以及callRunners的启动后回调特性(按@Order执行初始化任务)。同时澄清了常见误区,如内嵌Tomcat实际在refresh阶段的onR

不才不才不不才的博客 343

简单讲解Java--queue--三组成对出现的方法的区别

操作类型异常派(失败抛异常)特殊值派(失败返null/false)核心选型原则插入add(e)offer(e)生产者:优先用offer做流控;初始化填充用add做断言取出remove()poll()消费者:永远用pollnull判断;原子操作且确定非空时才用remove查看element()peek()只读场景:99%情况用peek;需要强制非空前置条件时用element终极避坑指南不要用remove()element()做轮询——异常栈生成代价极高(填充StackTrace),比if。

HDZW_ZQBX___的博客 385

Java大厂面试实录:Spring Boot与微服务、Redis缓存、JWT安全、Prometheus监控全解析——记谢飞机的一次硬核面试

周六下午,互联网大厂“星河科技”的会议室里,阳光透过落地窗洒在长桌上。面试官李总眉头微蹙,翻看着眼前这位候选人的简历——谢飞机,三年Java开发经验,自我评价“精通全家桶”。对面,谢飞机正襟危坐,嘴角带着一丝自信到发光的微笑。李总推了推眼镜,语气平淡:“谢飞机先生,我们开始吧。今天聊电商后端场景,你平时写代码用什么Java版本?

2602_95996092的博客 269

Micrometer 系列【66】上下文传播工具库 | 案例演示

context-propagation 是 Micrometer 生态的跨线程上下文搬运协议层,本身零运行时依赖、不依赖 Spring、Micrometer 其他组件。

记录知识、锤炼自我 454

Java 并发灵魂拷问:notify/signal 唤醒顺序是规范还是实现?

本文探讨了Java中Object.notify()和Condition.signal()唤醒线程的顺序问题。关键结论如下: Object.notify(): JVM规范未规定唤醒顺序,HotSpot实现虽采用FIFO(从WaitSet头部取线程),但这属于实现细节而非规范要求 由于synchronized是非公平锁,被唤醒线程需重新竞争锁,最终执行顺序无法保证 严禁业务代码依赖该顺序 Condition.signal(): 严格按FIFO顺序唤醒(AQS等待队列头部线程) 是设计约定,业务可合理依赖该特性

weixin_68315058的博客 341

【Spring Cloud Alibaba】Sentinel(三)

这里有个关键点:不是 “前 10 秒”,是。

Blue_Pepsi_Cola的博客 264

[Java]-微服务面试题

服务降级是服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用,确保服务不会崩溃。微服务的负载均衡主要使用了一个组件Ribbon,比如,我们在使用feign远程调用的过程中,底层的负载均衡就是。2,我们还在skywalking设置了告警规则,特别是在项目上线以后,如果报错,我们分别设置了可以给相关负责人。简历上写的微服务,只要是发生了多个服务之间的写操作,都需要进行分布式事务控制。2,在客户端的配置文件中,可以配置某一个服务调用的负载均衡策略(局部)

. 596

49. 【Java】JDK 21的虚拟线程(上):革命性的并发模型

本文深入解析JDK 21引入的虚拟线程(Virtual Threads)技术,从传统平台线程的资源瓶颈出发,阐述虚拟线程的轻量级特性、M:N调度模型及其工作原理。详细介绍了两种创建虚拟线程的方法,并通过性能对比实验展示其在I/O密集型场景下的显著优势。总结了虚拟线程的适用场景、使用注意事项以及与平台线程的核心差异,帮助开发者掌握这一革命性的并发编程工具。

gugucoding的博客 504

Java Spring 批量修改,实体、接口、方法的定义

本文描述了一个批量更新车辆类型的接口实现。该功能通过Controller层接收包含出库单ID列表和车辆类型的请求参数,调用Service层进行处理。实现层采用事务管理,首先验证参数有效性,然后查询对应出库单数据并批量更新车辆类型字段,最后返回操作结果(成功更新记录数或错误信息)。该接口主要用于快递业务中其他出库单的车辆类型批量修改操作,包含完整的参数校验、异常处理和事务管理机制。

LYBWWP 36

PTS和SLM三种降低PAPR的方法以及其优化算法-源码

PTS和SLM三种降低PAPR的方法以及其优化算法_源码

上一篇: Linux基础Day4作业
下一篇: C语言 Day2 笔记
gbsns
博客等级 码龄1年 36粉丝 · 8原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值