C语言程序设计笔记(浙大翁恺版) 第二周:计算

按照中国大学MOOC上浙江大学翁恺老师主讲的版本所作,B站上也有资源。原课程链接如下:

https://www.icourse163.org/course/ZJU-9001

由于是大三抽空回头整理的,所以可能前五章会记的内容比较简略。此外,作为选学内容的A0:ACLLib的基本图形函数和链表两章也没有做。西电的考试是机试,理论上学到结构体就能够应付考试了,但为了以后的学习考虑建议全学。

 

其他各章节的链接如下:

C语言程序设计笔记(浙大翁恺版) 第一周:程序设计与C语言

C语言程序设计笔记(浙大翁恺版) 第二周:计算

C语言程序设计笔记(浙大翁恺版) 第三周:判断

C语言程序设计笔记(浙大翁恺版) 第四周:循环

C语言程序设计笔记(浙大翁恺版) 第五周:循环控制

C语言程序设计笔记(浙大翁恺版) 第六周:数据类型

C语言程序设计笔记(浙大翁恺版) 第七章:函数

C语言程序设计笔记(浙大翁恺版) 第八周:数组

C语言程序设计笔记(浙大翁恺版) 第九周:指针

C语言程序设计笔记(浙大翁恺版) 第十周:字符串

C语言程序设计笔记(浙大翁恺版) 第十一周:结构类型

C语言程序设计笔记(浙大翁恺版) 第十二周:程序结构

C语言程序设计笔记(浙大翁恺版) 第十三周:文件

其他各科笔记汇总

 

计算

变量

变量定义

变量是做什么的,如何定义一个变量

 

 

算找零

printf("100-23=%d\n", 100-23);

如何能在程序运行时输入那个数字23,然后计算输出结果?

// change.c

int price = 0;

printf("请输入金额(元):");
scanf("%d", &price);

int change = 100 - price;

printf("找您%d元。\n", change);

 

 

如何输入

输入也在终端窗口中

输入是以行为单位的,行的结束标志就是你按下了回车键。在你按下回车之前,你的程序不会读到任何东西

 

 

变量

int price = 0;这一行定义了一个变量。变量的名字是price,类型是int,初始值是0

变量是一个保存数据的地方,当我们需要在程序里保存数据时,比如上面的例子中要记录用户输入的价格,就需要一个变量来保存它。用一个变量保存了数据,它才能参加到后面的计算中,比如计算找零

 

 

变量定义

变量定义的一般形式就是:<类型名称> <变量名称>;。 如:int price;int amount;int price, amount;

 

 

变量的名字

变量需要一个名字,变量的名字是一种“标识符”,意思是它是用来识别这个和那个的不同的名字

标识符有标识符的构造规则。基本的原则是:标识符只能由字母、数字和下划线组成,数字不可以出现在第一个位置上,C语言的关键字(有的地方叫它们保留字)不可以用做标识符

 

 

C语言的保留字

在这里插入图片描述

变量赋值与初始化

a=b表示把b的值赋给a,而不是它们相等

 

 

赋值和初始化

int price = 0;

price = 0是一个式子,这里的“=”是一个赋值运算符,表示将“=”右边的值赋给左边的变量

 

 

赋值

和数学不同,a=b在数学中表示关系,即ab的值一样;而在程序设计中,a=b表示要求计算机做一个动作:将b的值赋给a。关系是静态的,而动作是动态的。在数学中,a=bb=a是等价的,而在程序设计中,两者的意思完全相反

 

 

初始化

当赋值发生在定义变量的时候就是变量的初始化。虽然C语言并没有强制要求所有的变量都在定义的地方做初始化,但是所有的变量在第一次被使用(出现在赋值运算符的右边)之前应该被赋值一次

如果没有被初始化,原来内存里有什么内容就是什么

 

 

变量初始化

<类型名称> <变量名称> = <初始值>; 如:int price = 0;int amount = 100;

