十分钟如何学会C语言?掌握规律举一反三考试提50分!

2022-01-06 09:10:20 浏览数 (1)

前言

上周写了一篇 20 分钟学会 C 语言与Python的文章——《一万字一篇文20分钟学会C语言和Python,十四年编程经验老鸟传授经验之道》,之后见粉丝转了一个话题“十分钟如何学会C语言”,我就在想是否能够十分钟呢?答案是可以的,不过是针对于C语言的一般知识点完成语法入门。不过若你在进行考试时,若发现不会可以用这几个规律对题目进行琢磨,说不定就写出来了。

在C语言中或者很多编程语言在设计时都会遵从一定标准或者说规律,我们接下来先看看其中规律再进行 C 语言的学习吧。

你看得懂这个规律你就已经一般语法入门了

在 C 语言进行一般的语法编写时其实都是遵从了严谨的逻辑,而这些逻辑会在不同的知识点及概念中进行复用,我们就用这些规律对C语言进行学习。以下是总结出的一般语法规律如果你很理解下面的话,那么你已经掌握了大部分的C语言一般语法了:

  1. 双引号引起来的内容为字符串
  2. 函数就是某一个功能,用什么功能用什么函数
  3. 第一次遇见一个有值的内容或容器需对其进行类型的说明
  4. 类型说明放在开头
  5. 有逻辑判断时将条件添加到圆括号中
  6. 一般数学运算方式跟日常生活中的数学运算类型
  7. 一条语句叫做语句,多条语句叫做代码块,不同范围或者层级下的代码块使用花括号进行标记,在数组中用于标记数组内容
  8. 逗号用来分隔
  9. 等于号将右边内容赋值给左边变量
  10. 复杂、简单的表达式就类同于一个数学公式
  11. 一个表达式中若需要输出内容,那么肯定先将这个表达式计算后才最后输出
  12. 所有有功能性的标点符号必须是英文标点
  13. 参数就是给予函数进行运算所必备的传入数据,传入数据一般将内容填写在函数的括号内
  14. 变量就是存储一个值的容器
  15. 数组就是存储多个值的容器
  16. 代码是自上而下的,例如变量需要先创建才可以使用
  17. 占位符顾名思义就是为一个值占据一个位置,也就是帮忙排队真正使用到对应的值的时候将会换成正主
  18. 结构性代码需紧密贴合,中间不能出现其他的代码
  19. 关键字就是表示接下来说明要该关键字进行对应的事件

注:本篇查看对象最好是已经学了C语言一两节课的同学,因为在此篇中将不会讲解代码在哪编写以及用什么软件进行编写等问题。

开始计时正式开始学习

其实以上那几个点就已经包含了很多C语言语法的内容,我们接下来就举例并且适当的进行教学完成 C 语言一般语法的入门。

01 输出显示

根据以上规律中的第二点,想要输出内容那么就需要使用一个可以输出的函数,那么这个输出内容的函数在 C 语言中是 printf();我们的内容若想输出显示 HelloWorld 那么 HelloWorld 是一串字符串,那么根据以上规律的第一点我们写成 “HelloWorld”,那么在这里 “HelloWorld” 跟 printf() 怎么样结合在一起呢?此时我们再看第十三点规律“参数就是给予函数进行运算所必备的传入数据,传入数据一般将内容填写在函数的括号内”,得知,直接将内容填入 printf() 的圆括号中即可:

代码语言:javascript复制
printf("HelloWorld");

利用以上总结的规律提升学习效率简直易如反掌。

02 变量

变量根据规律中的第十四点我们得知,变量为一个容器,并且可以存值;但是此时我们还需要查看第三点“第一次遇见一个有值的内容或容器需对其进行类型的说明”;我们在创建一个变量时,这个变量是对值进行存储的容器,那么则需要对这个变量进行类型的说明,根据第四点我们得知类型的说明一般放在开头。我们在此举例几个类型说明符:int(整数类型)、char(字符类型)、float(浮点数类型)。这几个类型说明符在第一次创建的时候给予说明,即是创建了这几个类型的变量,创建一个变量的一般格式如下:

代码语言:javascript复制
int 变量名称=变量值

根据以上的格式我们将变量名称改为 abc则是创建了一个名为 abc 的整数类型的变量,那么里面存储的值肯定为整数;等于号可以从第九点规律中得知这就是将右边的变量值存储到左边的变量中,那么代码就可以写成:

代码语言:javascript复制
int abc=10;

03 变量输出

变量输出意思则是将变量进行显示,显示我们使用可以用作显示的函数 printf(),假设此时我们有一个变量 abc所存储的值是10,那么显示代码是直接写成这样吗:

代码语言:javascript复制
printf(abc);

这是不对的,那是这样吗?

代码语言:javascript复制
printf("abc");

