计算机语言的发展:
1.机器语言:二进制代码。
二进制代码就是由0和1组成的指令。比如010 1001等等
计算机能够直接识别和接受的二进制代码称为机器指令。
机器指令的集合就是计算机的机器语言。
2.符号语言《汇编语言〉:符号语言计算机不能直接识别和执行。需要汇编程序把符号语言转换成机器指令。这个过程叫散“代真”或“汇编”。
3.高级语言﹐它也不能被计算机直接识别,需要编译程序把高级语言写的程序(称为源程序),转换为机器指令的程序(称为目标程序》。
5:机器语言和汇编语言都是低级语言,都是面向机器的语言,低级语言的可移植性很差。
高级语言的发展阶段:
1.非结构化的语言:早期的BASIC,FORTRAN语言,程序中的流程可以随意跳转
2.结构化语言:程序必须有具有良好特性的基本结构(顺序结构,分支结构,循环结构)构成,如:QBASIC,FORTARN77和c语言
3.面向对象的语言:C++,C#,VISUAL BASIC和Java
c语言的发展及特点:
c语言的前身是BCPL语言,贝尔实验室正式发布了c语言。
c语言的标准有:
1 .ANSl c c8sc90《这3个标准都一样)2.c99
t语言的特点:
1.语言简洁,紧凑,使用方便,灵活
2.运算符丰富
3.数据类型丰富
4.具有结构化的控制语句
5.语法限制不太严格,程序设计自由度大。
6.C语言允许直接访问物理地址,能进行位( bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。
7.用C语言编写的程序可移植性好。
8.生成目标代码质量高,程序执行效率高
向屏幕输出一行文字
#include//stdio.h通知编译器printf函数的功能 int main(void){ //任何程序从main函数开始执行,从main函数退出执行的 printf("hahan"); //printf的功能是输出双括号中的内容,双括号中的内容称之为字符串 单引号括起来的是字符 return 0; }
输出两个整数的和
#includeint main(void){ int a,b,sum; printf("%d,%d,%dn",a,b,sum); //这里输出a,b,sum三个值,但因为这三个变量没有初始化,输出结果不确定是垃圾值 a=2; b=3; sum=a+b; printf("sum is %dn",sum); return 0; }
函数
#includeint f(int a){ return a*a; //1.把a*a的值发送给调用它的函数 2.结束该函数的执行 } void g(int a,int b){ //形参 printf("%dn",a+b); return; } int main(void){ printf("%dn",f(3)); //实参 g(3,4); return 0; }
#includevoid f(void){ //函数名的作用域,是从函数的定义或函数声明处开始,到这个源程序文件的末尾结束 printf("1111n"); } void g(void); //函数首部+分号 即函数声明 可以扩展函数名的作用域到此 void h(int); //函数声明的形参变量名是可以省略的 //main函数之前的代码是为main函数的执行提供信息的,他不一定被执行 int main(){ f(); g(); h(3); return 0; } void g(void){ printf("2222n"); } void h(int a){ printf("%dn",a); g(); //h函数的定义必须在g函数的作用域之内,因为h函数中有g函数的调用 }
求两个数的最大值
#include//printf和scanf的函数声明都在stdio.h里,printf和scanf的函数定义在库里 int main(){ double a,b; printf("请输入2个数:n"); scanf("%lf%lf",&a,&b); //&取地址符 printf("a is %lf,b is %lfn",a,b); //%lf是在对一个浮点数据进行格式输入输出所用到的格式说明符 if(a printf 函数和 scanf 函数的返回值
#includeint main(void){ printf("%dn",printf("hahan")); //printf函数的返回值为整型,会把所输出的字符个数返回 int a,b; printf("%dn",scanf("%d%d",&a,&b)); //scanf函数会返回其按照正确格式输入的变量的个数 return 0; } 输入一个成绩,输出成绩所对应的成绩段
#includeint main(void){ double a; printf("请输入你的成绩:"); scanf("%lf",&a); if(a<0||a>100){ printf("这个成绩是不可能的"); }else{ if(a>=0 && a<60){ printf("这个成绩不及格n"); }else{ printf("这个成绩及格n"); } } return 0; } if语句的细节问题
#includeint main(void){ if(3>2){ // if(1)/if(5) //当表达式的值为0,表达式为假;否则表达式为真。 printf("hahan"); printf("lalan"); } if(3<2){ //if(0) printf("哈哈n"); } else{ //当多个if语句使用时,else是属于紧挨着它上面那个if语句的内容 printf("啦啦n"); printf("咔咔n"); } return 0; }
scanf函数的注意事项
(1)使用scanf函数输入数据,为什么需要按回车——回车可以刷新键盘缓冲区的内容。键盘缓冲区会有一个换行字符。
(2)scanf函数遇到错误输人会停止
(3)scanf函数的格式字符串中的字符分类:1.格式声明(格式说明符)
2.空白字符(共有3种,换行,空格和tab (’n’, ’ ‘,t’) ) ——scanf 在读操作中忽略掉1个或者多个空白符。
3.非空白学符——scanf 在进行读操作的时候剔除掉与这个非空白字符一样的字符(4)再输入时使用空白字符起到的数据间隔作用
#includeint main(void){ char ch1,ch2; scanf("%c%c",&ch1,&ch2); //对于连续的字符类型输入,它们有能力自己间隔数据,所以再输入完一个字符之后,不必加空白字符,否则会得到错误的结果 printf("ch1=%c,ch2=%c.n",ch1,ch2); return 0; }
优先等级 运算 1 初等运算符 2 单目运算符 3 乘号,除号,取余 4 加号,减号 5 左移运算符<<,右移运算符>> 6 关系运算符 7 等于,不等于 8 按位与& 9 按位异或^ 10 按位或/ 11 逻辑与&& 12 逻辑或// 13 条件运算符?: 14 赋值运算符 15 逗号 运算符1
#includeint main(void){ printf("%d,%dn",1+2*3,(1+2)*3); //输出7,9 int a=1,b=2,c=3; a=b=c; printf("%dn",a); //输出3 //!(逻辑非运算符)求该操作数的逻辑反值,如果该操作数为真,则整个表达式为假,否则为真。 printf("%d,%d,%dn",!1,!9,!0); //输出0,0,1 //-(负号运算符) printf("%dn",4*-3); //4*-3与4*(-3)等价,因为乘号比符号的优先级低,所以圆括号可省。 return 0; } 运算符2
#includeint main(void){ //算术运算符 printf("%d,%lfn",5/2,5.0/2); //输出2,2.500000 除号运算符的操作数如果都为整数,结果也为整数。 int a; printf("%dn",a=3.98); //输出3 printf("%d,%dn",5%2,4%2); //输出1,0 //printf("%dn",3.0%2); //报错,取余运算符两边必须为整数 printf("%d,%d,%dn",-13%3,13%-3,-13%23); //输出-1,-1,-13 //赋值运算符 int b=1,c=7; printf("%dn",b+=2); //输出3 printf("%dn",c/=2); //输出3 //b+c=100; //报错,赋值运算符的左操作数必须是一个左值(变量),b+c是一个常数(不可以修改的值) //检测赋值表达式是一个常数还是一个左值 a=1,b=2,c=3; printf("%dn",(a=b)=c); //输出3 return 0; } 运算符3
(1)&&,||,逗号,条件运算符规定了运算顺序,必须自左向右
(2)操作数的求值顺序,不同的编辑器可能有所不同
(3)&&和||都先计算左边表达式的值,如果左边表达式的值能够确定整个表达式的值,那么右边表达式的值就不会被计算#includeint main(void){ //逗号运算符 printf("%dn",(1!=1,2==2,3)); //输出3 逗号表达式,最右边表达式的值 int a=0; a+=1,(a*=2); printf("%dn",a); //输出2——(1) //逻辑与运算符 a=0; //0&&a=3; //报错,等价于(0&&a)=3 0&&(a=3); //先计算左操作数,再计算右操作数 printf("%dn",a); //输出a的值为0——(3) //逻辑或运算符 a=0; 1||(a=3); printf("%dn",a); //输出a为0 ——(3) //(2) a=0; printf("%dn",((a+=1)+(a*=2))); //在不同的编译器中,可能先算“+”的左操作数,也可能先计算右操作数,所以输出结果可能是2或者是4 return 0; } 运算符4
#includevoid max(int a,int b); int main(void){ 1?printf("哈哈n"):printf("呵呵n"); 1?printf("1n"),printf("2n"):(printf("3n"),printf("4n")); 0?printf("An"):0?printf("Bn"):printf("Cn"); max(3,2); int a=0; 0?(a+=2):2; printf("%dn",a); //自左往右,输出a为0 //0?return 0:printf("123n"); //error表达式是数值和运算符组合,return是关键字,return 0 不是表达式 //0?int x:printf("123n"); //error int x 并不是表达式 return 0; } void max(int a,int b){ printf("%dn",a>b?a:b); //该表达式的值a>b?a:b——如果a>b成立,其值为a,否则b // a>b?printf("%dn",a):printf("%dn",b); } 全局变量及宏定义
// #号开头的都是预处理指令,预处理是发生在预编译阶段(编译阶段之前),对源程序进行一些简单的文本替换 // 全局变量的作用域是从定义处开始,到整个文件的末尾 #include//宏定义 #define PI 3.141592 //全局变量,全局变量名建议大写 函数体之外定义的变量(除形参变量以外) int A; //未初始化的全局变量,系统会默认给他初始化为0 int B=3; int main(void){ printf("%lfn",PI); printf("PIn"); //字符串内不会发生宏替换 //PI=10; //error PI是个符号常量,不可以被赋值 printf("%d,%dn",A,B); //输出0,3 return 0; } 标识符
1.标识符不能和C语言的关键字相同,也不能和用户自定义的函数或C语言库函数重名。
2.不同的c语言编译器对标识符的长度规定不同,例如在某版本C中规定标识符前八位有效,当两个标识符前八位相同时,则被认为是同一个标识符。( vc. ++6.0中规定标识符最长不允许超过32个字符)



