资源预览内容
第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
第9页 / 共29页
第10页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C C语言教案第三讲语言教案第三讲n n1、位运算符(、位运算符(、&、|)n n2、位运算注意事项、位运算注意事项n n(1)对象只能是整数或字符型数据。)对象只能是整数或字符型数据。n n(2)进行位运算前,一定要先将数据转换)进行位运算前,一定要先将数据转换成二进制数。成二进制数。n n(3)各个位运算符的优先级)各个位运算符的优先级n n注:字符型数据参与位运算时,采用其注:字符型数据参与位运算时,采用其ASCII码进行运算。码进行运算。第九节 位运算2 2n n3 3、位运算的规则、位运算的规则、位运算的规则、位运算的规则n n(1 1):0 0变变变变1 1,1 1变变变变0 0。n n(2 2):a ia:a ia i表示表示表示表示a a向右移动向右移动向右移动向右移动i i位,左补符号位,左补符号位,左补符号位,左补符号位。位。位。位。n n(4 4)&:a&ba&b a a、b b对应的二进制位,同时为对应的二进制位,同时为对应的二进制位,同时为对应的二进制位,同时为1 1,则结果即为,则结果即为,则结果即为,则结果即为1 1,否则为,否则为,否则为,否则为0 0。n n(5 5)| |:a|ba|b a a、b b对应的二进制位,只要有一对应的二进制位,只要有一对应的二进制位,只要有一对应的二进制位,只要有一个为个为个为个为1 1,则结果即为,则结果即为,则结果即为,则结果即为1 1,否则为,否则为,否则为,否则为0 0。n n(6 6):abab a a、b b对应的二进制位,相同为对应的二进制位,相同为对应的二进制位,相同为对应的二进制位,相同为0 0,不同为不同为不同为不同为1 1。n n注意:注意:注意:注意:右移一位表右移一位表右移一位表右移一位表示除以示除以示除以示除以2 2 3 3(7)位数不同的运算数之间的运算规则)位数不同的运算数之间的运算规则 a 将两个运算数右端对齐将两个运算数右端对齐 b再将位数短的一个运算数往高位扩充,再将位数短的一个运算数往高位扩充,即:无符号数和正整数左侧用即:无符号数和正整数左侧用0补全,负数补全,负数左侧用左侧用1补全,然后对补齐后位数相等的两补全,然后对补齐后位数相等的两个数按位进行位运算个数按位进行位运算4 4本章考点:考点考点 考核考核 几率分值几率分值printf函数(难点)函数(难点) 100% 34putchar函数函数 60% 12scanf函数(难点)函数(难点) 100% 34getchar函数函数 60% 12第二章 数据输出与输入5 5第一节第一节 数据输出数据输出n n1、printf函数的一般格式:函数的一般格式:n n printf(格式输出控制,输出列表格式输出控制,输出列表)n n(1)格式输出控制:需用一对双引号括起)格式输出控制:需用一对双引号括起来,双引号内包含来,双引号内包含“格式说明格式说明”和和“普通字符普通字符”两部分。两部分。 n n(2)输出列表:需要输出的数据,多个数)输出列表:需要输出的数据,多个数据之间用逗号隔开。据之间用逗号隔开。printf(“%d,%on”,m,n);printf(“m=%d,n=%on”,m,n);6 6n n2、格式说明、格式说明n n“格式说明格式说明”由由“%”和格式字符组成,如和格式字符组成,如%d,%c,更多格式说明请参考,更多格式说明请参考P34,表,表2-1。它的作用是把输出数据转换为指定格。它的作用是把输出数据转换为指定格式输出。式输出。n n注:在注:在printf函数中,若格式说明的个数少函数中,若格式说明的个数少于输出项的个数,多余的输出项则忽略不于输出项的个数,多余的输出项则忽略不输出,这是二级输出,这是二级C考试中经常出现的题目,考试中经常出现的题目,(参考(参考P34,例,例2)7 7n n3 3、普通字符、普通字符、普通字符、普通字符n n普通字符会原样输出,转义字符需要输出对应的普通字符会原样输出,转义字符需要输出对应的普通字符会原样输出,转义字符需要输出对应的普通字符会原样输出,转义字符需要输出对应的字符。字符。字符。字符。n n注:注:注:注:printfprintf函数输出数据时,学生做题很容易忽函数输出数据时,学生做题很容易忽函数输出数据时,学生做题很容易忽函数输出数据时,学生做题很容易忽略普通字符的输出。在二级略普通字符的输出。在二级略普通字符的输出。在二级略普通字符的输出。在二级C C考试中,这类题目常考试中,这类题目常考试中,这类题目常考试中,这类题目常出现。出现。出现。出现。n n例:例:例:例:n n main() main()n n n n int a,b; int a,b;n n a=10; a=10;n n b=15; b=15;n n printf(a+b=%d,a+b); printf(a+b=%d,a+b);n n 8 8说明:说明:说明:说明:n n(1 1)可以在)可以在)可以在)可以在%和格式字符之间加入一个整数来和格式字符之间加入一个整数来和格式字符之间加入一个整数来和格式字符之间加入一个整数来控制输出数据所占的宽度,如果整数指定的宽度控制输出数据所占的宽度,如果整数指定的宽度控制输出数据所占的宽度,如果整数指定的宽度控制输出数据所占的宽度,如果整数指定的宽度大于实际输出数据的宽度,数据的输出采用右对大于实际输出数据的宽度,数据的输出采用右对大于实际输出数据的宽度,数据的输出采用右对大于实际输出数据的宽度,数据的输出采用右对齐的方式,左边自动补空格;反之,则以输出数齐的方式,左边自动补空格;反之,则以输出数齐的方式,左边自动补空格;反之,则以输出数齐的方式,左边自动补空格;反之,则以输出数据的实际宽度输出。据的实际宽度输出。据的实际宽度输出。据的实际宽度输出。输出语句输出语句 输出结果输出结果printf(“%d”,258); 258printf(“%2d”,258); 258printf(“%4d”,258); 258printf(“%f”,1.25); 1. 250000printf(“%10f”,1.25); 1. 2500009 9(2)当在)当在%和格式字符和格式字符f之间加入之间加入“整数整数1.整整数数2”来控制输出数据的格式时,来控制输出数据的格式时,“整数整数1”用用于指定输出数据占的总宽度,于指定输出数据占的总宽度,“整数整数2”用于用于指定输出实数的小数部分的个数,当输出指定输出实数的小数部分的个数,当输出数据的小数个数多余数据的小数个数多余“整数整数2”指定的个数时,指定的个数时,截去多余的数据,并对截去的第一位小数截去多余的数据,并对截去的第一位小数做四舍五入处理,当输出数据的小数个数做四舍五入处理,当输出数据的小数个数少于少于“整数整数2”指定的个数时,在小数的右边指定的个数时,在小数的右边添添0补足。补足。输出语句输出语句 输出结果输出结果printf(“%4.4f”,3.15); 3. 1500printf(“%7.4f”,3.15); 3. 1500printf(“%2.0f”,3.15); 31010(3)如果在输出的八进制前添加)如果在输出的八进制前添加0,或,或在输出的十六进制前添加在输出的十六进制前添加0x,可在,可在%号和格式字符号和格式字符0和和x之间插入之间插入#号(注号(注意:意:#号对其他格式字符通常不起作用)号对其他格式字符通常不起作用)。 输出语句输出语句 输出结果输出结果 printf(“%o”,207); 317 printf(“%#o”,207); 0317 printf(“%#x”,207 ); 0xce1111n n特别说明:如果要输出特别说明:如果要输出特别说明:如果要输出特别说明:如果要输出“%”“%”时,则应该在格式控时,则应该在格式控时,则应该在格式控时,则应该在格式控制中用两个连续的制中用两个连续的制中用两个连续的制中用两个连续的“%”“%”,即,即,即,即“%”“%”来表示,也就是来表示,也就是来表示,也就是来表示,也就是在格式控制中出现两个连续的在格式控制中出现两个连续的在格式控制中出现两个连续的在格式控制中出现两个连续的“%”“%”,则此时,则此时,则此时,则此时“%”“%”不再用来代表格式说明。不再用来代表格式说明。不再用来代表格式说明。不再用来代表格式说明。n n例如:例如:例如:例如: printf(“%d”,258); 不会输出整数不会输出整数258,在屏幕上看到的结果为,在屏幕上看到的结果为“%d”。因为。因为“%”会输出一个会输出一个“%”,“d”会按原样输会按原样输出,这时因为没有格式说明,整数出,这时因为没有格式说明,整数258无法无法输出到屏幕上输出到屏幕上1212n n4、数据输出实例(已知、数据输出实例(已知int a=66; float b=123.56;)n n通过以下各输出语句,讲解输出函数的各通过以下各输出语句,讲解输出函数的各种格式。种格式。n n(1)printf(%d,a);66n n(2)printf(%3d,a);66n n(3)printf(%-3d,a);66n n(4)printf(%f,b);123.560000n n(5)printf(%7.2f,b);123.56n n(6)printf(%-7.2f,b); 123.56n n(6)printf(%c,a); Bn n(7)printf(%x,a);421313n n5、putchar函数函数n n格式为:格式为:putchar(c)n n这里的这里的c只能是字符型变量或字符型常量,只能是字符型变量或字符型常量,即即putchar函数只能输出字符型数据。函数只能输出字符型数据。例如例如 putchar(C)知指输出一个大写字母)知指输出一个大写字母C到大屏幕上到大屏幕上1414n n1、scanf函数的一般格式:函数的一般格式:n nscanf(格式输入控制,输入数据列表格式输入控制,输入数据列表)n n格式输入控制与格式输入控制与printf函数的格式输出控制函数的格式输出控制相同。输入数据列表必须是一个或者是多相同。输入数据列表必须是一个或者是多个合法的地址表达式。个合法的地址表达式。scanf(“%d”,&a););scanf(“%f”, &a););scanf(“%c”,&a););参考书参考书39页表页表2-5第二节 数据输入函数15152.说明:说明:(1)当从键盘中输入多个数值数据时,输入)当从键盘中输入多个数值数据时,输入数值数据之间用分隔符(包括空格符、制数值数据之间用分隔符(包括空格符、制表符和回车符,但是不包括逗号)隔开。表符和回车符,但是不包括逗号)隔开。例如:例如: int x,y,z; scanf(“%d%d%d”,&x,&y,&z); 如对如对x、y、z三个整型变量分别输入三个整型变量分别输入10、20、30,则数据的输入格式如下:,则数据的输入格式如下: 1020301616n n(2)在输入控制中,格式说明的类型与输)在输入控制中,格式说明的类型与输入项的类型应该一一对应匹配。如果类型入项的类型应该一一对应匹配。如果类型不匹配,系统并不给出出错信息,但不能不匹配,系统并不给出出错信息,但不能得到正确的输入数据。当输入长整型数据得到正确的输入数据。当输入长整型数据(long)时,必须使用)时,必须使用%ld格式;输入格式;输入double数据时,必须使用数据时,必须使用%lf或或%le,否,否则不能得到正确数据。则不能得到正确数据。n n(3)与)与printf相似,在相似,在scanf函数中的格函数中的格式字符前可以用一个整数指定输入数据所式字符前可以用一个整数指定输入数据所占的宽度,但对实数不能指定小数的位数。占的宽度,但对实数不能指定小数的位数。1717n n(4)在输入控制中,格式说明的个数与输)在输入控制中,格式说明的个数与输入项的个数应该相同。如果格式说明的个入项的个数应该相同。如果格式说明的个数少于输入项的个数,系统自动结束输入,数少于输入项的个数,系统自动结束输入,多余的数据没有被读入,但可以作为下一多余的数据没有被读入,但可以作为下一个输入操作的输入数据;如果格式说明的个输入操作的输入数据;如果格式说明的个数多余输入项的个数,系统同样自动结个数多余输入项的个数,系统同样自动结束输入。例如:对于如下输入语句:束输入。例如:对于如下输入语句: int x,y,z; scanf(“%d%d”,&x,&y,&z); 如采用如下的输入形式:如采用如下的输入形式:102030,由于在输入控,由于在输入控制中只有两个格式说明制中只有两个格式说明%d,则只能对,则只能对x和和y变量分别输入变量分别输入10和和20,而,而30不能被读入,不能被读入,只能作为以后其他输入的输入数据。只能作为以后其他输入的输入数据。1818(5)跳过输入数据的方法。可以在格式字符)跳过输入数据的方法。可以在格式字符与与%之间加入一个之间加入一个“*”使输入过程跳过输入使输入过程跳过输入的数据。例如如下程序:的数据。例如如下程序: int x,y,z; scanf(“%d%*d%d%d”,&x,&y,&z); 如采用如下的输入形式:如采用如下的输入形式:10203040,则系统会把则系统会把10赋给变量赋给变量x,跳过数据,跳过数据20,把把30赋给变量赋给变量y,把,把40赋给变量赋给变量z。1919(6)若在)若在scanf函数的输入控制中含有函数的输入控制中含有其他的字符,则在输入时要求按一一其他的字符,则在输入时要求按一一对应的位置原样输入这些字符。例如:对应的位置原样输入这些字符。例如: int x,y,z; scanf(“x=%dy=%dz=%d”,&x,&y,&z); 要求按如下的形式输入:要求按如下的形式输入:n nX=10y=20z=3020203 注意:注意:n n(1)scanf的输入分隔符不包含逗号,因的输入分隔符不包含逗号,因此在使用键盘输入数据时,不能以逗号作此在使用键盘输入数据时,不能以逗号作为分隔符。如果需要以逗号作为分隔符,为分隔符。如果需要以逗号作为分隔符,则应该在格式控制字符串中使用逗号,例则应该在格式控制字符串中使用逗号,例如:如: scanf(“%d,%d,%d”&x,&y,&z); 注意:在以上三个注意:在以上三个%d之间有逗号隔开。之间有逗号隔开。按要求输入格式如下:按要求输入格式如下: 10,20,302121n n(2 2)一般情况下,)一般情况下,)一般情况下,)一般情况下,scanfscanf的格式控制字符串中不的格式控制字符串中不的格式控制字符串中不的格式控制字符串中不要包含其它非格式控制符,否则往往容易让人混要包含其它非格式控制符,否则往往容易让人混要包含其它非格式控制符,否则往往容易让人混要包含其它非格式控制符,否则往往容易让人混淆。也就是说,在淆。也就是说,在淆。也就是说,在淆。也就是说,在scanfscanf中只使用格式控制符,可中只使用格式控制符,可中只使用格式控制符,可中只使用格式控制符,可以简化操作。列如:以简化操作。列如:以简化操作。列如:以简化操作。列如: scanf(“%d%d%d”&x,&y,&z); scanf(“%d%d%d”&x,&y,&z); 注意:在注意:在注意:在注意:在scanfscanf的双引号中除了有的双引号中除了有的双引号中除了有的双引号中除了有3 3个个个个%d%d外,没外,没外,没外,没有其他任何字符。按要求如数格式如下:有其他任何字符。按要求如数格式如下:有其他任何字符。按要求如数格式如下:有其他任何字符。按要求如数格式如下: 10 20 30 10 20 30 也可以输入一个数据就使用一个回车符号:也可以输入一个数据就使用一个回车符号:也可以输入一个数据就使用一个回车符号:也可以输入一个数据就使用一个回车符号: 10 10 20 20 30 302222 3)使用)使用scanf时,如果数据输入未能时,如果数据输入未能完成,则程序一直等待键盘输入,此完成,则程序一直等待键盘输入,此时用户应该完成数据输入。许多初学时用户应该完成数据输入。许多初学者在未输入数据的情况下回车,程序者在未输入数据的情况下回车,程序没有任何反映,好象死机了一样。这没有任何反映,好象死机了一样。这样是没有输入数据的缘故,只要用户样是没有输入数据的缘故,只要用户输入数据即可。输入数据即可。2323n n(4)使用)使用scanf给变量赋值和直接使用赋给变量赋值和直接使用赋值语句给变量赋值,都能使变量的值发生值语句给变量赋值,都能使变量的值发生改变,但二者具有本质的区别。使用赋值改变,但二者具有本质的区别。使用赋值语句给变量赋值,是将某一个固定的值在语句给变量赋值,是将某一个固定的值在程序源代码中写死,当源代码编译成可执程序源代码中写死,当源代码编译成可执行程序(即用户软件)后,用户无法改变行程序(即用户软件)后,用户无法改变变量的值,每次执行的结果均相同。而使变量的值,每次执行的结果均相同。而使用用scanf给变量赋值,是在程序运行过程中,给变量赋值,是在程序运行过程中,使用键盘动态的给变量赋值,这样当生成使用键盘动态的给变量赋值,这样当生成可执行程序后,用户可以根据自身的需求,可执行程序后,用户可以根据自身的需求,给变量赋不同的值,得到不同的运行结果。给变量赋不同的值,得到不同的运行结果。2424n n总结总结 scanf函数的注意事项函数的注意事项n n(1)输入数值型数据时,各数值间的分隔)输入数值型数据时,各数值间的分隔符可以是:空格、符可以是:空格、Tab、回车。、回车。n n(2)输入字符型数据时,空格、)输入字符型数据时,空格、Tab、回、回车都会被认为是字符,而不是分隔符。车都会被认为是字符,而不是分隔符。n n(3)“格式输入控制格式输入控制”中的普通字符,在输中的普通字符,在输入数据时一定要原样输入。入数据时一定要原样输入。n n(4)跳过输入数据,在)跳过输入数据,在%和格式字符之间和格式字符之间加一个加一个“*”。2525n n4 4、数据输入实例(已知、数据输入实例(已知、数据输入实例(已知、数据输入实例(已知char c1, c2;char c1, c2; int c, d , int c, d , e;e;)n n(1 1)scanf(%d%d%d ,&c, &d, &e);scanf(%d%d%d ,&c, &d, &e);n n输入:输入:输入:输入:556677n n输入:输入:输入:输入:567567n n输入:输入:输入:输入:556677/以上三种输入方式,以上三种输入方式,以上三种输入方式,以上三种输入方式,c c、d d、e e的值分别都为的值分别都为的值分别都为的值分别都为5 5、6 6、7 7。n n(2 2)scanf(“%d,%d, %d”,&c, &d, &e);scanf(“%d,%d, %d”,&c, &d, &e);n n输入:输入:输入:输入:5,6,75,6,7n n若输入第一个数据后,使用了任意一种分隔符,若输入第一个数据后,使用了任意一种分隔符,若输入第一个数据后,使用了任意一种分隔符,若输入第一个数据后,使用了任意一种分隔符,则只确定输入了则只确定输入了则只确定输入了则只确定输入了c c的值为的值为的值为的值为5 5,d d和和和和e e为本身的初始值,为本身的初始值,为本身的初始值,为本身的初始值,若没有初始值,则为不定值。若没有初始值,则为不定值。若没有初始值,则为不定值。若没有初始值,则为不定值。n n注:在注:在注:在注:在C C语言中,没有指定值的任何类型的变量,语言中,没有指定值的任何类型的变量,语言中,没有指定值的任何类型的变量,语言中,没有指定值的任何类型的变量,在输出时为不定值。在输出时为不定值。在输出时为不定值。在输出时为不定值。2626n n(3 3)scanf(“%d%*d%d%d”,&c,&d,&e);scanf(“%d%*d%d%d”,&c,&d,&e);n n输入:输入:输入:输入:22334455/c/c、d d、e e的值分别为的值分别为的值分别为的值分别为2 2、4 4、5 5n n(4 4)scanf(%c%*c%*c%c,&c1,&c2);scanf(%c%*c%*c%c,&c1,&c2);n n输入:输入:输入:输入:aab4b4/c1/c1、c2c2的值分别为的值分别为的值分别为的值分别为a a、4 4n n(5 5)scanf(%2d%d%d,&c,&d,&e);scanf(%2d%d%d,&c,&d,&e);n n输入:输入:输入:输入:123123456456/ c/ c、d d、e e的值分别为的值分别为的值分别为的值分别为1212、3 3、456456n n(6 6)scanf(%d,&c,&d,&e);scanf(%d,&c,&d,&e);n n输入:输入:输入:输入:112233/ c/ c的值为的值为的值为的值为1 1、d d、e e为不定值为不定值为不定值为不定值27272828
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号