C语言基础(二)
为什么要学C语言。首先,C语言作为计算机的通用语言,其功能是无比强大的。C语言简洁、紧凑、灵活,表达方式简练、实用。具有丰富的数据类型。具有低级语言的特点。是一种结构化语言,适合于大型程序的模块化设计。生成的目标代码质量高。C语言语法限制不严,程序设计自由度大等等。这里不做多解释了,接下来让我们进入新一期的学习之路。
本章学习目录
一、运算符与表达式
1.1赋值运算符与表达式:
首先,列出C语言支持的运算符。
赋值运算符支持的是C语言的基本数据类型,包括char、int和double,字符串(字符数组)不能使用赋值运算符。
这里给大家演示一下
#include <stdio.h>
int main()
{
int a=0; // 定义变量C并初始化
int b=21; // 定义变量A并初始化
a=b;
printf("运算符 = 演示,a的值 = %d\n",a);
a+=b; // a=a+b;
printf("运算符 += 演示,a的值 = %d\n",a);
a-=b; // a=a-b;
printf("运算符 -= 演示,a的值 = %d\n",a);
a*=b; // a=a*b;
printf("运算符 *= 演示,a的值 = %d\n",a);
a/=b; // a=a/b;
printf("运算符 /= 演示,a的值 = %d\n",a);
a=200;
a%=b; // a=a%b;
printf("运算符 %= 演示,a的值 = %d\n",a);
return 0;
}
将上述一一列举后的运行结果如下
C:\Users\15865\开发集成\CLion\第一个项目.exe
运算符 = 演示,a的值 = 21
运算符 += 演示,a的值 = 42
运算符 -= 演示,a的值 = 21
运算符 *= 演示,a的值 = 441
运算符 /= 演示,a的值 = 21
运算符 %= 演示,a的值 = 11
进程已结束,退出代码0
1.2算术运算符与表达式:
这里演示一下
#include <stdio.h>
int main()
{
double A=20; // 定义变量A,赋值10
double B=6; // 定义变量B,赋值6
printf("A的值是:%lf\n",A);
printf("B的值是:%lf\n",B);
printf("A+B的值是:%lf\n",A+B);
printf("A-B的值是:%lf\n",A-B);
printf("A*B的值是:%lf\n",A*B);
printf("A/B的值是:%lf\n",A/B);
//printf("A除B的余数是:%lf\n",A%B);
A++; // 自增1
printf("A自增后的值是:%lf\n",A);
B--; // 自减1
printf("B自减后的值是:%lf\n",B);
return 0;
}
C:\Users\15865\开发集成\CLion\第一个项目.exe
A的值是:20.000000
B的值是:6.000000
A+B的值是:26.000000
A-B的值是:14.000000
A*B的值是:120.000000
A/B的值是:3.333333
A自增后的值是:21.000000
B自减后的值是:5.000000
进程已结束,退出代码0
注:这里值得一提的是,C语言规定的是小数后一般加六个零。
对于这一块的重点是学会自加自减思维:
变量的自增或自减有两种写法:
变量名++; // 表示在本次使用变量后再自增;
++变量名; // 表示在本次使用变量前自增;
变量名–; // 表示在本次使用变量后再自增;
–变量名; // 表示在本次使用变量前自减;
示例:
#include <stdio.h>
int main()
{
int a=0; // 定义变量a并初始化
a=10;
printf("a++的值是:%d\n",a++); // 在使用后自增
printf("a的值是:%d\n",a);
a=10;
printf("++a的值是:%d\n",++a); // 在使用前自增
printf("a的值是:%d\n",a);
return 0;
}
运行结果如下
C:\Users\15865\开发集成\CLion\第一个项目.exe
a++的值是:10
a的值是:11
++a的值是:11
a的值是:11
进程已结束,退出代码0
1.3关系运算符与表达式:
关系运算符大概率适用于条件判断,之后会多做解释。
注:
(1)运算符中“=”和“==”不要混淆,“=”是用于对对象赋值,而“ ==”则是用于判断相等。
(2)用于表达范围,可以用关系运算符表示,例如:16岁之后才算是成年可以用:name大于等于16.
例如:
只有16岁以上才可以玩游戏,如果小于16岁则规定每天只能玩两个小时。
示例
#include <stdio.h>
int main()
{
int age=0; // 定义一个整数变量age,存放用户输入的年龄
printf("请输入您的年龄:"); // 提示用户输入
scanf("%d",&age); // 接受从键盘输入的年龄数据
if (age >= 16)
{
// 如果用户已满16岁,执行这段代码
printf("亲,您已成年,欢迎来到王者峡谷,祝您旅途愉快!\n");
}
else
{
// 如果用户小于16岁,执行这段代码
printf("这位拖孩,非常抱歉,基于健康系统!您只能游玩2个小时哦!\n");
}
}
运行结果如下
C:\Users\15865\开发集成\CLion\第一个项目.exe
请输入您的年龄:16
亲,您已成年,欢迎来到王者峡谷,祝您旅途愉快!
请输入您的年龄:10
这位拖孩,非常抱歉,基于健康系统!您只能游玩2个小时哦!
进程已结束,退出代码0
1.4逻辑运算符与表达式:
1.首先是书写格式:
if(表达式1)
{
代码段1;
}
else if(表达式2)
{
代码段2;
}
else
{
断码段n;
}
2.示例
首先,制作一个买车案例。如果年底存款到达30万,则买宝马;到达15万,买二手车;到达10万,买摩托车;到达5万,算了,共享单车挺好。
#include <stdio.h>
int main()
{
int age=0; // 余额,单位万
printf("请输入余额(万):");
scanf("%d",&age);
if (age >= 30) // 买宝马
{
printf("可以买宝马喽。耶比耶比!\n");
}
else if((age>=15)&&(age<30))
{
printf("还行吧!反正有的开。\n");
}
else if((age>=10)&&(age<15))
{
printf("其实速度与激情才是男人的浪漫!。\n");
}
else if((age>=5)&&(age<10))
{
printf("呜呜呜,都起开,我想俺老婆静静了。\n");
}
else {
printf("哈哈哈,重开!\n");
}
}
C:\Users\15865\开发集成\CLion\第一个项目.exe
请输入余额(万):31
可以买宝马喽。耶比耶比!
请输入余额(万):15
还行吧!反正有的开。
请输入余额(万):10
其实速度与激情才是男人的浪漫!。
请输入余额(万):5
呜呜呜,都起开,我想俺老婆静静了。
请输入余额(万):1
哈哈哈,重开!
进程已结束,退出代码0
3.逻辑非:not(非) and(与) or(或)
运算规则
1)&&(或):当且仅当两个运算量的值都为"真"时,运算结果为"真",否则为"假"。
2) || (与):当且仅当两个运算量的值都为"假"时,运算结果为"假",否则为"真"。
3) !(非) :当运算量的值为"真"时,运算结果为"假";当运算量的值为"假"时,运算结果为"真"。
1.5、特殊运算符
1. 分隔符:C语言中,分隔符有逗号、空白符、分号和冒号。
(1)逗号作为分隔符用来分隔多个变量和函数参数;
(2)空白符常用来作为多个单词间的分隔符,也可以作为输数据时自然输入项的缺省分隔符;
(3)分号常用于for循环语中for后面,圆括号内的三个表达式之间;
(4)冒号用于语句标号与语句之间。
2.三目运算符:C语言中的三目运算符是:“?:”。
三目运算符连接三个对象,是C语言中唯一一个三目运算符,又称为条件运算符。
它的一般形式是:【表达式a?表达式b:表达式c】。
C语言中的三目运算符是:“?:”,该运算符连接3个对象,是C语言中唯一一个三目运算符,又称为条件运算符。
二、语句与控制流
一共有三种语句:
其中循环控制流有(while语句、do—while语句、for语句等)
分支控制流语句有(if 语句、if—else语句、switch语句等)
跳转语句有(continue语句、break语句、goto语句等)
接下来将一一介绍,首先是
1.循环控制流:
1)while语句
语法格式:
while(表达式){ //表达式值为逻辑值(真假值)
//需要循环执行的某一段代码}
执行过程:
①判断表达式真假值
②如果表达式为真,则执行循环体,执行完调到①
③如果表达式为假,则退出while语句
例如
int main(void)
{
int i;
i = 0;
while(i < 10){
printf("hello world\n");
i++;
}
return 0;
}
2)do—while语句
语法格式:
do{
//需要循环执行的某一段代码(循环体)
…
…
}while(表达式);//表达式值为逻辑值(真假值)
执行过程:
①先执行循环体
②判断表达式是否为真
③如果表达式为真,则跳到①
④如果表达式为假,则结束循环
例如
#include <stdio.h>
int main(void)
{
int i;
i = 0;
do{
printf("hello world\n");
i++;
}while(i < 10);
return 0;
}
3)for语句
语法格式:
for(表达式1 ; 表达式2 ; 表达式3){ //只有表达式2的值为真假值
//需要循环执行的某一段代码(循环体)}
执行过程:
①执行表达式1
②判断表达式2是否为真,如果为假,则退出循环
③如果表达式2为真,跳转到④
④执行循环体
⑤执行表达式3,跳转到②
例如
int main(void)
{
int i;
for(i = 0;i < 10;i++)
printf("hello world\n"); //当循环体中只有一条语句时,{}可以省略
return 0;
}
2.分支控制流语句
1)if 语句
语法格式:
if(表达式){ //逻辑值:真假值
//需要执行的代码块}
//如果表达式为真,则执行代码块,否则不执行。
例如
int main(void)
{
int i;
for(i = 0;i < 10;i++)
printf("hello world\n"); //当循环体中只有一条语句时,{}可以省略
return 0;
}
2)if—else语句
语法格式:
if(表达式){ //逻辑值:真假值
//代码块A
}else{
//代码块B
}
//表达式为真,执行代码块A,否则,执行代码块B
例如
int main(void)
{
int age;
printf("请输入您的年龄:");
scanf("%d",&age);
if(age < 0){
printf("您真会开玩笑!\n");
}else if(age < 18){
printf("小屁孩,喜喜!\n");
}else if(age < 45){
printf("您是三十而立了!\n");
}else{
printf("您是长寿着呢!\n");
}
return 0;
}
3)switch语句
语法格式:
switch(表达式){ //表达式结果为整形的数值
case 整型常量:
代码块A;
case 整型常量:
代码块B;
case 整型常量:
代码块C;
case 整型常量:
代码块D;
default:
代码块E
}
执行过程:
①计算表达式的值
②用表达式的值与第一个case后的常量比较
③如果相等,则从此处开始执行下面所有代码块
④如果不相等,则与下一个case后的常量比较,跳转到①
3、跳转语句
1)continue语句
(1).只能用于循环语句中
(2).跳出当前这次的循环,执行下一次循环
例如
int main(void)
{
int i;
i = 0;
while(i < 10){
i++;
if(i%2 == 1)
continue;
printf("i = %d\n",i);
}
return 0;
}
2)break语句
(1).用于循环中,表示跳出一层循环
(2).用于switch语句,表示跳出switch语句
例如
int main(void)
{
int day;
printf("请输入天数:");
scanf("%d",&day);
switch(day){
case 1:
printf("今天是星期一\n");
break; //用于switch中
case 2:
printf("今天是星期二\n");
break;
case 3:
printf("今天是星期三\n");
break;
case 4:
printf("今天是星期四\n");
break;
case 5:
printf("今天是星期五\n");
break;
case 6:
printf("今天是星期六\n");
break;
case 7:
printf("今天是星期天\n");
}
return 0;
}
int main(void)
{
int i;
i = 0;
while(i < 10){
i++;
if(i == 6)
break; //用于循环中
printf("i = %d\n",i);
}
return 0;
}
3)goto语句
(1).可以在一个函数中随意跳转
例如
int main(void)
{
int i;
i = 0;
//label:
while(i < 10){
i++;
if(i%2 == 1)
goto label;
label:
printf("i = %d\n",i);
}
//label:
return 0;
}
日后做一些大型项目,需要结合实际,灵活应用!
每日坚持,都会离成功更进一步!提前祝大家元宵节快乐。
瑞斯拜!