组合变量定义的时候,也可以在这个定义中单独给单个变量赋初值,如:int price = 0, amount = 100;

 

 

表达式

"="是赋值运算符,有运算符的式子就叫做表达式。 如:price = 0change = 100 - price;

 

 

变量类型

C是一种有类型的语言,所有的变量在使用之前必须定义或声明,所有的变量必须具有确定的数据类型。数据类型表示在变量中可以存放什么样的数据,变量中只能存放指定类型的数据,程序运行过程中也不能改变变量的类型

 

 

int change = 100 - price;定义了第二个变量change并且做了计算,这种写法是C99的写法。ANSI C只能在代码开头的地方定义变量

在这里插入图片描述
 

程序输入

如何让程序读入用户输入的数字,scanf

 

 

scanf("%d", &price);要求scanf这个函数读入下一个整数,读到的结果赋值给变量price,小心price前面的&

如果输入的不是整数,无法从输入里读到任何数字就只能给一个默认值

 

常量 vs 变量

不变的量是常量,以及,我们要怎样输入两个变量的值

 

 

常量

固定不变的数,是常数。直接写在程序里,我们称作直接量(literal)。

更好的方式,是定义一个常量:const int AMOUNT = 100,这也是C99的写法

 

// change2.c

#include <stdio.h>

int main()
{
	const int AMOUNT = 100;
	int price = 0;

	printf("请输入金额(元):");
	scanf("%d", &price);

	int change = AMOUNT - price;

	printf("找您%d元。\n", change);

	return 0;
}

 

 

const

const是有一个修饰符,加在int的前面,用来给这个变量加上一个const(不变的)的属性。这个const的属性表示这个变量的值一旦初始化,就不能再修改了

如果你试图对常量做修改,把它放在赋值运算符的左边,就会被编译器发现,指出为一个错误

 

// plus.c

#include <stdio.h>

int main()
{
	int a;
	int b;

	printf("请输入两个整数:");
	scanf("%d %d", &a, &b);
	printf("%d + %d = %d\n", a, b, a + b);

	return 0;
}

在这里插入图片描述
 

浮点数

整数运算的结果只有整数部分,不然就要用浮点数

 

 

两个整数的运算的结果只能是整数,如10/3*3=>9。10和10.0在C中是完全不同的数,10.0是浮点数

 

 

浮点数

带小数点的数值。浮点这个词的本意就是指小数点是浮动的,是计算机内部表达整数(包含分数和无理数)的一种方式。另一种方式叫做定点数,不过在C语言中你不会遇到定点数。人们借助浮点数这个词来表达所有的带小数点的数

当浮点数和整数放到一起运算时,C会将整数转换成浮点数,然后进行浮点数的运算

 

 

double

inch是定义为int类型的变量,如果把int换成double,我们就把它改为double类型的浮点数变量了

double的意思是“双”,它本来是“双精度浮点数”的第一个单词,人们用来表示浮点数类型。除了double,还有float(意思就是浮点!)表示单精度浮点数

 

计算身高的程序

#include <stdio.h>

int main()
{
	printf("请分别输入身高的英尺和英寸,"
		"如输入\"5 7\"表示5英尺7英寸:");

	double foot;
	double inch;

	scanf("%lf %lf", &foot, &inch);

	printf("身高是%f米。\n", 
		((foot + inch / 12) * 0.3048));

	return 0;
}

 

 

数据类型

整数

  • int
  • printf("%d", ...)
  • scanf("%d", ...)

带小数点的数

  • double
  • printf("%f", ...)
  • scanf("%lf", ...)

 

表达式

运算符和算子,取余运算,程序就是数据加计算

 

 

表达式

一个表达式是一系列运算符和算子的组合,用来计算一个值

在这里插入图片描述
 

 

运算符

运算符(operator)是指进行运算的动作,比如加法运算符“+”,减法运算符“-”

算子(operand)是指参与运算的值,这个值可能是常数,也可能是变量,还可能是一个方法的返回值

在这里插入图片描述
 

 

