二级C语言各章的知识点
- 格式:doc
- 大小:3.74 MB
- 文档页数:67
二级C语言知识点第二章C程序基础知识1 简单的C语言程序的构成(1)一个C程序只有一个main()----称为主函数,main要小写,程序的执行是从主函数开始并在主函数中结束,一个完整的C程序是由一个主函数和若干个子函数构成的。
(2)函数内部称为函数体,由一对大括号{}括起来,在{}里,前面必须是定义各种所需的变量,后面才是各种语句,二者不能颠倒,并且一个语句结束必须有分号;下面是例子:#include”stdio.h”/* 或写成#include<stdio.h>嵌入头文件,注意前面要有#号,后面没有;号,所以它不是语句*/main(){int a,b,c; /* 定义三个整型变量*/a=2; /*以下三句是赋值语句,注意每个语句都有分号;*/b=3;c=a+b;printf(“%d”,c); /* 把变量C的值在电脑屏幕上显示---称为输出语句*/}把这个程序领着学生在VC6里演示一下,让学生会运行程序,并且会看输出结果。
2 关于/* ...........*/------称为注释,它不运行(1)把从/*开始到*/结束的语句行都作为注释(记住—注释是不运行的)-----老师在投影上举一例说明。
(2)不能嵌套注释,如:/*/*........*/*/3 关于给变量起名的问题,也就是变量名的命名规则(1)由字母a~z、A~Z、0~9、_(下划线)组成(2)由字母或下划线开头(3)大、小写的字母是不同的变量(4)不能使用C语言的关键字(关键字是小写的)老师在此可以举例说明4 在C语言中经常可以用到哪些类型的变量和常量的问题(1)若有f(x)=2x2 +5 ,其中X是变量,5是常量,那么X的取值范围是什么呢?是有符号整型?无符号整型?短整型?长整型?单精度浮点型?双精度浮点型等等,这个问题在C语言的程序设计中对变量X的取值范围规定的比较清楚。
下面就介绍一下在C语言中对变量X 是如何规定它的取值范围的。
呵呵!!!①int x(signed int x或signed x)------称为普通整型,它规定了X的取值范围是下列类型(注意:这里的变量X 是用4个字节来存放的)十进制的-----正整数、负整数、0,如:25、-36等八进制的-----正整数,如:065等,-065(不允许)十六进制的----正整数,如:0x2c,0Xa6等,-0xa1(不允许)②short int x(short x)------称为短整型,它规定的X的取值范围和int x基本一样,只不过取的数要比int x要小而已,因为它是用两个字节来存放X的(-32768~+32767)。
而上面的是用四个字节来存放X的。
③long int x(long x)-----称为长整型,其规定的X取值范围和int x一样,也是用四个字节来存放X的(输入时要用%ld、%Ld)。
④unsigned int x(unsigned x)------称为无符号整型,它规定了X只能取正整数,也是用四个字节来存放X的。
⑤unsigned short int x------称为无符号短整形,其十进制的取值范围喂0~65535⑥char x------称为字符型,用一对单引号‘’括起来的任意字符,包括字母字符、数字字符、转义字符等如:’a’、’3’、’\n’等分析:’a’、’A’、‘2’、 2 、‘ab’、‘\123’⑦float x------单精度浮点型,小数点后默认保留6位小数如:0.123、.123、123.等1.23e+2、1.23e2、1.23E2、.123e-2等(指数形式)用指数形式表示浮点数要注意三点:ⅰ、e或E前后必须有数ⅱ、e或E后面必须是整数ⅲ、e或E的前后以及数字之间不得插入空格⑧double x------双精度浮点型(输入时要用%lf或%Lf,输出可用%f、%lf、%Lf)(2)关于常量(整数、小数、字符型数据)5------可以认为是int型、short int、unsigned int都可以5L或5l------是long int型5h或5H------是short int型1.23------是double型‘a’-----97‘A’-----65‘2’------50‘\123’---(3)关于类型的强制转换问题------即把一个类型强制转换成其他类型如:#include”stdio.h”main(){int x=5; /* 给变量X初始化*/float y,z;z=2.56; /*给变量Z赋值*/y=(float)x; /*对变量X的值进行强制转换,而X的类型和值都不改变*/printf(“%d,%f\n”,x,y); /*5,5.000000 */x=(int)z; (或写成x=z)/* 对变量Z的值进行强制转换,且不进行四舍五入*/printf(“%d”,x); /* 2 */}分析:a=(float)b+c;和a=(float)(b+c);有什么区别?关于强制转换要注意两点:一是待转换的类型一定要用小括号括起来;二是对后面变量的值进行转换,不改变原来变量的类型和值,并且不进行四舍五入。
5 常用的算术运算符+、-、*、/、%、+=、-=、*=、/=、++、--、,等下面把需要特殊注意的运算符加以说明:①/------除号,ⅰ若分子和分母都是整型,其结果也是整型(不进行四舍五入)ⅱ若分子或分母至少有一个是浮点型,其结果就是浮点型。
%------取余,注意%的前后都必须是整型的,且结果的符号与被除数相同.举例:把两个两位的正整数按要求组成一个新数a=45,b=32,要求组成一个新数C=4325#include”stdio.h”main(){int a=45,b=32,c;c=a/10*1000+b/10*100+b%10*10+a%10;printf(“%d”,c);}分析:如何取出1234的每个位上的数?(使用算术符%和/)②+=、-=、*=、/=------称为复合运算符(注意:两个符号不能分开)如:a=a+b;可以写成a+=b;a+=b-c 和a-=b+c可以写成什么呢?(由学生来回答)a+=a-=a+a (假设a=9),最后a=?(-18)(由老师来讲解)③++、--称为自增自减运算符(单目的),很重要如:a++ 先用a,然后再把a加1++a 先把a加1,然后再用aa-- 先用a,然后再把a减1--a 先把a减1,然后再用a举例:见如下程序#include”stdio.h”main(){int a=3,b=6,c,d,e,f;c=b+a++;d=a+(--b);e=-a++;f=a+b+c;printf(“a=%d,b=%d,c=%d,d=%d,e=%d,f=%d\n”,a,b,c,d,e,f);}答案:a=5,b=5,c=9,d=9,e=-4,f=19④, 逗号---称为逗号运算符,由逗号运算符构成逗号表达式,逗号表达式最后一项的值就是逗号表达式的值,逗号运算符的优先级最低。
如:a=3,b=4,c=5;x=(a,b,c); 问:x=?(5),逗号表达式的值=?(5)x=a,b,c; 问:x=?(3),逗号表达式的值=?(5)x=(a++,--b,a+b); 问:x=?(7),逗号表达式的值=?(7)x=a++,--b,a+b; 问:x=?(3),逗号表达式的值=?(7)x=(a++,--b,a+b+c++); 问:x=?(12),逗号表达式的值=?(12)6 关于数据溢出问题,看下面例子:int a=-3;unsigned short x;x=a; 问:x=?(65533)7 分析:int a=b=c=1;对不?领学生做书后的习题第三章顺序结构程序设计1 关于输出函数的使用使用的格式:ⅰprintf(“各种字符及汉字等”);/*printf要小写*/这种使用就是在屏幕上显示双引号中的内容ⅱprintf(“输出格式控制”,待输出的变量列表);这种使用就是在屏幕上以何种形式输出变量的值要重点掌握输出格式控制都有哪些?① 格式符:%d 以普通整型输出(不可以写成%D)%md 以普通整型输出,数据占m位,右对齐%+md 以普通整型输出,数据占m位,右对齐(正数的前面有+号)%-md 以普通整型输出,数据占m位,左对齐%hd 以短整型输出%ld(或%Ld) 以长整型输出%u 以无符号整型输出%o 以八进制形势输出%x(或%X) 以十六进制形势输出%f 以单精度小数形势输出,点后6位小数%lf(或%Lf或%f) 以双精度小数形势输出,%±m.nf 以单精度小数形势输出,点后n位小数,且进行四舍五入%.nf 以单精度小数形势输出,点后n位小数,且进行四舍五入%c 以字符形式输出%s 以字符串形式输出说明:以上的常用格式符必须和后面的变量一一对应,并且后面的变量是什么类型前面就必须用相应的格式符例:int a=-2;unsigned int b=30;float c=3.1456;printf(“%d%u%5.2f”,a,b,c); 问:输出结果是什么?(-230 3.15)②普通字符普通字符原样输出,它不控制变量的输出。
printf(“a=%d,b=%u,c=%5.2f”,a,b,c); 问:输出结果是什么?③转义字符\n 回车且换行\r 回车但不换行\b 退一个字符\t 走一个制表位(8个字符)\\ 转译成\\’转译成’\”转译成”%% 转译成%\ddd 转译成1~3位八进制所对应的ascii码值所代表的字符\xdd 转译成1~2位十六进制所对应的ascii码值所代表的字符老师举例子说明如:printf(“a=%d,b=%u,c=%5.2f\n”,a,b,c);printf(“%c\n%c\n”,’\56’,’\x2a’);问:以上输出结果是什么?答案:int a=1,b=3;printf(“%d”,a,b);输出结果是什么?(1)printf(“%d”,(a,b)); 输出结果是什么?(3)2 关于输入函数的使用格式:scanf(“输入格式控制”,变量地址列表);重点掌握都有哪些输入格式?(有格式符和普通字符,没有转义字符)① 格式符:%d 以普通整型输入%ld(%Ld) 以长整型输入%hd 以短整形输入%md 取整型的m位%u 以无符号型输入%o 以八进制输入%x(%X) 以十六进制输入%f 以单精度小数输入%lf(%Lf) 以双精度小数输入%mf 以单精度小数输入(但是不能规定它的精度。
如:%5.2f )%c 以字符型输入%s 以字符串型输入如:int a;float b;double c;long d;scanf(“%d%f%lf%ld”,&a,&b,&c,&d);假设让a=23,b=2.6,c=12.66,d=12345问:在键盘上应如何输入?②普通字符普通字符不影响输入,只是在输入时原样打上就行如:把上例改为:scanf(a=%d,b=%f,c=%lf,d=%ld);那么应该如何输入?③关于混合输入问题如:假设让a=23,b=’k’,c=12.5,d=’p’scanf(“%d%c%f%c”,&a,&b,&c,&d);问:如何输入?(23k 12.5p或23k12.5p)④关于跳过某个输入项的问题如:scanf(“%d%*d%f”,&x,&y);假设输入如下:20 30 2.5回车问:x=? (20) y=?(2.5)⑤按照给定的长度输入如:scanf(“%3d%2d”,&x,&y);假设输入如下:2345678回车问:x=? (234) y=?(56)下面举三个综合的例子:(让学生自己写写看行不???)例1:从键盘输入两个两位的正整数,第一个数的十位作为千位,个位作为十位;第二个数的十位作为百位,个位作为个位,组成一个新的数输出。