巨野网站定制,哈尔滨网站排名公司,知名网站定制报价,凡科网站怎么修改01_C语言基础
一、课程目标
1、掌握 C基本语法#xff1a;变量、常量、注释、标识符命名规范
2、掌握C数据类型
3、掌握C的输入和输出
4、掌握C运算符和表达式
5、掌握条件语句
6、掌握循环语句
二、课程内容
1 C初识
1.1 第一个C程序
编写一个C程序总共分为4个步骤…01_C语言基础
一、课程目标
1、掌握 C基本语法变量、常量、注释、标识符命名规范
2、掌握C数据类型
3、掌握C的输入和输出
4、掌握C运算符和表达式
5、掌握条件语句
6、掌握循环语句
二、课程内容
1 C初识
1.1 第一个C程序
编写一个C程序总共分为4个步骤
创建项目创建文件编写代码运行程序
1.1.1 创建项目
Visual Studio是我们用来编写C程序的主要工具我们先将它打开
1.1.3 编写代码
// day01C入门.cpp : 定义控制台应用程序的入口点。
//#include stdafx.h
#include iostream
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{cout Hello world;system(pause);return 0;
} 说明 #include 引入头文件 iostream 头文件标准输入/输出流。cout 是输出所以需要引入。注意此头文件没有后缀名. using namespace std : 引入c名称空间 std。std是c标准库的命名空间。 引入前调用cout 必须使用 std::cout引入后可直接使用cout int _tmain(int argc, _TCHAR* argv[])程序的入口主函数一个项目中只允许一个主函数。 int main()
{}
#include 尖括号和双引号(“”)的区别是什么
编译器搜索路径的不同尖括号 : 编译器从标准库路径开始搜索
双引号 : 编译器从用户的工作目录开始搜索,找不到就继续在标准库路径进行搜索。
1.1.4 运行程序
1.1.5 main函数的形式 无参数 #include stdafx.h
#include iostream
using namespace std;
int main()
{cout hello c endl;system(pause);return 0;
}一个参数 #include stdafx.h
#include iostream
using namespace std;
int main(int argc)
{cout hello c argc argc endl;system(pause);return 0;
}两个参数 #include stdafx.h
#include iostream
using namespace std;
int main(int argc,char* argv[])
{cout hello c argc argc ,argv[0] argv[0] endl;system(pause);return 0;
}main函数变形 #include stdafx.h
#include iostream
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{cout Hello world;system(pause);return 0;
} _tmain()是unicode版本的main()。 _tmain()是为了支持unicode所使用的main的别名在stdafx.h里有定义 #include stdio.h
#include tchar.h在头文件 tchar.h里面找到_tmain的宏定义 #define _tmain wmain
#define _tmain main当程序当前的字符集为unicode时int main(int argc,char* argv[]) 会被编译成 int wmain(int argc,wchar_t *argv[]) //wmain也是main的另一个别名宽字符版本是为了支持二个字节的语言环境当程序当前的字符集为ANS时int main(int argc,char* argv[])会被编译成 int main(int argc,char *argv[])右键源文件选择添加-新建项
给C文件起个名称然后点击添加即可。
1.2 注释
作用在代码中加一些说明和解释方便自己或其他程序员程序员阅读代码
两种格式
单行注释// 描述信息 通常放在一行代码的上方或者一条语句的末尾对该行代码说明 多行注释 /* 描述信息 */ 通常放在一段代码的上方对该段代码做整体说明 提示编译器在编译代码时会忽略注释的内容 注释屏蔽掉暂时不运行的代码
快捷方式 添加注释 CtrlKCtrlC 取消注释CtrlKCtrlU 自定义快捷方式
1.3 变量
作用给一段指定的内存空间起名方便操作这段内存
语法数据类型 变量名 初始值;
示例
#include stdafx.h
#include iostream
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{//变量的定义//语法 变量的类型 变量的名称 值;int a 10;cout a a endl;system(pause);return 0;
} 注意C在创建变量时必须给变量一个初始值否则会报错 error C4700: 使用了未初始化的局部变量“a” 1.3.1变量的作用域
1变量的作用域又称为作用范围程序中的标识符如变量或函数等都有一定的有效范围。一个标识符只能在声明和定义它的范围内可见在此之外不可见。
2变量作用域分类 局部变量在函数内或块内{}定义的变量它只在该函数或块的范围内有效。 主函数中定义的变量为局部变量不同函数中定义个变量为局部变量函数的形式参数为局部变量同一作用域中的变量不允许重名。在变量作用域范围内当前变量优先。(离越近优先等级越高) 全局变量在函数外部定义的成为全局变量全局变量在程序的任何地方都可以访问。全局变量建议尽量不要使用 全局变量在程序中执行会一直占用存储单元程序结束才释放。它使得函数的通用性降低了因为在任何函数中都可以修改该变量。全局变量过多降低程序的清晰性。在任何函数中都可以修改该变量程序容易出错。全局变量与局部变量同名时可使用“::”访问全局变量
2023.9.18作业
环境安装安装vs2013编写Hello World
1.微信钱包显示余额收到红包再显示余额发红包后 再显示余额
2.摄氏度与华氏度之间转化 已知华氏度为100求出对应的 摄氏度。
摄氏度 0.56 *华氏度-32)
3.已知圆的半径求圆的周长和面积
半径r周长l 2 * 3.14 * r面积s 3.14 * r * r
1.4 常量
作用用于记录程序中不可更改的数据
C定义常量两种方式 #define 宏常量 #define 常量名 常量值 通常在文件上方定义表示一个常量 const修饰的变量 const 数据类型 常量名 常量值 通常在变量定义前加关键字const修饰该变量为常量不可修改
示例
#include stdafx.h
#include iostream
using namespace std;
//常量的定义方式
//1.宏常量
#define PI 3.14int _tmain(int argc, _TCHAR* argv[])
{cout 圆周率PI PI endl;//PI 3.1415;//报错不可修改//2.const关键字修饰常量const int nHOURSE 24;cout 每天有 nHOURSE 个小时 endl;//nHOURSE 25; //常量不可修改system(pause);return 0;
}
思考题思考一下程序的运行结果
#include stdafx.h
#include iostream
using namespace std;
#define X 32
#define Y (32)
int _tmain(int argc, _TCHAR* argv[])
{cout X * X endl;//11 32*3211 cout X X endl;//10system(pause);return 0;
}
总结使用变量或常量是四个要素
类型名称值作用域
1.5 关键字
**作用**关键字是C中预先保留的单词标识符
在定义变量或者常量时候不要用关键字
C关键字如下
asmdoifreturntypedefautodoubleinlineshorttypeidbooldynamic_castintsignedtypenamebreakelselongsizeofunioncaseenummutablestaticunsignedcatchexplicitnamespacestatic_castusingcharexportnewstructvirtualclassexternoperatorswitchvoidconstfalseprivatetemplatevolatileconst_castfloatprotectedthiswchar_tcontinueforpublicthrowwhiledefaultfriendregistertruedeletegotoreinterpret_casttry
提示在给变量或者常量起名称时候不要用C得关键字否则会产生歧义。
1.6 标识符命名规则
作用C规定给标识符变量、常量命名时有一套自己的规则
标识符不能是关键字标识符只能由字母、数字、下划线组成第一个字符必须为字母或下划线标识符中字母区分大小写 建议给标识符命名时争取做到见名知意的效果方便自己和他人的阅读 变量名 由作用域前缀类型前缀一个或多个单词组成每个单词的首字母要大写。 对于某些用途简单明了的局部变量也可以使用简化的方式如i, j, k, x, y, z 作用域前缀 m_ 类的成员变量member sm_类的静态成员变量static memeber s_静态变量static g_外部全局变量 sg_静态全局变量 类型前缀 n整型变量 e枚举类型 c字符型 b布尔类型 f浮点型 p指针类型 int nAge;//整型局部变量表示年龄
int m_nAge;//整型成员变量表示年龄常量类型前缀全大写字母组成单词间通过下划线_来界定 const int nMAX_LENGTH20;2 数据类型
C规定在创建一个变量或者常量时必须要指定出相应的数据类型否则无法给变量分配内存
2.1 整型
作用整型变量表示的是整数类型的数据
C中能够表示整型的类型有以下几种方式区别在于所占内存空间不同
数据类型占用空间取值范围short(短整型)2字节(-2^15 ~ 2^15-1)int(整型)4字节(-2^31 ~ 2^31-1)long(长整形)Windows为4字节Linux为4字节(32位)8字节(64位)(-2^31 ~ 2^31-1)long long(长长整形)8字节(-2^63 ~ 2^63-1)
2Byte 16bit
0000 0000 0000 0000
年龄short int
2.2 sizeof关键字
**作用**利用sizeof关键字可以统计数据类型所占内存大小
语法 sizeof( 数据类型 / 变量)
示例
int _tmain(int argc, _TCHAR* argv[])cout short 类型所占内存空间为 sizeof(short) endl;cout int 类型所占内存空间为 sizeof(int) endl;cout long 类型所占内存空间为 sizeof(long) endl;cout long long 类型所占内存空间为 sizeof(long long) endl;system(pause);return 0;
}整型结论short int long long long 2.3 实型浮点型
作用用于表示小数
浮点型变量分为两种
单精度float双精度double
两者的区别在于表示的有效数字范围不同。
数据类型占用空间有效数字范围float4字节7位有效数字double8字节1516位有效数字
示例
int _tmain(int argc, _TCHAR* argv[])float f1 3.14f;double d1 3.14;cout f1 endl;cout d1 endl;cout float sizeof sizeof(f1) endl;cout double sizeof sizeof(d1) endl;//科学计数法float f2 3e2; // 3 * 10 ^ 2 cout f2 f2 endl;float f3 3e-2; // 3 * 0.1 ^ 2cout f3 f3 endl;system(pause);return 0;
}2.4 字符型
**作用**字符型变量用于显示单个字符
语法char ch a; 注意1在显示字符型变量时用单引号将字符括起来不要用双引号 注意2单引号内只能有一个字符不可以是字符串 C和C中字符型变量只占用1个字节。字符型变量并不是把字符本身放到内存中存储而是将对应的ASCII编码放入到存储单元
示例
int _tmain(int argc, _TCHAR* argv[])char ch a;cout ch endl;cout sizeof(char) endl;//ch abcde; //错误不可以用双引号//ch abcde; //错误单引号内只能引用一个字符cout (int)ch endl; //查看字符a对应的ASCII码ch 97; //可以直接用ASCII给字符型变量赋值cout ch endl;system(pause);return 0;
}ASCII码表格
ASCII值控制字符ASCII值字符ASCII值字符ASCII值字符0NUT32(space)6496、1SOH33!65A97a2STX3466B98b3ETX35#67C99c4EOT36$68D100d5ENQ37%69E101e6ACK3870F102f7BEL39,71G103g8BS40(72H104h9HT41)73I105i10LF42*74J106j11VT4375K107k12FF44,76L108l13CR45-77M109m14SO46.78N110n15SI47/79O111o16DLE48080P112p17DCI49181Q113q18DC250282R114r19DC351383S115s20DC452484T116t21NAK53585U117u22SYN54686V118v23TB55787W119w24CAN56888X120x25EM57989Y121y26SUB58:90Z122z27ESC59;91[123{28FS6092/124|29GS6193]125}30RS6294^12631US63?95_127DEL
ASCII 码大致由以下两部分组成
ASCII 非打印控制字符 ASCII 表上的数字 0-31 分配给了控制字符用于控制像打印机等一些外围设备。ASCII 打印字符数字 32-126 分配给了能在键盘上找到的字符当查看或打印文档时就会出现。
//课堂习题在控制台输入一个大写字母转成小写字母
控制台输出学生信息
学号 姓名 年龄 成绩
1001 Jack 18 99
2.5 转义字符
**作用**用于表示一些不能显示出来的ASCII字符
现阶段我们常用的转义字符有 \n \\ \t
转义字符含义ASCII码值十进制\a警报007\b退格(BS) 将当前位置移到前一列008\f换页(FF)将当前位置移到下页开头012\n换行(LF) 将当前位置移到下一行开头010\r回车(CR) 将当前位置移到本行开头013\t水平制表(HT) 跳到下一个TAB位置009\v垂直制表(VT)011\\代表一个反斜线字符092’代表一个单引号撇号字符039代表一个双引号字符034?代表一个问号063\0数字0000\ddd8进制转义字符d范围0~73位8进制\xhh16进制转义字符h范围09afA~F3位16进制
示例
int _tmain(int argc, _TCHAR* argv[])cout \\ endl;cout \tHello endl;cout \n endl;system(pause);return 0;
}2.6 字符串型
作用用于表示一串字符
两种风格 C风格字符串 char 变量名[] 字符串值 示例 int _tmain(int argc, _TCHAR* argv[])char str1[] hello world;cout str1 endl;system(pause);return 0;
}注意C风格的字符串要用双引号括起来 C风格字符串 string 变量名 字符串值 示例 int _tmain(int argc, _TCHAR* argv[])string str hello world;cout str endl;system(pause);return 0;
}注意C风格字符串需要加入头文件#includestring 2.7 布尔类型 bool
**作用**布尔数据类型代表真或假的值
bool类型只有两个值
true — 真本质是1false — 假本质是0
bool类型占1个字节大小
示例
int _tmain(int argc, _TCHAR* argv[])bool flag true;cout flag endl; // 1flag false;cout flag endl; // 0cout size of bool sizeof(bool) endl; //1system(pause);return 0;
}2.8 数据类型转换 C中明确规定不同的数据类型之间不能参与运算。但实际运算过程中又有不同数据类型会参与到运算此时就出现了程序中的类型转换。 C类型转换分为2种 自动类型转换由低类型向高类型转换系统自动完成。 一般情况下字符型→短整型→整型→单精度浮点型→双精度浮点型 int n_num 10;double d_num n_num;cout n_num n_num ,d_num d_num endl;char c_ch A;char c_ch2 c_ch 32;cout c_ch c_ch ,c_ch2 c_ch2 endl;强制类型转换高类型向低类型转换时则可能造成数据丢失所以需要使用强制类型转换 强制类型转换的格式 (要转换的新类型)被转换的表达式 C语言的风格static_cast要转换的新类型被转换的表达式 double d_num2 1.2;int n_num2 d_num2;cout n_num2 n_num2 ,d_num2 d_num2 endl;思考 double d_num3 1 / 4;cout 1/4 d_num3 endl;摄氏度与华氏度的转换公式为 摄氏度5/9×华氏度-32已知华氏度为100求摄氏度。请思考以下程序的运行结果是否正确 //数据类型转换double d_fahrenheit 100;//摄氏度 5/9*华氏度-32
double d_centigrade (5 / 9)*(d_fahrenheit - 32);cout 华氏度 d_fahrenheit endl;cout 摄氏度 d_centigrade endl;2023.9.19作业
1.摄氏度5/9×华氏度-32已知华氏度为100求摄氏度
//数据类型转换double d_fahrenheit 100;//摄氏度 5/9*华氏度-32double d_centigrade (5.0 / 9)*(d_fahrenheit - 32);cout 华氏度 d_fahrenheit endl;cout 摄氏度 d_centigrade endl;2.课堂案例
3.在控制台输入一个大写字母转成小写字母
4.控制台输出学生信息
学号 姓名 年龄 成绩
1001 Jack 18 99
// 2023.9.25运算符和表达式.cpp : 定义控制台应用程序的入口点。
//
#include stdafx.h
#include iostream
#include string
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{/*4.控制台输出学生信息学号 姓名 年龄 成绩1001 Jack 18 99*/string sStuNo ;string sStuName ;int nStuAge 0;double dScore 0;//double nStuNo 11111111111111;//从控制输入 cincout 请输入学号;cin sStuNo;cout 请输入姓名;cin sStuName;cout 请输入年龄;cin nStuAge;cout 请输入成绩;cin dScore;//输出cout 学号\t姓名\t年龄\t成绩\n;cout sStuName \tsStuName \t nStuAge \t dScore endl;cout \n;//cout nStuNo endl;system(pause);return 0;
}
2.9 数据的输入
作用用于从键盘获取数据
**关键字**cin
语法 cin 变量
示例
int _tmain(int argc, _TCHAR* argv[])//整型输入int a 0;cout 请输入整型变量 endl;cin a;cout a endl;//浮点型输入double d 0;cout 请输入浮点型变量 endl;cin d;cout d endl;//字符型输入char ch 0;cout 请输入字符型变量 endl;cin ch;cout ch endl;//字符串型输入string str;cout 请输入字符串型变量 endl;cin str;cout str endl;//布尔类型输入bool flag true;cout 请输入布尔型变量 endl;cin flag;cout flag endl;system(pause);return 0;
}2023.9.25
3 运算符
**作用**用于执行代码的运算
本章我们主要讲解以下几类运算符
运算符类型作用算术运算符用于处理四则运算赋值运算符用于将表达式的值赋给变量比较运算符用于表达式的比较并返回一个真值或假值逻辑运算符用于根据表达式的值返回真值或假值
3.1 算术运算符
作用用于处理四则运算
算术运算符包括以下符号
运算符术语示例结果正号33-负号-3-3加10 515-减10 - 55*乘10 * 550/除10 / 52%取模(取余)10 % 31前置递增a2; ba;a3; b3;后置递增a2; ba;a3; b2;–前置递减a2; b–a;a1; b1;–后置递减a2; ba–;a1; b2;
示例1
//加减乘除
int _tmain(int argc, _TCHAR* argv[])int a1 10;int b1 3;cout a1 b1 endl;cout a1 - b1 endl;cout a1 * b1 endl;cout a1 / b1 endl; //两个整数相除结果依然是整数int a2 10;int b2 20;cout a2 / b2 endl; int a3 10;int b3 0;//cout a3 / b3 endl; //报错除数不可以为0//两个小数可以相除double d1 0.5;double d2 0.25;cout d1 / d2 endl;system(pause);return 0;
}总结在除法运算中除数不能为0 示例2
//取模
int _tmain(int argc, _TCHAR* argv[])int a1 10;int b1 3;cout 10 % 3 endl;int a2 10;int b2 20;cout a2 % b2 endl;int a3 10;int b3 0;//cout a3 % b3 endl; //取模运算时除数也不能为0//两个小数不可以取模double d1 3.14;double d2 1.1;//cout d1 % d2 endl;system(pause);return 0;
} 总结只有整型变量可以进行取模运算 示例3
//递增
int _tmain(int argc, _TCHAR* argv[])//后置递增int a 10;a; //等价于a a 1cout a endl; // 11//前置递增int b 10;b;cout b endl; // 11//区别//前置递增先对变量进行再计算表达式int a2 10;int b2 a2 * 10;cout b2 endl;//后置递增先计算表达式后对变量进行int a3 10;int b3 a3 * 10;cout b3 endl;system(pause);return 0;
} 总结前置递增先对变量进行再计算表达式后置递增相反 3.2 赋值运算符
**作用**用于将表达式的值赋给变量
赋值运算符包括以下几个符号
运算符术语示例结果赋值a2; b3;a2; b3;加等于a0; a2;a2;-减等于a5; a-3;a2;*乘等于a2; a*2;a4;/除等于a4; a/2;a2;%模等于a3; a%2;a1;
示例
int _tmain(int argc, _TCHAR* argv[])//赋值运算符// int a 10;a 100;cout a a endl;// a 10;a 2; // a a 2;cout a a endl;// -a 10;a - 2; // a a - 2cout a a endl;// *a 10;a * 2; // a a * 2cout a a endl;// /a 10;a / 2; // a a / 2;cout a a endl;// %a 10;a % 2; // a a % 2;cout a a endl;system(pause);return 0;
}3.3 比较运算符
**作用**用于表达式的比较并返回一个真值或假值
比较运算符有以下符号
运算符术语示例结果相等于4 30!不等于4 ! 31小于4 30大于4 31小于等于4 30大于等于4 11
示例
int _tmain(int argc, _TCHAR* argv[])int a 10;int b 20;cout (a b) endl; // 0 cout (a ! b) endl; // 1cout (a b) endl; // 0cout (a b) endl; // 1cout (a b) endl; // 0cout (a b) endl; // 1system(pause);return 0;
}注意C和C 语言的比较运算中 “真”用数字“1”来表示 “假”用数字“0”来表示。 3.4 逻辑运算符
**作用**用于根据表达式的值返回真值或假值
逻辑运算符有以下符号
运算符术语示例结果!非!a如果a为假则!a为真 如果a为真则!a为假。与a b如果a和b都为真则结果为真否则为假。||或a || b如果a和b有一个为真则结果为真二者都为假时结果为假。
**示例1**逻辑非
//逻辑运算符 --- 非
int _tmain(int argc, _TCHAR* argv[])int a 10;cout !a endl; // 0cout !!a endl; // 1system(pause);return 0;
}总结 真变假假变真 **示例2**逻辑与
//逻辑运算符 --- 与
int _tmain(int argc, _TCHAR* argv[])int a 10;int b 10;cout (a b) endl;// 1a 10;b 0;cout (a b) endl;// 0 a 0;b 0;cout (a b) endl;// 0system(pause);return 0;
} 总结逻辑与运算符总结 同真为真其余为假 **示例3**逻辑或
//逻辑运算符 --- 或
int _tmain(int argc, _TCHAR* argv[])int a 10;int b 10;cout (a || b) endl;// 1a 10;b 0;cout (a || b) endl;// 1 a 0;b 0;cout (a || b) endl;// 0system(pause);return 0;
}逻辑或运算符总结 同假为假其余为真 思考题和的区别||和|的区别
// day01C入门.cpp : 定义控制台应用程序的入口点。
//#include stdafx.h
#include iostream
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{// 和 bool flag false;int nNum 10;bool bResult flag (nNum 10);cout nNum nNum ,bResult bResult endl;bool bResult1 flag (nNum 10);cout nNum nNum ,bResult1bResult1endl;system(pause);return 0;
}2023.9.25作业
1、 思考程序运行结果a,b,c)
int a 10; int b 20; int c a a - --b - b 1 b–;
2、 输入2个数对2个数进行交换2种方式实现
3、输入一个数三位数判断是否为水仙花数
4、判断一个年份判断是否为闰年
5、输入2个数求出这2个数的最大值和最小值问号表达式来完成
6、输入1个数求这个数的绝对值问号表达式来完成
7、课堂案例