c语言程序设计zhancuili_第1页
c语言程序设计zhancuili_第2页
c语言程序设计zhancuili_第3页
c语言程序设计zhancuili_第4页
c语言程序设计zhancuili_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、顺序结构的程序设计第3章C语言程序设计C语句:以“;”作分隔符,编译后产生机器指令.C语句分类说明语句简单语句表达式语句:表达式加分号构成。空语句: ;函数调用语句复合语句程序控制语句(9种):if( )else switchfor( )while( )dowhile( )continuebreakgotoreturn分支循环辅助控制如 total=total+limit; a=3; func( ); printf(“Hello,world!n”);3.1 C语句概述3.2 数据输入/输出的概念在C语言中的实现3.3 字符数据的输入和输出3.4 格式化输入与输出第3章 顺序结构的程序设计3.1

2、 C语句概述顺序结构程序就是按书写顺序执行的语句构成的程序段。语句1语句21.说明语句 char ch; int i;2.空语句在C语言中,只有一个分号就构成一个语句,称为空语句: ;空语句在语法上占据一个语句的位置,但是它不执行任何功能。常用于条件语句或循环语句的执行部分。3.表达式语句 (1) C 语言中的表达式语句是由一个表达式加上一个分号组成。其格式为: 表达式;例如: x=5 是一个赋值表达式,而其后加一个分号,它就是赋值语句了: x=5; 任何表达式加上分号都是一个语句, 例如: printf(“ABCD”); /*函数调用语句,输出字串ABCD*/i+; /*语句使变量i增加1*

3、/ x+y; /*语句的操作无实际意义*/ 以上都是合法的语句。但是x+y操作的和并没有保存起来,所以这个语句无实际意义。 3.(2)赋值语句 C 语言中的赋值语句是由赋值表达式加上一个分号构成,其格式为: 变量=表达式; 赋值语句的功能是先求赋值运算符右部表达式的值,然后把这个值赋给左部的变量。 (1)赋值语句中的“=”叫做赋值号,是一种带有方向性的操作命令,与数学中的等号“=”具有不同的意义。如等式X=X+1在数学中是不成立的,但在赋值语句中X=X+1是有意义的,它表示把变量X中原来的值与1相加后(新值)送到变量X中去,同时X中原有的值就被新值替换了 。 (2)赋值号左端必须是一个变量,不

4、能是常量或表达式。一行内可写多个赋值语句,各语句末尾必须用分号结束。 如: a=20; b=30; c=40; (3)赋值语句可以改变变量的值。在一个程序中,如果多次给一个变量赋值,变量的值取的是最后一次赋的值。 例如: x=2; x=4; 执行第一语句后,x值为2,执行第二语句后x为4,因此,最后x的值为4。赋值语句说明: 【 例3.1 】 设a单元的值为5,b单元的值为10,试编写一个程序,把两单元的内容互换。程序如下:main() int a=5,b=10,s; s=a;/* 变量a的值送给变量s,暂时存储 */ a=b; /* 变量b的值送给变量a, 此时a与b的值相同 */ b=s;

5、 /* 变量s的值送给变量b,a与b的值交换 */ printf(a=%d,b=%dn,a,b); 运行结果: a=10 b=5 5. 复合语句复合语句:用 括起来的一组语句一般形式: 数据说明部分; 执行语句部分; 说明:“”后不加分号语法上和单一语句相同复合语句可嵌套例:z=x+y;t=z/100;pritnf(“%f”,t);3.2数据输入/输出的概念在C语言中的实现 C 语言本身并不提供输入输出操作的语句,C程序中的输入和输出是用一组库函数来完成的。系统提供的若干函数存储在一个头文件中,需要使用预编译命令“#include”将有关头文件包含到源文件中。使用标准输入/输出库函数时要用到s

