首页 > 其他分享 >C语言基础

C语言基础

时间:2024-10-30 18:46:49浏览次数:8  
标签:二进制 int 基础 C语言 --- -- printf else

1.linux命令:

1.1界面调节:

终端放大: ctrl + shift + =

缩小:ctrl + -

打开:点击 ctrl+alt+t:在家目录下打开 ctrl+shift+n:在当前路径下新开

关闭:点击 exit ctrl+d

清屏幕:ctrl+L

终止:ctrl+c

1.2 提示文字:

hq @ ubuntu : ~ $

用户名 间隔符 主机名 间隔符 当前路径 间隔/输入提示符

1.3 特殊符号:

~ : 家目录/主目录 权限最高 不是home

/:根目录-----此电脑 最大的盒子(文件夹)

. :当前目录

.. :上一级目录

-:上一次操作的目录

1.4 linux指令:

1.4.1 查看用户名:whoami

1.4.2 查看主机名:hostname

1.4.3 查看当前路径的完整路径:pwd

1.4.4查看当前路径下的所有文件:ls

蓝色字体:文件夹/目录

绿色:可执行文件

白色:普通文件

1.4.5 查看当前路径下的所有文件(包含隐藏文件):ls -a

1.4.6 查看当前路径下的所有文件的详细信息:ls -l

d rwx:当前用户权限 r-x:组内成员权限 r-x:其他权限

文件类型 权限:r:读 w:写 x:执行 -:不可以 --->rwx

bcd-lsp

b: 块设备文件 /dev

c:字符设备文件

d:目录

-: 文件

l:软连接

s: 套接字

p: 管道文件

例:- r-- rwx ---:文件 当前用户可读不可写不可执行 组:可读可写可执行 其他:无权限

linux中一切皆____,有____种。(鲁科安全)

答案:文件 7种

1.4.7切换路径:cd

cd:切换到家目录

cd 路径(目录):切换到。。。文件夹中

路径: 相对路径 绝对路径(完整路径)

相对路径:一般以 . 或者 .. 或者直接文件名开头的

绝对路径:一般以 / 或者 ~ 开头

例:进入到 home文件 : cd ../.. cd ~/.. cd /home

回到家目录:cd cd ~

1.4.8 新建

新建文件夹:mkdir 文件夹名

新建文件:touch 文件名.后缀

1.4.9 删除

删除文件:rm 文件名.后缀

删除文件夹: rm 文件夹名 -r

删除目录:rmdir 目录名 --->空

练习:

  1. 在家目录下创建一个demo1文件夹进入此文件夹新建一个text1文本文档,然后回到家目录

mkdir demo1 ---->cd demo1---->touch text1.txt---->cd

touch ./demo1/text1.txt

1.4.10复制

复制普通文件:cp 要复制的文件名(路径) 要粘贴的位置(路径)

复制文件夹:cp 要复制的文件夹名(路径) 要粘贴的位置(路径) -r

复制过程中修改名称:cp 要复制的文件名 路径/新名称

1.4.11 移动 剪切

移动文件/文件夹:mv 要移动的文件名(路径) 要粘贴的位置(路径)

移动过程中修改名称:mv 要移动的文件名 路径/新名称

重命名

1.5 vi编辑器

打开文件:vi 文件名

三种模式:

命令行模式:支持特定命令的操作 默认进入此模式

插入模式:编辑模式 在此模式下可以进行编辑内容

底行模式:支持特定命令的操作 保存 退出

模式之间的切换必须从命令模式进入

命令模式-- a / i / o --->插入模式-- esc -->回到命令模式-- shift+: /空格-->底行模式

命令行:

复制:yy 多行 nyy(n:表示的是行数)

删除(剪切):dd ndd

粘贴:p

撤销:u

反撤:ctrl+r

光标的移动:移动到首行:gg 移动到末行:G 移动到行首:0 移动到行尾:$

整理代码的格式:gg=G

底行模式:

q:退出

w: 保存

wq:保存退出

q!:不保存退出 强制退出

分屏:vsp ctrl+w--> v:打开分屏 ctrl+w--> q 关闭分屏

查找:/要找的内容

替换: s/str1/str2 将光标所在行的第一个str1替换成str2