这样也是错的,这样直接显示了 abc 这个字符串,那么我们该怎么做呢?这个时候看规律的17点,我们需要使用占位符。不同类型使用的占位符不同,每个类型对应一种,或者你可以理解为占位符就是这些变量的男朋友,逛街累了就需要他们去排队,排完队了正式买东西女主才过来挑。在这里 abc 是 int 整数类型,整数类型的占位符为 %d,那直接输出 %d 就行:

代码语言:javascript复制
printf("%d")

那这样对不对?当然不对了,他女朋友哪去了呢?所以在这里我们需要指定一下他的女朋友;我们看规律的第八点,用逗号进行间隔。我们也不需要隔多远,在双引号外用逗号隔开就行,双引号内就像排队的队列,双引号外就是等待的“女朋友”们。

代码语言:javascript复制
printf("%d",abc)

为什么我刚刚说是“女朋友”们?那是因为不能让女生累这所以就一堆男性朋友都去排队去了。假如现在有3个变量,分别是 abc、a1、a3,他们都是整数类型,如何输出呢?那你就看下面的代码了:

代码语言:javascript复制
printf("%d --- %d --- %d",abc,a1,a3)

以上代码中的 — 会照原样输出显示,因为这些都是自己去为自己去排队的,那么在 printf 中的这三个 %d 是怎么对应的呢?第一个 %d 就是对应 abc,第二个就是对应 a1 然后依次类推,最后结果如下:

这一小点完整的代码如下:

代码语言:javascript复制
int abc=0;
int a1=10;
int a3=20;
printf("%d --- %d --- %d",abc,a1,a3);

04 逻辑判断

逻辑判断就是一个情形下条件是否成立从而执行不同的流程。例如明天天气好就去打球,天气不好就在家打游戏,天气好和天气不好就是条件,那么用 C 语言的逻辑判断语句如何表示呢?看下面这个一般的语法标准:

代码语言:javascript复制
if(条件){
	错了干什么这里打代码
}else{
	对了干什么这里打代码
}

以上这个格式其中 if 就是表示接下来要进行逻辑判断,从第五点得知,逻辑判断条件就是放在圆括号之中的,再接着从第七点中得知,花括号内编写的则是代码块,我们可以在其中编写多条代码。

我们可以根据以上的格式编写如下代码:

代码语言:javascript复制
int a=3;
if(a==3){
	printf("a 是 3 ");
}else{
	printf("a 不是 3 ");
}

那以上的代码我们就应该很清楚了,if 是逻辑判断,那么圆括号内的就是表示条件花括号内的就是表示条件是否正确从而执行的不同代码。在 C 语言中使用两个等于号表示判断等于号左边内容值是否与右边内容值相等。

我们也可以去掉 else 部分,这样如果条件 a==3 判断错误将不会执行别的内容,由此得知 else{} 就表示条件错误后需要执行的部分,而花括号内的代码则是条件错误后具体需要执行的内容。

在此我们还可以判断多个条件:

代码语言:javascript复制
int a=5;
if(a==3){
	printf("a 是 3 ");
}else if(a==4){
	printf("a 是 4 ");
}else if(a==5){
	printf("a 是 5 ");
}else{
	printf("a 不是 3 ");
}

以上出现了一个 else if,这又是什么呢?其实就是判断这个变量 a 如果不等于 3 就继续下一个条件判断,判断成功就只执行其中一个流程内的代码,随后跳出整个 if 结构。

在此注意,根据规律十八点说明,结构之间必须紧密贴合不能够在在中间打其他的代码哟,例如下面这个就是错的:

代码语言:javascript复制
int a=5;
if(a==3){
	printf("a 是 3 ");
}else if(a==4){
	printf("a 是 4 ");
}
int b=0;
else if(a==5){`在这里插入代码片`
	printf("a 是 5 ");
}else{
	printf("a 不是 3 ");
}

05 循环

在 C 语言中我们有 while 循环、for 循环等,在此用这两个举例。while 和 for 都是关键字,根据规律十九点我们可以得知,while 就是表示开始循环,那么在此处我可以告诉你,最简单的循环是由一个关键字、一个条件和对应代码块组成的。条件根据规律第五点知道是需要放在圆括号内,随后再看规律第七点,花括号内表示需要执行的代码块,那么查看以下示例:

代码语言:javascript复制
int a=0;
while(a<10){
	printf("我在循环...");
	a  ;
}

那么就可以很清楚的知道 while 就是表示要开始循环,圆括号内的条件是 a<10,这是这个循环执行的时候需要判断的条件,若这个条件错了那么则不再进行循环,最后再看花括号内的代码,输出显示 “我在循环…” 这个字符串;在这里需要说一下 a ,a 表示a这个变量自己自增加1,意思就是a最开始是0,自增1后那就是1了,随后每次循环都执行一次,知道 a<10 这个条件不对则不再进行循环。

那还有一个 for 循环呢?for循环也很简单,不过跟 while 循环会有一定的差别。

代码语言:javascript复制
int a;
for(a=0;a<10;a  ){
	printf("我在循环...");
}

