第二单元。
0~48 a~65 a~97 esc~27
2.变量不能连续赋初值,赋值语句允许连续赋值。
等价于k=(a++)b++)c
4.空语句是什么意思?
0) 非法因为x=y+5;是语句,不能出现在表达式中;
if((x=y+5)>0) 合法。
语言必须有输出。
和putchar的使用p37,暂时看不懂。
是一个无参函数。
输入需要变量地址,无精度控制。
10.%是求余运算。
11.字符常量用单引号,字符串用双引号。
和putchar只能输入输出一个字符。
13.琐碎知识较多,多看课本。
strcpy为字符串复制函数赋值。
strcat为字符串连接函数。
strcmp用来比较两个字符串是否相同。
strlen是用来求字符串的长度。
sizeof是求占用内存空间字节数。
例如:if(strcmp(s1,s2)==0) st;如果字符串s1和s2相同,则执行st
15.动态存储变量包括auto和register变量,静态存储变量包括extern和static变量。
第三单元。1.关系运算符真和假分别用1和0表示。
2与或非。语句三种形式。
(条件) 结果;
条件)结果1;
else结果2;
3. 当条件有多个分支的时候。
if(条件1)
结果1;else if(条件2)
结果2;else if(条件3)结果3;
else if(条件m)
结果m;else
结果n;后面可以使表达式,赋值表达式,甚至一个变量。
条件后面的结果不止一条使用,但是}后面不能有“;”
如:if(a>b)
6.当有多个if和else时,规定else总是与前面最靠近的if配对。
7.三目运算符:
表达式1?表达式2:表达式3
例如:if(a>b) max=a;
else max=b;
可以写成:max=a>b?a:b;
关系运算符结合方式是自右向左。
如:a>b?a:c>d?c:d应该理解为a>b?a:(c>d?c:d)
语句。switch(表达式)
case 表达式1:结果1;
case 表达式2:结果2;
case 表达式3:结果3;
case 表达式n:结果n;
default:结果n+1;
如果所有表达式都不符合,则执行default,default是最后执行的。
不能直接跳出,需要break;来跳出结果。
看不懂。第四单元。
语句。一般形式:while(条件) 结果;多条结果使用,最后无“;”
当条件为真时,执行结果。
语句。一般形式:do 语句 while(条件);
先执行语句,然后通过条件判断是否执行下去,可以参考p70流程图,多条结果使用,最后无“;”while后面有“;”
语句。一般形式:for(循环变量赋初值;循环条件;循环变量增量)循环语句。
例如:for(i=1;i<=100;i++)sum=sum+i
相当于while语句:
表达式1;while(表达式2)
语句。表达式3;}
4.可以看看例4.9的结婚问题。
语句。break对if-else不起作用
多层循环中break只能向外跳一层。
语句。第五单元。
例题。第七单元。
指针。1.把字符串首地址赋给字符类型的指针变量。
#include<>
void main()
char *p="hello";
printf("%c",*p);
输出结果:h
2.指针变量加减一个整数运算只能对指向数组的指针变量进行。
4.两个指针变量相减,只有指向同一数组才有意义,无加法,第八单元。
结构体共用体枚举。
1.结构体定义。
struct 结构名。
2.表示结构变量名的一般形式:
结构变量名。成员名。
例如:printf(%s,3.结构变量的初始化。
struct 结构体类型名结构变量=;
第九单元。预编译处理。
1.无参宏定义。
一般形式:#define 标识符字符串。
1.宏的关键是换。
2.字符串双引号内的内容永远不进行替换。
3.一个#define定义的宏,可以用#undef中止宏定义的作用域。
4.在宏定义表达式中适当使用圆括号。
二。有参宏定义。
一般形式:#define 宏名(参数表) 字符串。
如: #define s(a,b) a*b
1.在宏定义中形参最好用()括起来。
#include<>
#define f(x) x*x*x
main()
int a=3,s,t ; s=f(a+1); t=f((a+1));printf("%d,%d",s,t);
运行结果10,64
2.宏替换占用了编译时间,函数调用需要占用程序运行空间p259
3.宏的使用耗费了存储空间,函数耗费了时间p266(两个哪一个正确)
第一章。语言的标识符可分为关键字、用户标识符、和预定义标识符三类。
2.标识符由字母、数字和下划线组成,并且第一个字符必须是字母或下划线。
3.常量包括整形常量、实型常量、字符常量、字符串常量。
整形常量又可分为短整型常量和长整型常量。
4.整型常量只用数字表示不包含小数点。
实型常量必须用带小数点的数表示。
5.八进制数必须用0开头,十六进制数用0和x开头。
十六进制数中的字母abcdef分别表示。
6.在c程序中只有十进制数有负数,八进制和十六进制都没有负数。
7.计算机中,内存储器的最小存储单位是位(bit),8个二进制位组成一个字节(byte)。
8.用e或e表示的实型常量规定:(1)e或e必须要有数字之前。
2)e或e后面的指数必须为整数。
3)e或e的前后以及数字之间不能有空格。
9.在一般的计算机系统中,位float类型的变量分配4个字节的存储单元,为double类型的变量分配8个字节的存储单元。
10.只有单目运算符+和-的结合性是从右到左,其余的运算符的结合性都是从左到右。
11.强制类型转换表达式形式(类型名)(表达式)。
12.赋值运算符=号的优先级只高于逗号运算符。
第二章。1.输出数据都隐含右对齐,如果想左对齐,可以在格式控制中的%号和宽度之间加一个-号实现左对齐。
2.通常正数输出都不会带+号,要想每一个数都都带正负号,可以在%和格式字符之间加一个+来实现。
3.各种输出格式总结(1)int类型时,宽度太大时,左边空格补齐,宽度不够时自动突破限制。
2)double类型时如果对小数点后数字没有要求就是6位,当满足6位时,宽度太大,左边空格补齐。宽度不够时自动突破限制,并且保留6小数点后数字。
3)当要求输出e类型(指数形式)也是自动保留6位小数点后数字,不足用0右面补齐。
4)对于int类型,若输出格式是0n1或 .n2格式,则如果指定的宽度超过输出数据的实际宽度,则右对齐左边补0。
5)对于字符串,格式n1指定输出宽度,若n1小于字符串的实际宽度,则自动突破,输出整个字符串;若n1大于实际宽度则右对齐,左面空格补齐。若用。n2的格式输出若n2小于实际宽度则输出字符串的前n2个字符。
输出注意事项:(1)要输出%号时,可以在格式控制中用%%表示,将输出%号。
2)尽量不要改变输出变量的值。例如int k=8;printf("%d,%d",k,k++)输出结果不是8,9而是9,9。因为在调用printf时,其参数是从左到右进行处理的,先将进行++k运算。
注意事项:(1)输入short类型数据,格式控制要求用%hd。要输入double类型数据要用%lf或%le。
2)不能指定小数位的宽度。
3)多个数据输入时不同数据间要有空格或回车或制表符。
4)可以在%和格式字符之间加入*,作用是跳过对应的输入数据。
第三章。1.非0为真,0为假。
2.<、的优先级别相同,==的优先级别相同,但是前四种优先级别高于后两种。
3.优先级别比较:算术运算符》关系运算符》赋值运算符。
4.三种逻辑运算符:&&与 ||或 !非。
5.逻辑运算符的优先级别比较: !
6.总体比较优先级别比较:!>算术运算符》关系运算符》&&赋值运算符。
C语言笔记
第一课时。c语言标准格式。include vidomain 以 开头的语句称为预处理指令。include语句不是必须的,但是如果一旦有该语句就必须把它放在文件开始处是standared input output header的缩写standared 标准input 输入output 输出header...
C语言笔记
c语言算法和数据类型。整型。基本类型 字符型注释 基本类型的特点是其不可实型 单精度型以再分解为其他类型双精度型数组型。数据结构 构造型 结构体型共用体型指针型空类型。一 常量。define 语句不以分号结尾,它可以放在源 的任何位置。不过在定义常量时,只有在它定义后的源 中才有效。是一个修饰符,在...
c语言笔记
1.if中别忘了 而不是 2.写完程序别忘了检查前后大括号 小括号是否完全照应。3.遇到几分之几的分数可以方程两边同时乘以一个数来消去分母。4.写指针题时看准指针对应的是行还是列。例 int a 4 3 int p a 0 列指针。int ptr 3 a 行指针。5.考虑好哪些量会随着循环不断改变。...