C语言快速入门——1.0

发布于 2022-08-06  32 次阅读


C语言快速入门秘籍


本秘籍仅用于快速入门


1,关于IDE

        IDE全称“Integrated Development Environment”,中文意思为“集成开发环境”,是用于提供程序开发环境的应用程序,是集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。

        对于刚刚入门的同学来说,使用最简单的Devc++就足够了,当然也可以使用vscode , visual studio 以及 clion 。

2,一个完整的程序

程序代码:

① #include <stdio.h>
//本行为注释,以上为头文件,以下为函数。
② int main()
③ {
    ④ printf("Hello dumpline!");
    ⑤ return 0;
⑥ }

运行结果:

Hello dumpline!

这是一个最简单的c语言程序,很多人也是从这个程序开始入门的。

接下来我们一起分析一下,这个程序由什么组成。

一,头文件


我们为什么要使用头文件呢?

答: 在程序的④行中,我们使用了 printf 函数,printf 函数就集成在 <stdio.h> 的头文件中,我们只有在引入了<stdio.h> 头文件的时候才能使用<stdio.h> 中集成的函数。

关于函数是什么,可以往下滑,查看函数部分的内容。


我们有哪些常用的头文件呢?

头文件描述
<stdio.h>常用的输入输出函数
<string.h>集成了一些关于字符串的函数
<math.h>集成了一些关于数学的函数
<time.h>集成了一些时间函数
<stdlib.h>集成了一些比较实用的函数

这就是一些我们常用的头文件,如果需要具体的了解其中的内容就需要自己去查一下了。


二,常用数据类型

类型称字节大小数据范围
char1-128~127或者0 ~ 255%c
int2 或 4 字节-32768 到 32767 或 -2147483648 到 2147483647%d
long long8字节-9223372036854775808~9223372036854775807%lld
float4字节1.2E-38 ~ 3.4E+38%f
double8字节2.3E-308 ~ 1.7E+308%lf

除了这些之外还有特殊的数据类型

1,数组

就是由一堆数字排列起来组成,可以看做一列火车,每一节车厢里都住得有不同的人(数字)。

int a[1000]; 
double b[1000];
long long c[1000];
float d[1000];

括号内的数字为数组的大小

2,字符串

字符串也可以叫做字符数组,就是将数组里的数字换成字符罢了。

char a[1000];

括号内的数字为字符串的大小

数组的输入

int a[1000];
int i;
for(i=0;i<10;i++)
{
    scanf("%d",&a[i]);
}
输入一个由10个字符组成的字符串。

字符串的输入

char a[1000];
int i;
for(i=0;i<10;i++)
{
    scanf("%d",&a[i]);
}
输入一个由10个数字组成的数组。

三,变量名

想怎么取怎么取,当然要避免与以及存在的名称相同以及必须用字母或者下划线为开头且变量名中不能用空格。变量的值是可以改变的,同一个变量在不同的情况可能有不同的值。