全部替换:s/str1/str2/g 将光标所在行的全部str1替换成str2

%s/str1/str2/g ,$s/str1/str2/g 全文替换

设置行号:set nu

取消行号:set nonu

取消高亮:nohl

练习:反斜杠\

\ :转义 把后面跟随的内容改变含义,后面跟符号表示转译成文本符号

\n---》换行 \?---》文本? \\---文本斜杠

文本内容:///

通过指令完成替换:\\\

答案:%s/\//\\/g

注:红色字体表示语法格式,蓝色表示转义 黑色表示替换内容

1.5.1编程流程:
  1. 创建.c文件:touch 文件名.c
  2. 打开文件:vi 文件名.c / vscode打开--->code 文件名.c
  3. 写代码

#include<stdio.h>   //头文件
int main()    //主函数
{
printf ("hello word!  \n");  //打印语句
return 0;
}

  1. 保存退出:wq
  2. 编译代码:gcc 文件.c 默认生成a.out文件
  3. 执行a.out: ./a.out

1.6编程语言的发展史及gcc编译器

1.6.1编程语言的发展史:

机器语言: 二进制 ---> 汇编语言:二进制的文本形式 ----> 高级语言:c c++ (计算机不能直接看懂)

1.6.2 gcc编译器

四步:1.预处理 2.编译 3.汇编 4.链接

  1. 预处理

展开头文件、删除注释、替换宏定义

命令:gcc -E hello.c -o hello.i

  1. 编译

检查语法错误 有错误报错 没有转成汇编语言

命令:gcc -S hello.i -o hello.s

  1. 汇编

将汇编文件转化成二进制文件

命令:gcc -c hello.s -o hello.o

4.链接

链接库文件,最终生成机器可以识别的可执行文件

命令:gcc hell.o -o a.out ---》gcc hello.c--->生成a.out

修改生成的文件名:gcc hello.c -o 文件名

1.6计算机中数据存储的单位:

位(bit)

字节(Byte)

1字节=8位

1B=8b

1KB=1024B

1MB=1024KB

1GB=1024MB

1TB=1024GB

1.7计算机中数据的表现形式:

  1. 数值型数据

进制:

二进制:满2进1 0-1

八进制:满8进1 0-7

十进制:满10进1 0-9

十六进制:满16进1 0-9 a-f , a:10 b:11 c:12 d:13 e:14 f:15

进制转换

二进制 和十进制

二进制 ---> 十进制:

101 ---》将2次方和相加

101011---》2^0+2^1+2^3+2^5=43

1

0

1

0

1

1

2^5:32

2^4:16

2^3:8

2^2:4

2^1:2

2^0:1

例:101100----> 44

110101---->53

十进制 ---> 二进制:

  1. 短除法:除2倒取余

44-->101100

  1. 拆分法:44---》32+12-->32+8+4--》2^5 +2^3 +2^2--->101100
  2. 计算器

例:

  1. 1110111---->119
  2. 10001------>17
  3. 36----》100100
  4. 77--->1001101
二进制和八进制
八进制--> 二进制

八进制: 以0开头 ,用三个二进制数表示一个八进制

7---》111 6--->110 5---》101 4-->100 3--->011 2--》010 1--》001

07 5--->111 101

二进制-->八进制

从右往左 三个二进制为一组,表示一位八进制,不足三位在前面补零

101 110 101:0565

001 101:015

例:

1 001:--->011

111 101:---》075

077:--->111111

0156:----》1101110

十六进制和二进制之间的转换

f(15)---》1111 ,十六进制以0x开头

四位二进制表示一位十六进制

1

2

3

4

5

6

7

8

9

10(a)

11(b)

12(c)

13(d)

14(e)

15(f)

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

十六进制--->二进制

0xf78---》1111 0111 1000

二进制---->十六进制: 从右向左每四个为一组

1110 1010--->0xea

例:

转成二进制:

389--->256+128+4+1 ---> 110000101

056---> 101 110

0xac12--->1010 1100 0001 0010

12---->1100

转 八进制、 十进制、 十六进制:

0110 0110 1010

八进制:03152

十进制:1642

十六进制:0x66a

  1. 非数值型数据

ascii码: 可以通过man手册查看

man ascii

