c语言基础
一、变量与常量
(1)常量:值不能被改变的量,数字、字母等
整型常量
c语言中有十进制、八进制、十六进制整数,例如10、056、0x8A等。
实型常量
十进制小数以及指数形式小数,例如1.23、.23、12.34e3等
字符常量
普通字符以及转义字符,例如’A’、’a’、’\n’(换行)等
字符串常量
若干字符,例如’abc123’等
(2)变量:值能够被改变的量,需要用关键字定义与基本数据类型配合使用
定义格式
数据类型 变量名; int num;
使用格式
变量名 num
初始化格式
数据类型变量名=数值; int num=10;
#include <iostream>
using namespace std;
int main() {
int num1=10;
int num2=20;
cout << num1+num2<<endl;
return 0;
}
二、基本数据类型
什么是基本数据类型:对数据分配存储单元的安排
(1)整型
int(整型4字节)、short(短整型2字节)、long(长整型8字节)
(2)字符型
char(字符型1字节)
(3)浮点型
float(单精度浮点型4字节)、double(双浮点型8字节)
1字节=8位([0000 0000])
#include <iostream>
using namespace std;
int main() {
int num1=10;
int num2=20;
cout<< num1 << '\t' << num2 <<endl;
char char1='a';
char char2='z';
cout<< char1 << '\t' << char2 <<endl;
float float1=1.23;
float float2=2.34;
cout<< float1 << '\t' << float2 <<endl;
double double1=3.45;
double double2=4.56;
cout<< double1 << '\t' << double2 <<endl;
return 0;
}
三、ASCII码表

四、格式化输入与输出
什么是输出
计算机箱输出设备输出数据:printf(格式控制,输出列表); printf(“%d”,num);
什么是输入
从输出设备向计算机输入数据:scanf(格式控制,地址列表); scanf(“%d”,&num);
#include<iostream>
using namespace std;
int main() {
int num;
printf("请输入num值\n");
scanf("%d",&num);
printf("输出num值");
printf("%d\n",num);
//清除缓冲区中的换行符
while(getchar() != '\n');
char ch1;
printf("请输入ch1值\n");
scanf("%c",&ch1);
printf("输出ch1值%c\n",ch1);
//清除缓冲区中的换行符
while(getchar() != '\n');
float float1;
printf("请输入float1值\n");
scanf("%f",&float1);
printf("输出float值\n");
printf("%.2f",float1);
return 0;
}
五、运算符
运算符:用于进行相关运算的特殊符号
运算符的优先级以及结合性:优先级表示运算的先后顺序,结合性表示同级运算符的运算方向
分类:算术运算符、关系运算符、逻辑运算符、条件运算符、位运算符、赋值运算符
算术运算符
用于进行算术运算,结果为确切的值
+(正号)、-(负号)
单目运算符,结合性自右向左,表示正负关系(+a,-a)
*(乘号)、/(除号)、%(取余)、+(加)、-(减)
双目运算符,结合性自左向右,简单算术运算
++(自增)、--(自减)
单目运算符,结合性自右向左,自增自减运算,分为前置自增和后置自增(++a,a++,--a,a--)
#include<iostream>
using namespace std;
int main(){
int num1=5;
int num2=2;
int num3=num1/num2;
int num4=num1%num2;
printf("%d\n",num3);
printf("%d\n",num4);
printf("%d\n",++num4);
printf("%d\n",num4++);
printf("%d\n",num4);
return 0;
}
关系运算符
用于进行算术运算,结果为1或0
<(小于),<=(小于等于),>(大于),>=(大于等于),==(等于),!=(不等于)
双目运算符,表示运算符两边的关系,关系成立结果为1,不成立结果为0(a<b)
逻辑运算符
用于进行逻辑运算,结果为1或0
&&(逻辑与)
双目运算符,同真为真,有假为假(a&&b)
||(逻辑或)
双目运算符,同假为假,有真为真(a||b)
!(逻辑非)
单目运算符,真为假,假为真(!a)
计算机判断真假:0为假非0为真
条件运算符
进行条件运算,结果根据条件判断
?:(条件运算符)
三目运算符,a为真则输出b的值,a为假则输出c的值(a?b:c)
#include<iostream>
using namespace std;
int main() {
int num1=5;
int num2=3;
printf("%d\n",num1++);
int num3;
// 输出num1和num2中较大的值
num3=num1>num2?num1:num2;
printf("%d\n",num3);
return 0;
}
位运算符
&
位与:操作的两个位都是1,得到的结果就是1,其他情况结果都是0
|
位或:操作的两个位都是0,得到的结果就是0,其他情况结果都是1
~(单目):
位非:位的值为1,结果变为0。值为0,结果变为1
^
位异或:操作的两个位不相同,得到的结果就是1,其他情况结果都是0
<<
位左移:将左操作数据的数据位往左移动右操作数表示的位数,左边移出的数据位丢弃,右边补0
>>
位右移:将左操作数据的数据位往右移动右操作数表示的位数,右边移出的数据位丢弃,正数左边补0,负数左边补1
#include<iostream>
using namespace std;
int main() {
int num1=2;
int num2=3;
printf("%d\n",num1 & num2);
printf("%d\n",num1 | num2);
printf("%d\n",~num1);
printf("%d\n",num1^num2);
printf("%d\n",num1>>2);
printf("%d\n",num1<<2);
//两数交换
num1=num1^num2;
num2=num2^num1;
num1=num1^num2;
printf("%d\n",num1);
printf("%d\n",num2);
return 0;
}
其他运算符
圆括号 () 强调优先级,强制转换类型
六、优先级与结合性
优先级:有多个运算符同时存在优先级高的先运算。优先级不同的运算符参与运算时决定先后顺序

