问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

【C语言基础:从零开始学习C语言】

创作时间:
作者:
@小白创作中心

【C语言基础:从零开始学习C语言】

引用
CSDN
1.
https://blog.csdn.net/weixin_65610034/article/details/146103784

一、C语言简介

C语言是一门经典的编程语言,广泛应用于操作系统、嵌入式系统、游戏开发等领域。它简洁、高效,是许多程序员入门编程的首选语言。其由Dennis Ritchie于1972年在贝尔实验室开发,最初用于开发UNIX操作系统。它的设计目标是提供一种能以简单的方式编写系统软件的语言。其经历了如下的发展历程:

二、第一个C语言程序

让我们从一个简单的"Hello World"开始吧!

#include<stdio.h>
int main()
{
    printf("Hello World\n");
    return 0;
}

三、关键字和标识符

3.1、关键字

编译器中规定好的一些有特殊含义的单词,可以直接使用,C语言中一共含有32个关键字,其主要分为以下五种类型:

数据类型:   void char short int long signed unsigned float double struct union enum
数据修饰符: const static extern register volatile auto
改类型名称: typedef
运算符:     sizeof
结构语句:   if else switch case default goto for while do break continue return  

3.2、标识符

用户自己命名,用于定义变量、函数名等。

命名规则:

1.由字母、下划线、数字组成;

2.只能由字母或下划线开头,不能以数字开头;

3.不能与关键字重名;

4.不能与其他标识符重名。

如:

ab_123
_ab123

四、数据类型

C语言提供了多种数据类型,用于存储不同类型的数据。常见的数据类型包括:

基本数据类型:

int:整数类型,如:int age=18;

float:单精度浮点型,如:float pi=3.14;

double:双精度浮点型,如:double salary=2000.90;

char:字符类型,如:char grade='A';

其中还有短整型"short int",一般简写为"short"。长整型"long int",简写为"long"。无符号类型"unsigned",表示不带符号,及负号。

派生数据类型:

数组、指针、结构体、联合体等。

基本数据类型所占空间大小(单位:字节)分别为:

char 1

short 2

int 4

float 4

double 8

long 8

可用sizeof()进行测量:

#include<stdio.h>
int main()
{
    printf("%ld\n",sizeof(char));
    printf("%ld\n",sizeof(short));
    printf("%ld\n",sizeof(int));
    printf("%ld\n",sizeof(float));
    printf("%ld\n",sizeof(double));
    printf("%ld\n",sizeof(long));
    return 0;
}

五、变量与常量

5.1、变量

变量是在程序运行中可以变化的量,是用于存储数据的容器。在使用变量之前,需要先声明其类型,如:

int a=18;  //定义一个整型变量a,并赋值18  

5.2、常量

常量是不可改变的值。C语言中可以使用#define或const关键字定义常量。

用#define宏定义:

#define pi=3.1415926  

用const修饰符将变量修饰为常量:

const int age = 18;  

const在进行声明变量的时候,可以让变量在执行的过程中不被改变。

#define与const的区别:

#define是无脑替换;

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

#define定义的常量没有创建空间;

const创建了空间(存储在栈中),空间大小由常量类型决定。

六、运算符

C语言支持多种运算符

算术运算符 +,-,*,/,%

赋值运算符 =,+=,-=,*=,/=,%=

关系运算符 == , ! = , > , < ,> = ,< =

逻辑运算符 &&,|| ,!

位运算符 &,|,^,~,<<,>>

条件运算符(C语言中唯一的三目运算符) ? :

自增自减运算符 ++,--

逗号运算符 ,

指针运算符 * &

sizeof运算符 sizeof

1、"%"代表取模,就是取余,如:9%2==1;

2、a+=1即为a=a+1(注意:C语言中"="用于赋值运算,"=="才表示相等),其余类似;

3、逻辑与:&&,1&&1==1,1&&0==0,0&&1==0,0&&0==0(有0即为0);

4、逻辑或:||,1||1==1,1||0==1,0||1==1,0||0=0(有1即为1);

5、按位与&,如1010&0111 ==> 1010

0111

0010

故1010&0111==0010;

6、按位或|,如1010|0111 ==> 1010

0111

1111

故1010|0111==1111;

7、<<左移,>>右移,如0001<<2==0100;

8、条件运算符的简单运用

a>b?a:b  //判断a是否大于b,若大于输出a,否则输出b  

七、运算符的实战运用

1、通过位操作 操作一个 32 位的数据对其进行如下操作(从第0位开始算):

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

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

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

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

#include<stdio.h>
int Pf_Bin(int dec);
int main(int argc, char const *argv[])
{   
    
    int ch_1;   //0000 0000 0000 0000 0000 0000 0000 0000
    printf("请输入一个整数:");
    scanf("%d",&ch_1);
    printf("这个数的32位二进制:");
    Pf_Bin(ch_1);
   
    ch_1 |= (0x0003<<5);  //第5、6位变为11
    ch_1 |= (0x0003<<7);
    ch_1 ^= (0x0001<<7);  //第7、8位变为10
    ch_1 |= (0x0003<<9);
    ch_1 ^= (0x0002<<9);  //第9、10位变为01
    ch_1 |= (0x0003<<11);
    ch_1 ^= (0x0003<<11);  //第11,12位变为00
    printf("变换后的十进制:%d\n",ch_1);
    printf("变换后的32位二进制:");
    Pf_Bin(ch_1);
    return 0;
}
int Pf_Bin(int dec){   //输出二进制
    int bin;
    int n=0;
    for(int i = 31;i >= 0;i--){
        bin = ((dec >> i) & 1);  
        if(n%4==0){
            printf(" ");  //每输出四个位空一格
        }
        n++;
        printf("%d",bin);
    }
    printf("\n");
    return 0;
}  

运行结果为:

检验:

2、写一个小的登录功能:

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

b、用户只能输错3,次3次后自动退出程序。

#include<stdio.h>
#include<string.h>
int main(int argc, char const *argv[])
{
    char name[128]= "TuTu";
    char password[128]="aa778899";
    char rdnm[128];
    char rdpw[128];
    for (int i = 0; i < 3; i++)
    {
        printf("请输入账户:");
        scanf("%s",rdnm);
        printf("请输入密码:");
        scanf("%s",rdpw);
        if((!strcmp(rdnm,name)) && (!strcmp(rdpw,password))){
            printf("恭喜登录成功\n"); break;
        }
        else{
            if(i<2)
            printf("账户密码错误,请重新登录\n");
            else
                printf("连续三次登录失败,请10分钟后再试\n");
        }
    }
    return 0;
}

其运行结果如下:

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号