6、tdio.h文件。3.3 字符数据的输入和输出 本节介绍最常用的2个标准输入输出函数putchar函数和getchar函数。3.3.1 字符输入函数getchar() getchar() 函数的作用是从键盘上读入一个字符,getchar()函数的一般调用形式: getchar(); 功能:从键盘接收一个字符。 说明: (1)getchar是函数名,函数本身没有参数,其函数值就是从输入设备得到的字符。 (2)等待输入字符的应答是键入一个需要的字符,按回车键,则程序执行下一个语句。 【 例3.5 】 输入一字符B,变量是字符型。 #include stdio.h main() char c; c=

7、getchar(); putchar (c); 运行输入: B /* 输入字符B后,按回车键 */ 运行结果: B /* 输出值 */ 【 例3.6 】 输入一字符B,变量是整型。 #include stdio.h main() int c; c=getchar(); /*从键盘接收一个字符送给整型变量c */ putchar(c); /* 输出整型变量c的值 */ 运行输入: B 运行结果: B 【 例3.7 】 输入一字符B。 #include stdio.hmain() putchar(getchar(); /* 输出从键盘接收一个字符 */ 运行输入: B 运行结果: B 例 从键盘输

8、入大写字母,用小写字母输出#include stdio.hmain() char c1,c2; c1=getchar(); printf(%c,%dn,c1,c1); c2=c1+32; printf(%c,%dn,c2,c2);输入:A 输出:A,65 a,973.3.2 字符输出函数putchar() putchar()函数的作用是把一个字符输出到标准输出设备(通常指显示器或打印机)上,putchar函数的一般调用形式为: putchar(ch); 功能: 向显示器或打印机输出一个字符。 说明: putchar是函数名,ch是函数的参数,该参数可以是一个整型变量或一个字符型变量。ch也可以

9、是整型常量或字符常量。注意,ch也可以是转义字符常量,并且经常用putchar函数来输出一些特殊的控制符,例如,用putchar(n) 输出换行,用putchar(r)输出回车、跳格输出用putchar(t)、退格输出用putchar(b)等等。 【 例3.3 】 输出字符B(变量为字符型),用转义字符输出换行。 #include stdio.h main() char c; c=B; putchar(c); /* 输出字符型变量c的值 */ putchar(n); /* 转义字符常量n输出一个换行 */ putchar(B); /* 输出字符型常量B的值 */ 运行结果: B B 【 例3.

10、4 】 输出字符B(变量为整型) 。#include stdio.hmain() int c; c=66; putchar(c); /*输出字符型变量c的值*/ putchar(t); /*转义字符常量t*/ putchar(66); /* 输出66 ASCII字符 B */ 运行结果: B B 3.4.1 输入函数scanf()格式输入函数格式: scanf(“格式控制串”,地址表)功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中,并按回车键结束返值:正常,返回输入数据个数地址表:变量的地址,常用取地址运算符&格式字符:d,i,o,x,c,s,f,e例 scanf(“%d”,&a

11、); 输入:10 则 a=10例 scanf(“%x”,&a); 输入:11 则 a=173.4格式化输入与输出scanf(格式控制,输入项地址表); 普通字符(原样输入) 格式说明 % m h l * 格式字符最小宽度短整型不赋值长整型d符十整o无八整x无16整c字符s字串f小六e指六附加格式说明符(修饰符)l修饰符功 能hm*用于d,o,x前,指定输入为short型整数用于d,o,x前,指定输入为long型整数用于e,f前,指定输入为double型实数指定输入数据宽度,遇空格或不可转换字符则结束抑制符,指定输入项读入后不赋给变量例 scanf(“%4d%2d%2d”,&yy,&mm,&dd

12、); 输入 19991015 则1999yy, 10 mm, 15 dd例 scanf(“%3d%*4d%f”,&k,&f); 输入 12345678765.43 则123k, 8765.43f例 scanf(“%2d%*3d%2d”,&a,&b); 输入 1234567 则12a, 67b例 scanf(“%3c%2c”,&c1,&c2); 输入 abcde 则ac1, d c2输入分隔符的指定一般以空格、TAB或回车键作为分隔符其它字符做分隔符:格式串中两个格式符间字符例 scanf(“%d%o%x”,&a,&b,&c); printf(“a=%d,b=%d,c=%dn”,a,b,c);

