C语言基础知识顺序_第1页
C语言基础知识顺序_第2页
C语言基础知识顺序_第3页
C语言基础知识顺序_第4页
C语言基础知识顺序_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、专题之二 顺 序 结 构2.1 字符型常量与变量 2.2 putchar函数与getchar函数 2.3 printf函数 2.4 scanf函数 2.5 位运算的含义 本节内容学习目标与要求本章笔试题所占分值在12分左右。上机考试中对putchar、getchar、printf、scanf函数的用法考核率比较高,应重点掌握printf函数的用法。 C语句概述c语言的语句用来向计算机系统发出操作指令。一个语句经编译后产生若干条机器指令。一个实际的程序应当包含若干语句。应当指出,c语句都是用来完成一定操作任务的。声明部分的内容不应称为语句。如:int a;不是一个c语句,它不产生机器操作,而只是

2、对变量的定义。从第1章已知,一个函数包含声明部分和执行部分,执行部分即由语句组成。程序应该包括数据描述(由声明部分来实现)和数据操作(由语句来实现)。数据描述主要定义数据结构(用数据类型表示)和数据初值。数据操作的任务是对已提供的数据进行加工。C语句分为5类(1) 控制语句。它完成一定的控制功能。c只有9种控制语句,它们是: if()else(条件语句) for() (循环语句) hile() (循环语句) dohile() (循环语句) continue (结束本次循环语句) break (中止执行switch或循环语句) sitch (多分支选择语句) goto (转向语句) return

3、 (从函数返回语句)C语句分为5类(2) 函数调用语句。由一次函数调用加一个分号构成一个语句,例如:printf(this is a c stateent);(3) 表达式语句。由一个表达式构成一个语句,最典型的是,由赋值表达式构成一个赋值语句。a=3 是一个赋值表达式, 而a=3;是一个赋值语句。(4) 空语句。下面是一个空语句: while(i+b)t=a;a=b;b=t;C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。printf和scanf不是C语言的关键字,而只是函数的名字。实际上c语言函数库中有 ,它是以标准的输入输出设备(一般为终端设备)为输入输出对象的。其中有:p

4、utchar(输出字符),getchar(输入字符),printf(格式输出),scanf(格式输入), puts(输出字符串),gets(输入字符串)。在使用c语言库函数时,要用预编译命令include将有关的头文件 包括到用户源文件中。在调用标准输入输出库函数时,文件开头应有以下预编译命令: #include 或 #include stdio.h数据类型说明符 char例如, char a10, str, c; 一个字符变量能存储一个字节的信息,每个字符有固定的编码,最常用的就是ASCII 编码。 标准ASCII编码是把每个字符和与0127的数值联系起来,用7位二进制表示,再将最高位充0,

5、就是一个字节了。 例如,在ASCII编码表中,A用数值65表示,其8位二进制表示是: 01000001 字符变量考点1 字符型常量与变量 字符常量 C语言中的字符常量是用单引号将一个字符括起来。例如a、b。可以用字符常量为字符变量赋值: char alpha=a; char beta=b;注意: (1)引号中的字符只能是一个字符。 (2)不能用双引号括起一个字符表示单个字符常量。 (3)非图形字符,如退格,换行等,也可以表示成字符型常量。表示方法是使用转义符与一些特殊字符构成转义序列。例如n就是一个转义序列,表示回车换行。 (4)字符型数据可以像整型数据一样参与四则运算。 b- a=1相当于

6、98-97=1常用的转义字符常量转义字符转义字符的意义ASCII代码n回车换行10t横向跳到下一制表位置9b退格(光标退后一格)8r回车13f走纸换页12反斜线符92单引号符39 双引号符34a鸣铃7ddd13位八进制数所代表的字符xhh12位十六进制数所代表的字符 0空值0历年真题真题6:已知大写字母A的ASCII码是65,小写字母a的ASCII码是97.下列不能将变量c中的大写字母转变为对应小写字母的语句是()。【2007.4】 A)c=(c-A)%26+a B)c=c+32 C)c=c-A+a D)c=(A+c)%26-a 真题7:下列程序的输出结果是 。【2007.4】#include