当然你可以用拼音(bushi

例如:

int temp;//定义了一个int数据类型的变量,名叫temp
char str;//定义了一个char数据类型的数据变量,名叫str
double num;//定义了一个double数据类型的数据变量,名叫num

关于常量

就是设定一个变量为固定的值,在这之后调用此变量就是调用这个值,可以做到改变一处,同时改变很多处的值。

#define mod  100000 

意思就是规定mod 的值为100000,
那么在此之后的程序中如果使用mod就是在使用100000,
如果改变mod的值,那么就会改变所有使用mod的值。

const int mod = 999;
意思就是固定 mod 的值为999
注意这个需要打分号

注意:所有的常量规定都卸载头文件后面,函数之前,更有利于查看以及修改和使用。


3,部分常用运算符

算数运算

运算符作用
+
-
*
/
=赋值
%取余,既求余数
++自加,可以看做:a+=1也是 a = a+1(就是将a+1的值赋给a);
--自减,可以看做:a-=1也是 a = a-1(就是将a-1的值赋给a);

关系运算符

运算符作用
a==b如过a和b相等则为真
a!=ba和b不相等则为真
a<ba小于b则为真
a>ba大于b则为真
a<=ba小于等于b则为真
a>=ba大于等于b则为真

4,一些简单的逻辑语句。

1,if else 判断语句

例如:

if(a>3)
{
    printf("yes");
}
else
{
    printf("no");
}

该语句的语法格式为:

if (条件语句)
{
    执行语句①;
}
else
{
    执行语句②
}

意思就是,满足条件语句的时候就运行 执行语句① 否则运行 执行语句②。

上面的样例程序中,条件语句就是 a>3 .如果 a的值为4,那么4比3大,所以条件成立 ,运行 打印 yes。如果a的值为2,2比3小所以大于3 的条件就不成立,运行 打印no。

注意:其中的括号 和 大括号 最好不要乱省略 !


2,switch case语句

switch (表达式)
{
    case 常量表达式1:    语句1
    case 常量表达式2:    语句2
       ┇
    case 常量表达式n:    语句n
    default:        语句n+1
}
  1. switch 后面括号内的“表达式”必须是整数类型。也就是不能是浮点数,小数类型。
  2. switch 下的 case 和 default 必须用一对大括号 {} 括起来。
  3. 通常情况下Switch语句再执行完一句后会继续执行下一个语句,当我们不需要继续执行下面的语句的时候,我们就在后面加一个break跳出就行了。 具体使用如下 switch (val) { case 1: printf("1!\n");//当val == 1 break; case 2: printf("2!\n");//当val == 2 break; case 3: printf("3!\n");//当val == 3 break; default://否则就数不对劲 printf("该数不对劲,请修改\n"); }

3,循环语句

循环循环,顾名思义,就是反复的执行同样的操作。

① for循环

for(表达式1;表达式2;表达式3)
{
    执行语句;
}

表达式1:为初始化语句,在第一次执行到的时候执行一次,之后遍不会再执行。

表达式2:为条件语句,既满足表达式2 ,则循环继续,否则循环结束。

表达式3:为操作语句,通常有自增或者自减的功能,使条件越来越靠近不满足,直到不满足条件结束循环。

例如:

int i;
for(i=1;i<=3;i++)//首先将i初始化为0,条件为i小于等于10,每次循环后都要自加1
{
    printf("%d ",i);//执行语句为打印i的值
}

输出的结果为

1 2 3

这个程序的运行顺序如下

第一次到for 循环语句,初始化 i 为 1 , 判断 i <= 3然后执行 printf语句,然后 i自加。

第二轮循环:无初始化,此时的i=2,直接判断 i <= 3 然后执行printf语句,然后i自加

第三轮循环 ;i=3;同上

第四轮循环;i=4;判断不符合 i<=3 所以结束循环。

②,while循环

while(条件语句)
{
    操作语句
}

也就是当满足小括号里的条件语句时,一直反复循环执行大括号中的操作语句,但是在操作语句中会有语句是条件逐渐变的不满足,直到不满足就结束循环。

当我们需要这个循环不停的执行下去的时候,我们只需要将条件语句设为永真式(就是不受操作语句影响,永远是满足的式子,例如:while(1) 就会一直执行下去)。

例如:

int a = 1;
while(a<=3)
{
    printf("%d ",a);
    a++;
}

输出结果为

1 2 3

其中就通过a++ 的操作语句 使得逐渐不满足条件,直到循环结束。

4,一些特殊的语句

①continue — 跳过当前的循环

可以使用在for 循环 和 while循环中,指跳过当前这一次循环,而不结束循环。

②break — 结束该循环

也可以使用在for循环和while循环中,指的是结束这个循环,而不是只结束当前的循环


5,函数

如果理解不了,大家各异参考高中数学中的函数,F(x),也就是将x 进行F() 的处理所得到的结果。

例如 F(x) = 2x;

输入 x = 1;

F(1) = 2;

同样的,c语言的函数也就是返回 一个结果。

1,标准输入输出函数

1,scanf

scanf("%d",&a);

这是一个输入函数,故名思意,就是从键盘读取值。

在双引号中间有一个 %d 是什么含义呢?

其实这个 %d 的意思 就是告诉IDE 即将读入的数据是什么类型的,数据类型当然不止 %d 还有 %c %s %lld %f %lf 等等。详情可以看下面的数据类型的内容。

&a 代表的意思是将键盘输入的数据 存入到名称为a的变量中。其中的 & 符号就代表指向变量

2,printf

printf("%d",a);

这是一个输出函数,既将a的值显示出来。

双引号中的 %d 的含义和上面的输入函数是一样的,也是告知数据的类型,而数据的值就是变量a 中存贮的值

关于变量


2,接下来我们写一个F(x) = 2x 的函数

//首先,因为我们需要得到一个整数的返回结果,所以我们就使用 int类型的函数
int _2x(int x)
{
    return 2*x;
}

        这是一个完整的函数,首先需要声明函数的类型(该函数类型为int),以及设定函数的名字(该函数的名称为 __2x ),函数的命名规则和变量的命名规则差不多,接着 一个括号,里面装着传进来的形参。也就是其中的x 代表在调用这个函数的时候所传的数据。最后在大括号里的是这个函数的执行语句,也就是完成要求所需要执行的步骤。然后再return 返回 一个 int 类型的结果。 注意:前面的所有数据类型都可以作为函数类型使用。且还有一种void 类型,也就是返回值为空,就是不返回东西既调用该函数不会得到返回值。

3,需要注意的是 int main()函数

这是该程序的主函数,也就是该程序的入口。是每一个程序不可缺少的一个函数。

#include<stdio.h>

//这就是自定义的函数
int _2x(int x)
{
    return 2*x;
}

//这就是主函数
int main()
{
    int  a;
    scanf("%d",&a);
    int b = _2x(a);//就是将调用_2x 函数所得到的结果赋予b
    printf("%d",b);
    return 0;
}

在这个程序中,_2x 就是一个典型的函数,我们可以以此类推,写不同类型的不同名称的函数,返回不同的值,这样在主函数中就不需要再写所有的求值过程。同样的过程只需要去调用函数就可以了。


6,结构体

struct 结构体名称()
{
    结构体的内容
};

名称可以自行设定,命名规则和函数命名规则相同。

结构体内容可以包含所有类型,int,double,char,float,long long等所有类型了,也可以是数组以及字符串。

例如

struct node{
  int a;
  double b;
  char c[100];  
};


int main()
{
    node x;
    x.a=1;
    x.b=2.5;
    x.c="dumpline";
    return 0;
}


可以通过这种方式来自定义数据类型。构造出我们需要的数据类型。