13、输入 123 123 123 输出 a=123,b=83,c=291例 scanf(“%d:%d:%d”,&h,&m,&s); 输入 12:30:45 则12 h, 30 m, 45 s例 scanf(“%d,%d”,&a,&b) 输入 3,4 则3a, 4 b例 scanf(“a=%d,b=%d,c=%d”,&a,&b,&c); 输入 a=12,b=24,c=36 说明:用“%c”格式符时,空格和转义字符作为有效字符输入如 scanf(“%c%c%c”,&c1,&c2,&c3); 若输入abc 则ac1, c2, b c3输入数据时,遇以下情况认为该数据结束:遇空格、TAB、或回车遇宽度结束

14、遇非法输入如 scanf(“%d%c%f”,&a,&b,&c); 若输入1234a123o.26 则 1234 a, a b, 123 c/*ch3_14.c*/#include #include main() float a,b,c,disc,x1,x2,p,q; scanf(a=%f,b=%f,c=%f,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf(nnx1=%5.2fnx2=%5.2fn,x1,x2);输入:a=1,b=3,c=2 输出:x1=-1.00 x2=-2.00

15、3.4.2格式输出函数printf()格式:printf(“格式控制串”,输出表)功能:按指定格式向显示器输出具有一定格式的任意数据返回值:正常,返回输出字节数;出错,返回EOF(-1)输出表:要输出的数据(可以没有,多个时以“,”分隔)格式控制串:包含两种信息格式说明:%修饰符格式字符,用于指定输出格式普通字符或转义序列:原样输出printf(格式控制,输出项表); 普通字符(原样输出) 格式说明 % +/- 0 m.n l 格式字符输出有符号数的正号左对齐最小宽度左补0小数位数长整型d符十整o无八整x无16整c字符s字串f小六e指六d,ix,Xoucse,Efg%格式字符:十六进制无符号整

16、数不带符号十进制整数十进制整数指数形式浮点小数单一字符字符串八进制无符号整数小数形式浮点小数e和f中较短一种百分号本身int a=567;printf ( “%d”,a);int a=255;printf(“%x”,a);int a=65;printf(“%o”,a);int a=567;printf(“%u”,a);char a=65;printf(“%c”,a);printf(“%s”,“ABC”);float a=567.789;printf(“%e”,a);float a=567.789;printf(“%f”,a);float a=567.789;printf(“%g”,a);pri

17、ntf(“%”);567ff101567AABC5.677890e+02567.789000567.789%说明格式字符要用小写格式字符与输出项个数应相同,按先后顺序一一对应输出转换:格式字符与输出项类型不一致,自动按指定格式输出例 int a=3,b=4; printf(“%d %dn”,a,b); printf(“a=%d , b=%dn”,a,b); 例 int a=3,b=4; printf(“%d %dn”,a,b); printf(“a=%d , b=%dn”,a,b);输出结果: 3 4 a=3, b=4附加格式说明符(修饰符).n对实数,指定小数点后位数(四舍五入)对字符串,指

18、定实际输出位数修饰符功 能m输出数据域宽,数据长度m,左补空格;否则按实际输出输出数据在域内左对齐(缺省右对齐)-指定在有符号数的正数前显示正号(+)+输出数值时指定左面不使用的空位置自动填00在八进制和十六进制数前显示前导0,0 x#在d,o,x,u前,指定输出精度为long型在e,f,g前,指定输出精度为double型l例 int a=1234; float f=123.456; char ch=a; printf(“%8d,%2dn”,a,a); printf(“%f,%8f,%8.1f,%.2f,%.2en”,f,f,f,f,f); printf(“%3cn”,ch);运行 1234,