7、 #include main( )char a=1,2,3,4,0;printf(%d,%dn,sizeof(a),strlen(a);5, 4sizeof与strlen的区别#include #include main()char a7=a00a00;int i,j;i=sizeof(a);j=strlen(a);printf(i=%d,j=%dn,i,j);i=7, j=2真题8:已知字符A的ASCII码值是65,字符变量cl的值是A,c2的值是D。执行语句printf(%d,%d,cl,c2-2);后,输出结果是( )。【2007.9】A)A,B B)A,68C)65,66 D)65,6

8、8真题9:下列正确的字符串常量是( )。【2007.9】A) B)abcC)Olympic Games D) getchar()函数的用法getchar()是接收一个从标准输入输出设备上输入的字符。一般的标准输入设备是键盘。该函数没有参数,函数返回的数据类型为整型,值为字符的ASCII码值。 考点2 putchar函数与getchar函数例#include stdio.hvoid main() int c; c= getchar(); printf(%c,c);putchar()函数的用法putchar()是向标准输入输出设备上输出一个字符,一般的标准输出设备是屏幕终端。putchar()与g

9、etchar()不同,输出字符做为函数的参数,放在括号里。所以括号里的内容是不能缺省的。putchar()函数返回的数据类型为整型,值为字符的ASCII码值。若想输出字符a,可以用几种方式? int c ; c=a; putchar( c);以及 putchar(a); 和 putchar(97);对于不可打印的字符,输出方式有两种: putchar(007) ; 和 putchar(007);例 输入一个字符,按字符原封不动输出。 #include stdio.h void main() int c,i; c=getchar(); i=putchar(c); 或者 #include stdi

10、o.h void main() putchar(getchar() */ 历年真题真题1:要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,下列正确的程序段是( )。【2006.4】A)while(ch=getchar()!=N)printf(%c,ch);B)while(ch=getchar()!=N)printf(%c,ch);C)while(ch=getchar()= =N)printf(%c,ch);D)while(ch=getchar()= =N)printf(%c,ch);真题2:有下列程序:【2006.4】#include main( ) char c

11、1,c2,c3,c4,c5,c6;scanf(%c%c%c%c,&c1,&c2,&c3,&c4);c5=getchar( ); c6=getchar( );putchar(c1);putchar(c2);printf(%c%cn,c5,c6);程序运行后,若从键盘输入(从第1列开始)12345678则输出结果是( )。A)1267 B)1256C)1278 D)1245真题3:当执行下列程序时,输入1234567890,则其中while循环体将执行 次。【2007.4】#includemain( ) char ch;while(ch=getchar( )=0)printf(#);若输入字符串:

12、abcde,则以下while循环体将执行 次。ch=getchar( );while(ch= =e) printf(*);A) 5 B) 4 C) 1 D) 00格式输出函数printf(格式控制字符串, 输出项表列);输出若干个任意类型的数据printf(a=%d b=%f, a, b); 函数名输出表列普通字符格式说明 3 格式输出1. 标志:标志字符为-、+、#、空格四种,其意义如下所示: 标志 意义 -结果左对齐,右边填空格 +输出符号(正号或负号) 空格输出值为正时冠以空格,为负时冠以负号 #对c,s,d,i,u类无影响;对o类,在输出时加前缀0;对x类,在输出时加前缀0 x;对e,

13、g,f 类,确保出现小数点,即使无小数位时亦如此 例:#include main() int a=100; float b=123.255; printf(a=%d ,a); printf(a=%10d ,a); printf(a=%-10d ,a); printf(a=%+d ,a); printf(a=% d ,a); printf(a=%#o ,a); printf(a=%#x ,a); printf(b=%#f ,b); / a=100 /a= 100/ a=100 /a=+100/a= 100/a=0144/a=0 x64/b=123.2549972.输出最小宽度:用十进制整数来表示

14、输出的最少位数。(至少要输出这么多位!) 若实际位数多于定义的宽度:则按实际位数输出。 若实际位数少于定义的宽度:则右对齐,左边留空。 有负号,左对齐,右边留空 表示宽度的数字以0开始,则右对齐,左边留空。 Turbo C2.0提供的格式字符如下: 符号 作用 %c 单个字符 %d 十进制有符号整数 %e 以科学记数法的形式输出十进制的浮点数 如2.451e+02 %f 输出十进制浮点数,不带域宽时,保留6位小数 %g 选用e或f格式中较短的一个输出十进制浮点数,不输出无效零 %o 无输出无符号八进制整数(不输出前缀0) %p 指针的值 %s 输出字符串 %u 输出无符号十进制整数 %x, %

