本系列文章是C语言的学习笔记,所看课程为浙大翁凯老师的MOOC: 程序设计入门——C语言以及 C语言程序设计进阶。
Lecture 1 引言&计算
1. 解释语言VS编程语言
语言本无编程/解释之分,常见执行方式而已
C语言:编译 确定的运算性能
Python:解释 特殊的计算能力
目前已无本质区别
指针是C语言的灵魂
2. 一般程序框架
include <stdio.h>
int main()
{
//在此输入你的程序
return 0;
}
3. 做计算/输出
printf("%d\n", 23+43);
//%d说明后面有一个整数要输出在这个位置上
printf("23+43=%d\n", 23+43);
4. 变量
变量是一个保存数据的地方
变量定义:<类型名称><变量名称>;(注意英文分号)
int price;
int amount;
int price, amount;
变量初始化:<类型名称><变量名称> = <初始值>;
int price = 0;
int amount = 100;
int price = 0, amount = 100;
5. 读整数
scanf("%d", &price);
//读入下一个整数,读到的结果赋值给变量price,注意price前面的&
实例:单位换算,将输入的身高单位由英尺英寸换成米
换算公式:(foot + inch / 12)*0.3048)
5英尺7英寸= 1.701800米
//height.c
#include <stdio.h>
int main()
{
printf("请分别输入身高的英尺和英寸,如输入\"5 7\"表示5英尺7英寸:");
int foot = 0, inch = 0;
scanf("%d %d", &foot, &inch);
//改正方式1如下
//double foot = 0, inch = 0;
//scanf("%lf %lf", &foot, &inch);
printf("身高是%f米。\n", ((foot + inch / 12)*0.3048));
//改正方式2如下
//printf("身高是%f米。\n", ((foot + inch / 12.0)*0.3048));
return 0;
}
scanf()读入数据时:
%f告诉编译器scanf()在该地址存储一个float类型数据
%lf告诉编译器scanf()在该地址存储一个double类型数据
printf()输出数据时
编译器将float参数自动转换为double类型,%f与%lf效果相同,printf()无法区分float和double;
%f仅仅表示要输出的数据是浮点型,而编译器按照规定默认输出浮点型中的double类型。
运行结果与实际不符,经调试发现inch对身高不起作用
原因:两个整数的运算结果只能是整数(小数部分被舍弃)
改正方式:程序注释中给出了两种方法
double型变量读写格式如下:
double a=0;
scanf ("%lf", &a);
printf("%f", a);
6. 结合关系
一般加、减、乘、除、取余 自左向右
单目±(对单个数取正负)和赋值= 自右向左
单目运算优先级要高于算数运算
7. 复合赋值
-
与
(注意+=中间不要有空格) - 递增递减运算符
实例演示
#include <stdio.h>
int main()
{
int a = 10, b = 10;
printf("a++ = %d\n", a++);
printf("a = %d\n", a);
printf("\n");
printf("++b = %d\n", ++b);
printf("b = %d\n", b);
return 0;
}
运行结果:
a++ = 10
a = 11
++b = 11
b = 11