结合性:如果运算符的优先级相同,那么先后由“结合性”决定。
C语言中大多数运算符的结合性都是从左往右,只有三个运算符是从右往左的:单目运算符、三目运算符、双目运算符中的赋值运算符
七、表达式
表达式:一种有值的语法结构,由运算符将变量、常量、函数调用返回值结合而成
变量常量表达式:a、sum、1、0.5、PI
算术表达式:a+b、a-b+c、a*b+’A’、a/b-c+10、i++ + i++ + ++i
赋值表达式:a=b、a*=b+=20、a=b=c=10、a=(b=4)
逗号表达式:1+2,3+4 (10,a*5), a+10
关系表达式:x==y、x<=y、 x!=y
逻辑表达式 10&&20、 0||1、(a>b)&&(!0)
复合表达式:x=(y=(a+b),z=10)
八、语句
当程序运行时执行某个动作的语法结构,它改变变量的值,产生输出,或处理输入
以分号结尾;(注意是一个英文输入法下的分号)
c语言包括4类语句
空语句:只有一个分号的语句,什么都不做
表达式语句:在表达式的末尾加分号就形成了一个表达式语句
语句块:用{}将一系列语句括起来就是语句块,一般来说,其大功能上相当于一条语句
控制语句:分为三类,循环语句、选择/条件语句、转移语句
九、控制语句
循环语句、选择语句
if语句
如果表达式为真,就执行后面紧跟着的第一个语句
如果表达式为假,就不执行后面紧跟的第一个语句
一个if语句,一定会有(表达式)
一个if,只管后面一个语句
一个else,只管后面一个语句
else必须和if匹配,不能单独使用
if(表达式)
{
语句:
}
if(表达式)
{
语句;
}
else if(表达式)
{
语句;
}
else
{
语句;
}
if(表达式)
{
这个语句可以是if语句
}
else
{
这个语句可以是if语句
}
-
if:关键字,“如果 是否”
-
():1 跟在if后面 2 后面不要加;
-
表达式:能够判断真假
-
()后面跟{}
-
{}里面写代码
#include<iostream>
using namespace std;
int main(void) {
if (6<7) {
printf("6<7\n");
}
else {
printf("7<6\n");
}
return 0;
}
switch语句
switch(表达式)
{
case 值:
语句体;
break;
default:
语句体;
break;
}
1、switch:关键字 “开关”
2、case:关键字 “案例”,case后面的值,不能与其他case相同。找到对应的case后,所有case失效,开始顺序执行语句
3、break:关键字 “跳出”
4、default:关键字 “默认”,可以省略
5、表达式:能够得到整型的值,表达式必须能够得到一个整型的值
#include<iostream>
using namespace std;
int main(void) {
int case1=1;
switch (case1)
{
case 1:
printf("周一\n");
break;
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");
break;
default:
printf("输入错误,重新输入");
break;
}
}
for循环
直到型循环
for(初始值;条件;改变量)
{
循环体
}
1 (初始值;条件;改变量)都可以忽略
2 (; ;) ==> 无限循环
3 条件:条件为真继续循环
可以嵌套
for(初始值;条件;改变量)
{
for(初始值;条件;改变量)
{
循环体
}
}
举例
#include<iostream>
using namespace std;
int main(void) {
for (int count=0;count<=10;count++) {
cout<<"这是第"<<count+1<<"次循环"<<endl;
}
return 0;
}
多层循环
#include<iostream>
using namespace std;
int main(void) {
for (int count1=0;count1<=2;count1++) {
cout<<"这是第"<<count1+1<<"次外循环"<<endl;
for (int count2=0;count2<=2;count2++) {
cout<<"这是第"<<count2+1<<"次内循环"<<endl;
}
}
return 0;
}
while循环
当型循环
while(表达式)
{
循环体;
}
表达式:表达式为真,循环就继续进行
循环体;需要重复执行的逻辑
循环控制变量及其初始值,需要另外定义
可以嵌套
while(表达式)
{
while(表达式)
{
循环体;
}
}
举例
#include<iostream>
using namespace std;
int main(void) {
int count = 0;
while (count<10) {
printf("这是第%d次循环\n",count);
count++;
}
return 0;
}
多层循环
#include<iostream>
using namespace std;
int main(void) {
int count1 = 0;
int count2 = 0;
while (count1<=10) {
printf("*****这是第%d次外循环\n",count1);
count2=0;
while (count2<10) {
printf("这是第%d次内循环\n",count2);
count2++;
}
count1++;
}
return 0;
}
do while循环
do
{
循环体
}while(表达式);
do : “做” “执行”
While: “当...时”
==> do while “直到”
1、先执行一次循环体再判断循环条件(表达式)
2、如果表达式为真(循环条件成立)继续循环
3、否则结束循环
#include<iostream>
using namespace std;
int main(void) {
int count=0;
do {
cout<<"这是第"<<count<<"次循环"<<endl;
count++;
}while (count<10);
}
4、可以嵌套
#include<iostream>
using namespace std;
int main(void) {
int count1=0;
int count2=0;
do {
cout<<"*****这是第"<<count2+1<<"次外循环"<<endl;
count1=0;
do {
cout<<"这是第"<<count1+1<<"次内循环"<<endl;
count1++;
}while(count1<10);
count2++;
}while (count2<10);
}
break与continue
break语句
用法和作用
1、用在switch语句中,跳出一层switch
2、用在循环语句中,跳出一层循环
continue语句
用法和作用
只能用在循环语句中,提前结束一次循环,进行下一次循环
#include<iostream>
using namespace std;
int main(void) {
int count1=0;
int count2=9;
for (count1=0;count1<20;count1++) {
if (count1==count2) {
break;
}
printf("break这是第%d打印\n",count1);
}
for (count1=0;count1<20;count1++) {
if (count1==count2) {
continue;
}
printf("continue这是第%d打印\n",count1);
}
}

浙公网安备 33010602011771号