15、X 输出无符号十六进制整数 (不输出前缀0 x) 一、一般形式 scanf (格式控制,地址表列) 格式控制的含义同printf函数; 地址表列是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。格式输入函数scanf(格式控制字符串, 地址表列); scanf(%d,%f, &a,&b);格式说明地址表列考点4 scanf函数(格式输入函数)二、格式: scanf(格式控制字符串,地址表列) 其中:格式控制字符串的作用与printf()函数相同。 不能显示提示信息 地址表列中要给出各变量的地址。地址是由地址运算符&加上变量名组成的 注意区分变量的值和变量的地址这两个不同的概念不能用

16、scanf( )在屏幕上显示提示信息。三、使用scanf( )函数需注意 :(1)scanf( )函数中没有精度控制。 如:scanf(%4.2f,&a);是非法的 (2)scanf()函数中一定给出变量地址,不可是变量名,否则出错。 如: scanf(%d,a); 错 scanf(%d,&a); 对(3)输入多个数据时,格式控制串中没有非格式字符,则输入时数据间的分隔符可用空格、TAB键、回车键。(4)输入字符数据时,若格式控制符中无非格式符,则认为所有输入的字符均为有效字符。 scanf(%c%c%c,&a,&b,&c); printf(a=%c,b=%c,c=%c,a,b,c); 输入:

17、A,B,C 输出:a=A, b=, ,c=B (5)如果格式控制字符串中有非格式字符,则输入时也要输入非格式字符。 scanf(%d,%d,%d,&a,&b,&c); 输入应为:5,6,7若为:scanf(a=%d,b=%d,c=%d,&a,&b,&c); 输入应为:a=5,b=6,c=7(6)输入、输出格式符不相符,则输出数据错误 输入数据时,遇以下情况时该数据认为结束遇空格、回车、TAB 键遇宽度限制: %3d遇非法输入格式输入函数#include main() int a, b; printf(Please input a and b:); scanf(%2d%*2d%2d, &a, &

18、b); printf(a=%d, b=%d, +b=%dn,a,b,a+b);Please input a and b:a=12, b=56, a+b = 68123456例24* 表示本输入项在读入后不赋给相应变量#include main() int a, b; printf(Please input a and b:); scanf(%2d%*2d%2d, &a, &b); printf(a=%d, b=%d,a+b=%dn,a,b,a+b);Please input a and b:a=12, b=5, a+b = 1712345a例25#include main() int a, b

19、;scanf(%d %d, &a, &b);printf(a = %d, b = %dn, a, b);问题1:当要求程序输出结果为 a = 12, b = 34时,用户应该如何输入数据? 12 34输入数据的格式控制例25#include main() int a, b;scanf(%d %d, &a, &b);printf(a = %d, b = %dn, a, b);问题2:当限定用户输入数据以逗号为分隔符,即输入数据格式为: 12, 34时,应修改程序中的哪条语句?怎样修改? scanf(%d,%d, &a, &b); 输入数据的格式控制例25#include main() int a

20、, b;scanf(%d %d, &a, &b);printf(a = %d, b = %dn, a, b);问题3:语句scanf(%d %d, &a, &b);修改为scanf(a = %d, b = %d, &a, &b);时,用户应该如何输入数据?a = 12, b = 34输入数据的格式控制例25#include main() int a, b;scanf(%d %d, &a, &b);printf(a = %d, b = %dn, a, b); 问题4:限定用户输入数据为以下格式为 1234 同时要求程序输出结果为a = 12, b = 34scanf(%2d%2d, &a, &b

21、); 输入数据的格式控制例25#include main() int a, b;scanf(%d %d, &a, &b);printf(a = %d, b = %dn, a, b); 问题5:限定用户输入数据为以下格式为1234 同时要求程序输出结果为a = 12, b = 34scanf(%d%d, &a, &b);printf(a = %d, b = %dn, a, b);输入数据的格式控制例25#include main() int a, b;scanf(%d %d, &a, &b);printf(a = %d, b = %dn, a, b);问题6:设计程序使得用户可以以任意字符(回车

