好吧,事情还是超出了自的预判,想要同时兼顾两门语言的学习确实挺刺激的(学校的python题真不是人做的),再加上高数和线代的轮番轰炸,这几周稍微有些手忙脚乱,但还算应付得来。
主攻python的学习之余,抽了些许时间看看C。目前大致了解到了分支与循环这方面的知识,简单记录一下C的那些事好了。
引子
C语言支持三种语句结构,分别是顺序结构,选择结构,循环结构。这些结构足以表示世界上所有时间的流程(应该是吧,不然C肯定要再搞几个结构~)
要实现这些结构,需要借助控制语句,控制程序的执行流程。有九种控制语句:
第一类:条件判断语句(分支语句) if,swtich
第二类:循环执行语句 do while ,while ,for
第三类:转向语句 go to ,return ,break, continue
其中第一类和第二类分别对应了分支与循环,第三类穿插在其中实现更多的可能。
分支
简单说吧,一个路口分出来很多岔道,根据不同的目的地选择相应的岔道。
if语句
#include <stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
if (a % 2 == 0)
{
printf("%d是一个偶数\n", a);
}
else
{
printf("%d是一个奇数\n", a);
}
return 0;
}
例如,上面是一个判断奇偶数的程序。
列一下我认为的要点和易错点
1.if语句只对后面的一条语句起作用,所以想要在if后面输入多条语句时,用{}括起来(应该是看作了一条语句)。建议无论如何加上{}
2.关系操作符==与赋值运算符=
作为if(条件)中的条件表达式中别写错了=,不然判断一直是真/假。
tips:把常量写右边。如if(5 == a),这样的话,当不小心写成了=,会报错。
3.else后面可以嵌套if
例如
#include <stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
if (a > 0)
{
printf("%d是一个正数\n", a);
}
else if (a < 0)
{
printf("%d是一个负数\n", a);
}
else
{
printf("%d既不是正数也不是负数\n", a);
}
return 0;
}
4.else总是和前面最近的一个if配套,这和python里面看格式不太一样。某种程度上也说明了习惯性每一句加{}的可行性
swtich语句
看例子
#include <stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
switch(a){
case 1: {
printf("你输入了1\n");
break;
}
case 2: {
printf("你输入了2\n");
break;
}
default: {
printf("你输入的既不是1,也不是2\n");
break;
}
}
return 0;
}
一个很傻的例子,因为想不到哈哈哈哈
要点如下
1.case XX:。XX与switch后面的表达式的值对应,就是走相应的通道
2.switch()。()中只能是整型表达式和字符,而case后面只能是整型常量
3.default用于所有case均不能匹配的情况
4.为什么要break,什么是break?
因为每个case和default是依次执行下来的,就是说,从相应的case通道进入后,之后的case或default都会执行。而加上break可以终止,只执行相应的case
5.每个case和default可以调换顺序
循环
while循环
//在屏幕上打印1到10
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i++;
}
return 0;
}
1.while()。()里面是条件,为真时执行下面的程序,从而实现循环
2.包括初始化部分,判断部分,和调整部分
for循环
这个和while很像,格式如下
for (exp1; exp2; exp3)
语句;
这里面的exp1,exp2,exp3分别对应了while中的初始化部分,判断部分,和调整部分。
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
do while 语句
这个语句最大的特点就是不管三七二十一,直接执行一次
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
} while (i <= 10);
}
会用到的操作符
关系操作符
<, >, ==, <=, >=
他的表达式返回值是一个常量,0(假)或非零(真,一般是1)
这里要注意区分==和=
还有一件事,关系操作符不宜连用,因为程序会分步,举一个不恰当的例子:对x,y,z..要判断想x < y < z,程序会先算x < y,得出0或者1,再把0或者1与z比较,这就很怪。
逻辑操作符
&&:并且
||:或
!:非 !=就是不等于
以上是一些简单的梳理