计算时间差

输入两个时间,每个时间分别输入小时和分钟的值,然后输出两个时间之间的差,也以几小时几分表示

 

如果直接分别减,会出现分钟借位的情况:1点40分和2点10分的差

 

int main()
{
	int hour1, minute1;
	int hour2, minute2;

	scanf("%d %d", &hour1, &minute1);
	scanf("%d %d", &hour2, &minute2);

	int t1 = hour1 * 60 + minute1;
	int t2 = hour2 * 60 + minute2;

	int t = t2-t1;

	printf("时间差是%d小时%d分。", t/60, t%60);
	
	return 0;
}

hour1 * 60 + minutes1 —> 转换为分钟为单位

t/60 —> 小时部分;t%60 —> 分钟

 

运算符优先级

优先级、结合关系、赋值运算符

 

 

求平均值

下一个程序,输入两个整数,输出它们的平均值

#include <stdio.h>

int main()
{
	int a,b;

	scanf("%d %d", &a, &b);

	double c = (a+b)/2.0;
	
	printf("%d和%d的平均值=%f\n", a, b, c);

	return 0;
}

 

 

运算符优先级

在这里插入图片描述

 

 

单目运算符

只有一个算子的运算符:+、-

int a = 10;
int b = -20;
printf("%d", a * -b);
200

 

 

赋值运算符

赋值也是运算,也有结果

a=6的结果是a被赋予的值,也就是6

a=b=6 —> a=(b=6)

 

 

”嵌入式赋值“

在这里插入图片描述

 

 

结合关系

在这里插入图片描述
 

交换变量

如何交换两个变量的值,顺便看下Dev的调试功能

 

 

程序是按步执行的

程序表达的是顺序执行的动作,而不是关系

a=b; b=a;是依次执行的,结果使得ab都得到b原来的值

 

 

交换

int t = a;
a = b;
b = t;

 

 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wrEQHWwo-1659869838584)(C语言程序设计.assets/image-20220805213155491.png)]

设断点后调试运行停在该行,这行还没有执行

 

复合赋值和递增递减

这是两类有历史也有争议的运算符

 

 

复合赋值

5个运算符,+ - * / %,可以和赋值运算符”=“结合起来,形成复合赋值运算符:”+=“,-=*=/=%=

注意两个运算符中间不要有空格

total += 5;
total = total + 5;

total += (sum+100)/2;
total = total + (sum+100)/2;

total *= sum+12;
total = total * (sum+12);

total /= 12+6;
total = total / (12+6);

 

 

递增递减运算符

++--是两个很特殊的运算符,它们是单目运算符,这个算子还必须是变量。这两个运算符分别叫做递增和递减运算符,他们的作用就是给这个变量+1或者-1

count++;
count += 1;
count = count +1;

 

 

前缀后缀

++--可以放在变量的前面,叫做前缀形式,也可以放在变量的后面,叫做后缀形式

a++的值是a加1以前的值,而++a的值是加了1以后的值,无论哪个,a自己的值都加了1了

在这里插入图片描述
 