22、、空格、制表符、逗号、其它)作为分隔符进行数据的输入scanf(%d%*c%d, &a, &b); 输入数据的格式控制例25例题1 有以下程序: #include main() int y=1111; printf(y=%6dn,y); printf(y=%+06dn,y); 程序的运行结果为:例题2 有以下程序:#includemain()int y=456;printf(*y=%7o*n,y);printf(*y=%-7o*n,y);printf(*y=%07o*n,y);程序的运行结果为: *y= 710* *y=710 * *y=0000710*例题3 有以下程序: main() in

23、t y=3.667; printf(*y=%f*n,y); printf(*y=%7.2f*n,y); printf(*y=%8.0f*n,y); 程序的运行结果为: *y=3.667000* *y= 3.67* *y= 4*例题4 有以下程序: main() int x,y; x=11/3;y=5; printf(%d,%dn,x, y);程序的运行结果为: %d,%3C语言规定,在格式控制字符串中若连续出现两个,系统视为一个字符输出。例题5 有以下程序: main() int y; y=26; printf(%d,%#o,%#xn,y,y, y);程序的运行结果为: 26,032,0 x1

24、a若按o和x输出的数据,数据前面没有0和0 x标志,可以用引导,具体用法是在和o 或x之间插入一个历年真题(printf)真题2:有以下程序段( )。【2008.4】char ch;int k;ch=a; k=12;printf( %c,%d, ,ch,ch,k);Printf( k=%dn,k);已知字符a的ASCII十进制代码为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12D)a,97,k=12真题3:若有定义:int k;,以下程序段的输出结果是 。【2008.4】for(k=

25、2;kb)a=b,b=c;c=a;printf(a=%d b=%d c=%dn,a,b,c);程序的输出结果是A)a=10 b=50 c=10 B)a=10 b=50 c=30C)a=10 b=30 c=10 D)a=50 b=30 c=50真题5:【2008.9】若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值:a=7b=9请完成输出语句:printf( ,a,b); 。a=%dnb=%dn历年真题(scanf)真题4:设变量均已正确定义,若要通过scanf(%d%c%d%c,&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y

26、。下面的输入形式中正确的是( )(注:口代表空格字符)。【2007.4】A)10X20YB)10X20YC)10X 20YD)10X 20Y真题5:若在定义语句int a,b,c,*p=&c;之后,接着执行下列选项中的语句,则能正确执行的语句是( )。【2007.9】A)scanf(%d,a,b,c); B)scanf(%d%d%d,a,b,c);C)scanf(%d,p); D)scanf(%d,&p);真题6:有下列程序段:【2007.9】int j;float y;char name50;scanf(%2d%f%s,&j,&y,name);当执行上述程序段,从键盘上输入55566 777

27、7abc后,y的值为( )。A)55566.0 B)566.0C)7777.0 D)5667777.0真题7:执行下列程序时,输入1234567,则输出是 。【2007.9】#include main( )int a=1,b;scanf(%2d%2d,&a,&b);printf(%d%dn,a,b);1234真题8:若变量已正确定义为int型,要通过语句scanf(%d,%d,%d,&a,&b,&c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(u代表一个空格符)。【2008.9】A)uuu1,2,3 B)1u2u3C)1,uuu2,uuu3 D)1,2,3 考点5 位运算 1

28、、位运算符的含义位运算就是对数的二进制位进行的运算。6种位运算符的含义见下表。运算符含义优先级接位求反1(高)右移2&按位与3按位异或4|按位或5(低)【说明】位运算符中除以外,均为二元运算符,即要求两侧各有一个运算量。运算量只能是整型或字符型的数据,不能为实型数据。 位运算 基本的位运算1.按位与运算按位与运算实现两个数据对应二进制位的与操作,二进制位与操作的规则如下: 0&0=0,0&1=0,1&0=0,1&1=1 2.按位或运算按位或运算实现两个数据对应二进制位的或操作,二进制位或操作的规则如下: 0|0=0,0|1=1,1|0=1,1|1=1 基本的位运算3.按位异或运算按位异或运算实现两个数据对应二进制位的异或操作,二进制位异或操作的规则如下: 00=0,01=1,10=1,11=04.按位取反运算按位取反运算是单目运算,其功能是对参与运算的数的各二进位按位求反,将二进制位0变为1,将二进制位1变为0。5.左移位运算 左移位运算实现一个数据对应二进制数的向左移

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论