一个程序主要包括以下两方面的信息
1、对数据的描述 - 即数据结构
2、对操作的描述 - 即算法
//累乘
int a = 1;
for ( int i=2; i<=5;++i)
a = a*i;
printf("%d\n",a);
++i:i的值增大1
for(表达式1;表达式2;表达式3){语句块1)
表达式1 - 初始化循环因子,有且执行一次
表达式2 - 判断,为真循环继续,为假循环结束
表达式3 - 修改循环因子的值
表达式1/表达式2 - 除,得到商,要注意整除问题(整数/整数,结果为丢弃小数的整数)
表达式1%表达式2 - 取余,得到余数,余数为0,就是整除
== :等号,判断左右是否相等
= :赋值,把右边的值赋值给左边
&& :且 != :不等 ||:或
//输出2000~2500之间的闰年
for(int year=2000;year<=2500;==year)
{
if (year % 4 ==0 && year%100 != || year%400 == 0)
printf("%d是闰年\n",year);
}
数据类型(字节数,数的范围)1字节=8比特,1比特为1位,每一位上有一个0或1
字符:char(1) - 用于保存英文字符,不能保存中文,种类2的八次方(256)个
整数:short(2),int(4)(默认),long(4),long long(8)
小数:float(4),double(8)(默认),long double(8)
指针
自定义数据类型
求字节数的运算符,sizeof(不是函数) 例:求int的字节数 :sizeof(int)
运算符:作用
():函数,提升优先级
逻辑谓词:真:非0;假:0
!:非,不是
表达式1&&表达式2:逻辑与(全真才真,一假全假):注意短路现象 - 即表达式1假,则2不运算
表达式1||表达式2:逻辑或(全假才假,一真全真):注意短路现象 - 表达式1真,2不运算
< > = :大于,小于,等于 - 注意不能连续比较 如:1<2<4 - 其中,1<2结果为真,数值表达为1,再运算就变成1<4。如果想进行多次比较,可使用逻辑谓词加比较运算符进行判断。
++i :i的值增大1 --i:i的值减少1
其中++和--都有前置和后置的区别,前置即++i(先进行i+1,再使用i变量),后置即i++(先使用i变量,再进行i+1),例 int i= 3,a,b;a=++i;b=i++; 最后结果,a=4,b=3 (不过++,--,单独使用时没有区别)
&变量:获取变量的地址
*变量:间接访问符,解引用
(类型)变量:把变量强制转为()中的类型
sizeof:取占内存大小运算符。
* / %:乘 除 取余
%:取余,可判断整除,还可控制范围 - 注:两边都需为整型,即整数。
表达式1?表达式2:表达式3 :如果表达式1为真,执行表达式2,否则执行表达式3
//判断素数
int n;
scanf("%d",n);
for (int i = 2;i<n;++i) //这里可以优化,将i<n改成i<sqrt(n) - sqrt(n)-n开根号,需要引用math.h
{
if(n%i == 0)
{
printf("%d不是素数\n",n);
return 0;//提前退出程序 - 后面学了break,也可以用break
}
}
printf("%d是素数\n",n);
return 0;
//小数求和
double sum = 0;
int sign = 1;
for ( int deno = 1; deno <= 100; deno++)
{
sum += sign*1.0/deno;//1.0是为了破坏整除,如果整除那么1/deno结果一直为0
sign *= -1;//这里*=,和+=,都是复合赋值运算符。sign*=-1,等价sign=sign*-1 - +=,-=等类似
}
printf("%lf\n",sum);
——————————————————————————————
后缀名为.c的C语言源程序都可以单独进行编译
只有含有main函数的源程序文件经过编译链接才能被执行
main函数不能被其他函数调用
c程序的基本组成单位是函数
c语言的标识符可分为关键字、预定义标识符和用户标识符 - 只能由字符、数字、下划线构成,且只能以字母,下划线开头。 - 最多由274个字符组成。
在c语言程序中,可以用一个符号名来代表一个常量,称为符号常量,符号常量在定义时不需要类型,其本身就能表达其类型。
单引号表示字符常量,但不能包含字符串,表达字符串常量时需用双引号。
C语言中实型(小数)常量有两种表示:小数形式和指数形式
小数必须要有小数点,但是小数部分可以省略。
在指数形式中,字母e(或E)之前必须要有数字,且e(或E)后面的指数必须为整数 - 如
0.5e3 = 0.5*10*10*10
八进制整数常量以数字0开始,十六进制以0x开头 结尾加L表示长整型数据。
定义变量时不能连续用等号,如 int a=b=c=8;这样是不可以的
c语言中整型常量可以用十进制、八进制、十六进制数来表示。虽然计算机只能识别二进制数,但是二进制不能用在源程序中。
在多目运算符相关联的运算数中,如果类型不一致,系统将自动进行类型转换,使两边的类型达到一致后,再进行运算,转换的规则是“由低到高”
x+y这种带有运算形式的符号不能作为左值,即不能放到=左边
在类型转换过程中,如果较高类型转换成较低类型,直接忽略多余位数。
取x的百位上的数字 - x/100%10
x/100:结果的个位数上数字是x的百位上数字,要得到此数据,在%10即可。
ASCII码表中有几个符号对应的数字需要记一记:'0'~48;'\0'~0;'A'~65;'a'~97