这两个运算符有其历史来源。可以单独使用,但是不要组合进表达式

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是古老而长青的编程语言,它具备了现代程序设计的基础要求,它的语法是很多其他编程语言的基础,在系统程序、嵌入式系统等领域依然是无可替代的编程语言,在各类编程语言排行榜上常年占据前两名的位置。 本课程是零基础的编程入门课,是后续的操作系统、编译原理、体系结构等课程的基石。 —— 课程团队 课程概述 程序设计是一门基础课程。对于计算机相关专业而言,程序设计是专业基础知识,是进一步学习其他专业知识的第一步阶梯;对于非计算机专业而言,程序设计学习有助于理解计算机的能力所在,理解哪些是计算机擅长解决的问题,怎样的方式方法是计算机擅长的手段,从而能更好地利用计算机来解决本专业领域内的问题。 C语言是古老而长青的编程语言,它具备了现代程序设计的基础要求,它的语法是很多其他编程语言的基础,在系统程序、嵌入式系统等领域依然是无可替代的编程语言,在各类编程语言排行榜上常年占据前两名的位置。 对于非计算机专业的学生,学习本课程的主要目的是掌握程序设计的基本方法,C语言是教学媒介。但是对于计算机专业的学生,本课程是向后续的计算机组成、操作系统、编译原理、体系结构等课程前进的基石,对于C语言本身甚至程序设计语言基础原理的深入理解都是应该掌握的。 本课程是零基础的入门课程,完成本课程之后,就能具有初步的运用C语言编写程序的能力。要想完整的学习C语言,还需要进一步学习本课程的后续课程——《C语言程序设计进阶》。 程序设计是实践性很强的课程,该课程的学习有其自身的特点,听不会,也看不会,只能练会。你必须通过大量的编程训练,在实践中掌握编程知识,培养编程能力,并逐步理解和掌握程序设计的思想和方法。在这里所提供的,只是基础的知识讲解,要想学会编程,还需要更多时间的投入和努力。 为了学习编程,你需要有一台计算机,安装必要的编程软件。无论是MS Windows、Mac OS X还是Linux,都有适合C语言编程的软件。如果搞不定自己电脑上的编程软件,我们也会提供在网页中编写、运行C语言程序的方法。 课程大纲 01 程序设计C语言 课时 1 计算机和编程语言 2 C语言 3 第一个程序 02 计算 课时 1 变量 2 数据类型 3 表达式 4 在线评判系统 03 判断与循环 课时 1 判断 2 循环 04 进一步的判断与循环 课时 1 逻辑类型和运算 2 级联和嵌套的判断 3 多路分支 4 循环的例子 5 判断和循环常见的错误 05 循环控制 课时 1 循环控制 2 多重循环 3 循环应用 06 数组与函数 课时 1 数组 2 函数的定义与使用 3 函数的参数和变量 4 二维数组 07 数组运算 课时 1 数组运算 2 搜索 3 排序初步 08 指针与字符串 课时 1 指针 2 字符类型 3 字符串 4 字符串计算 预备知识 作为第一门编程课,本课程可以零基础学习。大学计算机(大学计算机基础、计算思维导论)等课程对于理解本课程的部分内容有帮助,但这些课程的学习不是必须的。 证书要求 课程的总分达到60分以上,可以获得本课程的合格证书。 课程的总分达到85分以上,可以获得本课程的优秀证书。 参考资料 何钦铭、颜晖,《C语言程序设计(第3)》,高等教育出社,2015年,ISBN 978-7-04-043128-3 颜晖、张泳,《C语言程序设计实验与习题指导(第3)》,高等教育出社,2015年,ISBN 978-7-04-043563-4 常见问题 Q:我需要特殊本的计算机吗? A:任何计算机都可以用于C语言编程,包括但不限于各个本的MS Windows、各个本的Mac OS X、各种发行本的Linux。有的手机有app也能实现C语言编程,不过我们不推荐那么小的屏幕。 Q:我需要安装特定的软件才能做这门课的作业吗? A:任何C语言的开发工具都可以。课程演示会使用Dev C++及命令行环境,但是你使用任何其他开发工具都不会影响做作业的正确性。可以使用的其他工具包括但不限于MS Visual Studio、C-Free等。 Q:每周会发布多少时间的视频?我需要花多少时间来学习? A:我们按照90分钟的授课时间来设计课程。但是发布的视频肯定小于90分钟,一般在50到70分钟左右。因为在线下上课时,老师可能会回顾一下上周的内容、某些内容会看学生的反应重复几遍、会当堂问做一些提问,以及在各种软件等教学工具之间切换,这些都要花点时间,而这些在线上课程中都不存在了,所以视频的时间不会正好是90分钟。但是一般我们设计课程需要1:1.5到1:2的课后学习时间,这包括预习、作业、练习和复习的时间,所以每周大约需要花费三到五小时的时间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值