19、1234结果: 123.456000,123.456000, 123.5,123.46,1.23e+02 a例 static char a=“Hello,world!” printf(“%sn%15sn%10.5sn%2.5sn%.3sn”,a,a,a,a,a);运行结果:Hello,world! Hello,world! Hello Hello Hel 例 m.n例 int a=1234; float f=123.456; static char c=“Hello,world!”; printf(“%8d,%-8dn”,a,a); printf(“%10.2f,%-10.1fn”,f,f);

20、 printf(“%10.5s,%-10.3sn”,c,c);运行结果:1234,1234 123.46,123.5 Hello,Hel例 -例输出格式举例。 main() char c=a; char str=“see you”; int i=1234; float x=123.456789; float y=1.2; printf (“1: %c,%s,%d,%f,%e,%fn”,c,str,i,x,x,y); printf (“2: %4c,%10s,%6d,%12f,%15e,%10fn”,c,str,i,x,x,y); printf(“3:%-4c,%-10s,%-6d,%-12f,

21、%-15e,%10fn”,c,str,i,x,x,y); printf (“4: %0c,%6s,%3d,%9f,%10e,%2fn”,c,str,i,x,x,y); printf (“5: %12.2fn”,x); printf (“6: %.2fn”,x); printf (“7: %10.4fn”,y); printf (“8: %8.3s,%8.0sn”,str,str); printf (“9: %dn”,i); 运行结果: 1: a,see you,1234,123.456787,1.234568e+002,1.200000 2: a,see you,1234,123.456787

22、,1.234568e+002,1.200000 3: a,see you,1234,123.456787,1.234568e+002,1.200000 4: a,see you,1234,123.456787,1.234568e+002,1.200000 5: 123.46 6: 123.46 7: 1.2000 8: see, 9: %d: 1234 小结1.在scanf()函数调用中,要求输入项必须是地址值,即在每个普通变量前面必须加上求地址运算符&,用户往往忘记这一规则而写成: scanf(%d,i)(假设i是一个int类型变量)。对此,系统并不报错,因此必然导致输入错误,使变量i不能得

23、到正确的输入数据。 2.如果x是long类型变量,用户往往忽略使用%ld格式描述而使用scanf(%d,&x);语句输入123456给x变量,这时x将不能正确接收数据,系统也不报错,而是给x赋一个随机值。此时若用x参与运算,程序必然将产生一个错误的结果。对于双精度变量若使用%f而不使用%lf格式描述,也将产生相似的情况。3.对于一些初学者来说,往往容易在scanf()函数调用的格式控制字符串中加入一些与输入无关的字符,如写成scanf(i=%d,&i);对这样的格式控制字符串,C语言要求在输入时首先打入i=,然后才能接收数据,一些用户往往不了解这些规则,因而造成不能正确输入。4.在调用prin

24、tf()函数输出long整型变量的值时要求使用%ld格式描述,若因为疏忽而漏写字母l只用了%d,虽然也能执行输出,但却不是变量中的真实数据。5.一些C语言编译系统,在printf()函数调用中要求格式描述字符必须用小写字母,否则就不能正确输出。6.应该注意,输入字符时,字符之间设有分隔符,空格、回车都将作为字符而被读入。Company LogoTop:赋值表达式与赋值语句真题分析(2004年4月)若以下选项中的变量已经正确定义,则正确的赋值语句是A、x1=26.8%3;B、1+2=x2;C、x3=0 x12;D、x4=1+2=3;CCompany LogoTop 数据输入真题分析(2005年4月)下列程序运行时若从键盘输入:10 20 30。输出结果是#include main( ) int i=0, j=0, k=0;scanf(%d%*d%d,&i,&j,&k); printf(%d%d%dn,i,j,k);10 30 0Top 数据输入真题分析(2011年9月)若有定义:int a,b;,通过语句scanf(“%d;%d”,&a,&b);,能把整数3赋给a,5赋给b的输入数据是_。(选择题16题)A)3 5 B)3,5 C)3;5 D)35Com

温馨提示

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

评论

0/150

提交评论