字符:使用单引号(' ')引起来的内容, 只能引一个字符

'A' 'A'

A-Z:65-90

a-z:97-122

\n----->字符换行:10

'\0'---》字符空: 0

'0'---'9'---》48-57

大小写转换:大--->小:大写字母的ascii+32

小--->大:小写字母的ascii-32

字符型数据转成数值型数据: 字符型数字ascii-48

\:代表转义 将其后面的东西转换成其他意思表现出来 后面一般跟八进制 十六进制的数 (开头不写零) 后面跟字母一般表示为特殊含义 但是后面跟符号一般是将这个符号输出成文本形式

'\x41'---》'A'---》'\101'----》字符A

'1' ---》字符1 字符1 和 数字1不是一个内容(数据)

练习:

f=102, a=97, 97+(102-97+1)=103

答案:g

1.变 量

概念:在程序的运行中会发生变化的数据

定义格式:存储类型 数据类型 变量名 ;

例:auto int a;//定义了一个整形变量 a ---> int a

auto:自动 ,默认取值都是auto,可以不写

1.1数据类型:

名称

字节

取值范围(了解)

int 整形 整数

4字节

-2^31-2^31-1

short 短整型

2字节

-2^15-2^15-1

long 长整型

32位:4字节,64位:8字节

-2^63-2^63-1

char 字符型

1字节

-2^7 - 2^7-1

float 单精度浮点型

4字节

有效位数:6-7位

double 双精度浮点型

8字节

15-16位

sizeof() 返回的是查询数据的字节数

int a;//随机值

2.printf输出语句

按照格式输出内容--->输出在终端界面

使用时需要引入: #include <stdio.h>

int printf(const char *format, ...); 函数

三要素:功能 参数 返回值

功能:按照格式输出内容

参数:1:字符串类型 ---要输出的信息,

后续参数的个数取决于第一个参数中的格式

返回值:输出字符的个数(不常用)

函数的使用:函数名(参数)

格式:

"%d" int

"%f" float

"%lf" double

"%c" char

"%s" 字符串

"%#x" 十六进制

"%#o" 八进制

"%e" 指数

"%p" 地址

#include <stdio.h>
int main(int argc, char const *argv[])
{
    int a=10;
    float b=1.2;
    printf("hello %d",a);//hello 10

    return 0;
}

2. 数:1234

int a=1234

通过printf将这个4位数输出他的个位 十位 百位 千位

想要取哪个位数就除以位数,如果是中间数,继续对10取余

最高位:除位数

最低位:对10取余

  1. scanf输入语句

#include <stdio.h>

int scanf(const char *format, ...);

功能:按照格式输入

参数:参数1:字符串(只能包含格式)后续和参数1中的格式的个数相关

后续的参数必须是一个地址

返回值:正确输入数据的个数

  int a;
   //&:取地址
   scanf("%d",&a);//输入
   printf("a=%d\n",a);//输出
  1. 分支语句

if else

基本结构:

if(表达式)
{
//如果表达式成立执行。。。。
语句块;
}
else
{
//如果表达式不成立执行。。。。
语句块;
}

 int a;
   //&:取地址
   printf("请输入一个5位数:");
   scanf("%d",&a);//输入
   if (a>9999)
   {
    printf("你输入正确\n");
   }
   else
   {
    printf("你输入不正确\n");
   }

练习:

#include <stdio.h>
int main(int argc, char const *argv[])
{
    int a, b; // 定义了两个变量 a ,b
    printf("请输入两个数:\n");
    scanf("%d%d", &a, &b);
    if (a > b)
    {
        printf("a大于b\n");
    }
    else
    {
        printf("a小于b\n");
    }
    return 0;
}

练习:

两数相除,如果有余数,输出余数。

int a, b; // 定义了两个变量 a ,b
    printf("请输入两个数:\n");
    scanf("%d%d", &a, &b);
    if (a % b) // 0:假  1:真
    {
        printf("有余数:%d",a%b);
    }
    else
    {
        printf("无余数");
    }
  

if else if 。。。else

if(表达式1)
{
//如果表达式成立执行。。。。
语句块;
}
else if(表达式2)
{
//如果表达式2成立执行。。。。
语句块;
}else if(表达式3)
{
//如果表达式3成立执行。。。。
语句块;
}else
{
//y以上所有条件都不满足执行
}


