课程 翁恺 c语言
程序设计入门——C语言_浙江大学_中国大学MOOC(慕课) (icourse163.org)
C语言程序设计进阶_浙江大学_中国大学MOOC(慕课) (icourse163.org)
引言
一、软件介绍——visual code 2022
1.软件下载
软件区别: Visual Studio(IDE集成开发环境) & Visual Studio Code(代码编辑器)
类型区别:Community(社区版) & Professtional (专业版) & Enterpress (企业版)
版本区别:下个最新的,2022
安装事项:没放c盘
环境配置:
2.软件使用
新建工程、编译、执行:
勾选控制台应用或空白应用
编译结果看到”成功“就行,其他先不用了解
终端(窗口)任意键退出
常用快捷键:
ctrl+shift+n 新建项目
ctrl+s 保存
ctrl+shift+b 编译
ctrl+f5 执行(不调试)
f5 调试
f11 逐行调试
f8 单步调试【进入调用函数内部】
shift+tab 可以选上整体减少缩进
文件名解读:
.c表示c文件
.cpp表示c++文件
代码注释
// 单行注释 (c99)
/* */续行注释
二、代码思想
1.重要思想
单步调试和设断点调试是程序员必须掌握的技能之一。
代码调试的常用操作:
1.利用断点调试程序,在最左侧点一下出现红色大圆点即设置了断点
2.鼠标放在变量上,显示变量存储的数据
3.逐句调试
代码调试的主要方法:
1.逐步调试;
2.循环中打印每步的赋值情况;
程序是先后执行的动作,不是表达关系
注意观察编译输出窗口反映的问题,定位到行,以及具体什么问题
2.重要技巧
输入代码时输入法切换为英文
数字键盘 num lk(0)&scr lk(insert)会影响光标是间隔还是跨越(受insert影响)
3.程序构建
思考变量:输入变量、输出变量、中间变量
即会产生哪些数据,怎么保存
思考算法:
设计计算方法,有简答,有复杂;
描述算法,即输入到输出的过程;
确定关键条件,比如循环的条件、判断的条件
绘制流程图
编辑程序
调试执行
4.代码规范
int a = 1 + (b=c); //× 错误示范!!
result = a = b = 5 + c;//× 错误示范!!
5.编程习惯
及时注释,整段注释以及重点语句注释
及时确认外界输入信息
int age = 0;
printf("请输入您的年龄:");
scanf("%d", &age);
printf("您的年龄是%d岁", age);
单个出口
//单个出口
int f;
if (x < 0){
f = -1;
}else if (x == 0) {
f = 0;
}else {
f = 2 * x;
}
printf("%d", f);
//多个出口
int f;
if (x < 0){
printf("%d", -1);
}else if (x == 0) {
printf("%d", 0);
}else {
printf("%d", 2*x);
}
易读
// 易读
int max = 0;
if (a > b) {
max = a;
}
else {
max = b;
}
//不易读
int max = b;
if (a > b) {
max = a;
}
不要把赋值,包括复合赋值写进表达式;不要嵌套条件运算符
// NO!!!!
if ( a>0 && a++<3){
……
}
// NO!!!!
count = (count>20)? (count < 5)? count-10:count -5:(count<10)?count+10:count+5;
三、程序框架(直到函数前)
#include <stdio.h>
int main()
{
……
return 0;
}
四、PAT系统
样例数据和题干一样重要
不用检查系统批卷的输入
不要交互,不用说你好啊啥的
只能按照题目要求输出,一个字都不要多
五、巧妙的算法
两数取大:假定大数
int max = b;
if (a > b) {
max = a;
}
求公约数:辗转相除法
while (b > 0) {
t = a % b;
a = b;
b = t;
}
整数求逆:ret*10
while (x > 0) {
digit = x % 10;
ret = ret * 10 + digit;
x /= 10;
}
第一章 变量常量
1.一些Q&A:
什么是变量常量?用于存储数据(翁恺老师思想)
为什么定义常量?①避免程序中莫名其妙的数字,不易读;②方便统一修改。
2.重要内容:
变量需要先定义再使用,定义时还要指明类型
c99可以在代码任何位置定义
只可定义一次,不然报错重复定义
定义后类型不可再更改???
3.定义格式:
// <变量类型> <变量名称> ;
int Price = 0; // 0代表初始化值是0
int Price,amount;
//const <常量类型> <常量名称> ;
const int amount = 100;
/*标识符:const是一个标识符,表明定义的是常量
const的属性是初始化后,不可再修改。*/
4.命名规则:
由数字、字母、下划线组成,数字不能开头;
避开c语言的关键字:如下
5.变量的赋值和初始化
//初始化
int a = 0;
//赋值
int a;
a = 0;
第二章 常用函数
1.printf 格式化输出
函数名解读:print代表打印,f代表format格式化
一般格式:
printf("Hello World!\n");
printf("%d",a);
printf("%d",'a');//输出对应的ASCII码??
""是字符串,比如用双引号,不能用单引号
\n表示换行
format格式化
注意事项:
用占位符输出变量,不同数据类型用不同占位符
输出结果与ASCII码
2.scanf 格式化输入
函数名解读:scan代表扫描进电脑,f代表format格式化
一般格式:
scanf("%d",&a);
scanf("%d %d", &a, &b);
scanf("%d,%d", &a, &b);
scanf("%d,%d\n", &a, &b);
scanf("price%d %d\n", &a, &b);
环境配置:
环境变量添加——加入预定义字符串:
解决方案-工程-属性-c++-代码预处理-第一个选项-编辑:加入如下代码
_CRT_SECURE_NO_WARNINGS
注意事项:
按照scanf""双引号内的格式输出,不能差
先配置环境变量
变量前要有&
3.sizeof 计算占据字节数
一般格式
sizeof(a);
注意事项
//sizeof是静态运算符,不能执行括号内动作
int a = 0;
printf("%d",sizeof(a+1));//int 4位
printf("%d",sizeof(a+1.0));//double 8位
4.rand 生成随机数
一般格式
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(0));
int number = rand();
……
特殊应用
//产生100以内随机数
rand()%100;
5.pow 生成幂
一般格式
#include <math.h>
int main()
{
int number = pow(10,3);//1000
……
6.fabs求绝对值
一般格式
fabs(f1 - f2)