以上代码中,for 表示循环,但是在圆括号后中不止有条件。圆括号中的 a=0 表示第一次循环执行一次 a=0,也就是把 0 存储到 a 变量中,a<10 肯定是条件了,随后 a 则是表示每次循环 a 就会加1。

以上结果跟 for 循环的结果都一致。

06 数组

我们可以从第十五点规律中得知,数组就是存储多个值的容器,那么创建一个容器肯定要说明类型,然后给予一个数组名,最后给予一个内容,我们可以根据第七条规律得知,数组的内容是使用花括号标记的,那具体如何写呢?我们可以查看一下格式:

代码语言:javascript复制
类型 数组名[]={值1,值2}

从以上格式中我们可以得知,开头就是类型,随后就是数组名,在数组名右侧是有一个方括号,表示这个是数组,随后等于号右边用花括号将其值进行了引入,并且不同值之间使用了逗号进行分隔。那我们现在看一个C语言的数组代码:

代码语言:javascript复制
int a[]={9,6,3,2,5,8,7,4,1,0};

以上代码中创建了一个整型数组 a,里面存储了 9,6,3,2,5,8,7,4,1,0 ,他们之间使用了逗号进行分隔。

那我现在想显示这个数组内容怎么办?很简单,使用 printf() 函数呗,由于我们这个数组值的类型是整型,肯定使用 %d 作为占位符,那么这样写肯定是没错的:

代码语言:javascript复制
printf("%d ");

那接下来怎么写呢?我们如果这个时候想显示第一个元素也就是 9,那怎么显示?这时通过一个叫做下标的知识点就可以完成了。例如 a0就表示9,a1就表示6,a2就表示3,从0开始依次递增:

代码语言:javascript复制
int a[]={9,6,3,2,5,8,7,4,1,0};
printf("%d ",a[2]);

07 自定义函数

自定义函数跟变量声明一样,类型说明符要放开头,可以查看第四点规律。自定义函数的格式如下:

代码语言:javascript复制
类型说明符 函数名(){
	函数体代码
}

函数是一个功能,那么自定义函数就是自己去写一个功能,在此我编写一个自定义函数,该自定义函数的功能就是返回一个值:

代码语言:javascript复制
int r1(int a,int b){
	return a b;
}

以上函数 int 表示返回值是整数类型,r1 是这个函数的名称,圆括号内是参数;int a和 int b 表示接收两个类型的函数,但是接收后需要有一个标记去引用,在这里就是对这两个函数进行命名为a和b,他们之间使用逗号进行间隔,规律符合第八点规律;随后在花括号中编写这个函数的函数代码,符合第七点规律;在花括号内 return 表示将 a b 的结果进行返回,你若传入两个数字一个是 11 一个是 2 那么将会返回3,如下完整代码示例:

代码语言:javascript复制
#include<stdio.h>

int r1(int a,int b){
	return a b;
}

int main(){
	int a;
	a=r1(11,2);
	printf("%d ",a);
}

在函数中 return a b 其中 a b 就是表达式,将会先计算,最后再返回,符合第十一点规律。在使用函数时使用函数名进行调用,传入的值使用逗号进行间隔,最终将会返回出来赋值给a变量;其实 a=r1(11,2); 这一行代码也符合规律第十一点,将会先进行函数的内容最后才会返回出来。

08 结构体

结构体其实就是一种复合的数据类型,使用一个结构体,你可以为结构体内的元素进行赋值从而定义一种类型的不同属性。结构体也非常符合之前函数、变量创建的方式,我们先看一个代码:

代码语言:javascript复制
struct human{
    int age;
    char sex;
    char name;
} ;
struct human xiaoming; 

以上代码 struct 就是结构体的一个关键字,human 就是这个机构体名,花括号内就是结构体的复合元素,在这里有整型变量 age、字符类型 sex以及字符类型 name,在花括号结尾再添加分号表示结束即可。

那么此时 human 就是表示一个结构体或者说是你自己创建的一种数据类型;之前我们说过直接使用数据类型修饰一个变量就可以了,不过在结构体中你还需要表示这个是个结构体变量,所以在开头加一个 struct 进行标记写成 struct human xiaoming; 。

那如何使用呢?我们看以下的示例:

代码语言:javascript复制
#include<stdio.h>

void main(){
	struct human{
	    int age;
	    char sex;
	    char name;
	} ;
	struct human xiaoming; 
	xiaoming.age=10;
	xiaoming.sex='T';
	xiaoming.name='M';
	printf(" age 为:%dn",xiaoming.age);
	printf(" sex 为:%cn",xiaoming.sex);
	printf(" name 为:%cn",xiaoming.name);
}

以上代码中 %c 则表示为字符类型数据进行占位,xiaoming.age 表示xiaoming 这个使用这个结构体变量之中的 age 属性并且赋值为 10;xiaoming.sex=‘T’; 则表示给 sex 属性赋值为 T,在 C 语言中字符数据是使用单引号进行表示的。

0 人点赞