中奖案例:

#include <stdio.h>
int main(int argc, char const *argv[])
{
    int a; // 定义了两个变量 a ,b
    printf("请输入1个数:\n");
    scanf("%d", &a);
    if (a == 111)
    {
        printf("恭喜中一等奖:宝马一辆\n");
    }
    else if (a == 222)
    {
        printf("恭喜中二等奖:三轮车一辆\n");
    }
    else if (a == 333)
    {
        printf("恭喜中三等奖:车轮一个\n");
    }
    else
    {
        printf("谢谢参与,多买多得\n");
    }
    return 0;
}

标签:二进制,int,基础,C语言,---,--,printf,else
From: https://blog.csdn.net/m5127/article/details/143341164

相关文章

  • 介绍一下for break continue 函数(c基础)
    for函数是循环函数格式for(   expression1      ;    expression2    ;     expression3   )+  一种语句expression1初始化变量的值                                         ......
  • C语言的循环语句
    C语言中提供了三种循环语句:while、for、do....whille下面我们对这三种语句进行学习1:while循环1.1:if和while的区别    语法:while(表达式)              语句    乍一看,和前面分支语句中学的if语句是不是很相似下面我们通过代码......
  • 【Docker】bridge的基础使用和测试
    参考Bridgenetworkdriver|DockerDocsdockernetwork|DockerDocs命令Usage:dockernetworkCOMMANDManagenetworksCommands:connectConnectacontainertoanetworkcreateCreateanetworkdisconnectDisconnectacontainerfro......
  • 16.1 并发编程基础——Java多线程
    16.1并发编程基础——Java多线程16.1.1 引言Java语言的一个重要特点是内在支持多线程的程序设计。多线程的程序设计具有广泛的应用。线程的概念来源于操作系统进程的概念。进程是一个程序关于某个数据集的一次运行。也就是说,进程是运行中的程序,是程序的一次运行活动。线......
  • 自动化测试基础
    优缺点自动化测试的优点自动化测试可重复执行,能执行更多、更频繁的测试。能执行一些手动测试比较困难或不可能进行的测试。能更好地利用资源,可利用晚上或周末空闲的设备执行自动化测试。自动化让测试人员腾出时间和精力,测试人员可以投入更多的精力设计出更多、更好的测试用......
  • [Python学习日记-58] 开发基础练习1——员工信息查询
    [Python学习日记-58]开发基础练习1——员工信息查询简介题目答案简介        该练习结合了函数和一些常用的模块开发了一个使用命令行交互的员工信息查询程序,可以巩固实践之前学习的内容。题目一、程序需求        现要求你写⼀个简单的员⼯信息增删......
  • 5、片元着色器之基础光照模型:Phong模型和Blinn-Phong模型
    1、什么是Phong光照模型?Phong模型就是在兰伯特模型的基础上增加了镜面反射光的计算。具体来说,兰伯特模型只考虑漫反射光,而Phong模型在此基础上引入了镜面反射光的概念,以模拟光线在光滑表面反射时产生的高光效果。镜面反射光的计算考虑了观察者的视角和光源的方向,能够产生更......
  • Mock.js基础
    1.mock.js的概念Mock.js是一个用于生成虚拟数据的JavaScript库,主要用于前端开发和测试。它可以帮助我们开发者在没有真实后端接口的情况下,模拟数据请求,方便进行开发和调试2.Mock.js的主要功能生成随机数据:Mock.js可以生成多种类型的随机数据,如字符串、数字、日期等。......
  • C++编程语言:从基础到高级
    C++是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化、面向对象和泛型编程。C++由丹麦计算机科学家BjarneStroustrup于1979年在贝尔实验室开始开发,最初作为C语言的扩展,称为“CwithClasses”。1983年,正式更名为C++。C++以其高效、灵活......
  • C语言判断单链表是否相交
    ////CreatedbyAdministratoron2024/10/29.//#ifndefLINK_H#defineLINK_H/***链表的结构体*/typedefstructLink{intelement;structLink*next;}link;#endif//LINK_H////判断单链表是否相交//CreatedbyAdministratoron2024/10/30......