




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序的基本语句
数据的输入输出
第四讲Begin:第三章基本语句与顺序结构程序设计
3.1C语言程序的基本语句3.1C语言程序的基本语句
C语言语句分为五类:表达式语句、函数调用语句、控制语句、复合语句、空语句。1.表达式语句由一个表达式组成一个语句。
如:++p;/*自增运算表达式加分号构成语句*/N+=10;/*复合赋值表达式加分号构成语句*/a+b;/*a+b表达式加分号构成语句*/2.函数调用语句由一次函数调用加上分号“;”组成。形式:函数名(实参列表);如:printf(“VeryGood!\n”);/*输出VeryGood!*/max(x,y,z);/*调用自定义函数max,求x,y,z中的最大数*/4.复合语句:用{}括起来组成的一个语句
如:if(a>b)
{x=0;b=b+1;x=a;}5.空语句:仅由一个分号构成的语句3.控制语句:控制程序的流程
如:if…else语句,while语句,return语句等。
如:while(getchar()!='\n')
;
/*空语句*/3.1C语言程序的基本语句功能:通过标准输出设备(如显示器)输出一组数据。
输出形式由“格式控制”字符串规定。3.3.1
格式输出:printf()函数和scanf()函数一般形式:
printf(“格式控制字符串”,输出表列);3.3数据输入输出
printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。1.printf()函数格式控制:由双引号括起来的字符串,用于指定要输出的数据的格式。2)格式说明:用来指定需输出数据的输出格式的,其形式为:
%[<修饰符>]格式字符格式字符用以说明输出数据的类型,形式,长度,小数位数等。它包括:
1)普通字符:按原样输出的字符;
输出表列:需要输出的数据列表,彼此间用逗号分隔。它可是任意合法的表达式。要求格式字符串和各输出项在数量和类型上应该一一对应。
3.3.1格式输出:printf()函数和scanf()函数用于输出的修饰符3.3.1格式输出:printf()函数和scanf()函数用于输出的格式字符格式符功
能形
式d输出十进制整数%d、%md、%ld、%mldo以八进制形式输出整数%o、%mo、%lox以十六进制形式输出整数%x、%mx、%lxu以十进制形式输出一个无符号的数%uc输出一个字符%cs输出一个字符串%s、%ms、%m.nsf以小数的形式输出实数%f、%m.nf、%lfe以标准指数的形式输出实数%e、%m.neg根据实数的大小自动按f或e的形式选择输出格式%g3.3.1格式输出:printf()函数和scanf()函数例:格式输出:printf()函数printf("a+b=%5.2f",c);附加格式符格式符输出表列普通字符格式说明符格式控制3.3.1格式输出:printf()函数和scanf()函数(1)d格式字符%d:按整型数据的实际长度输出%md:m为指定的输出长度。如果数据位小于m,则左端补以空格;大于m,则按实际位输出。例:printf(“%4d,%4d”,a,b);
若a=12,b=12345,则输出
12,12345%ld:输出长整型数据。%d的输出范围为-32768~32767,输出超过该范围的整型数就会出错,此时用%ld输出。其输出格式和功能与%d相同,如:%8ld3.3.1格式输出:printf()函数和scanf()函数(2)o格式字符以八进制数形式输出整数,且不带符号。对于长整数可用“%lo”输出。功能同十进制输出。(3)x格式字符以十六进制数形式输出整数,且不带符号。对于长整数可用“%lx”输出。功能同十进制输出。(4)u格式字符用来输出unsigned型数据,即无符号数,输出十进制数。用%o,%x输出负数时会发生错误。3.3.1格式输出:printf()函数和scanf()函数(5)c格式字符一个整数,如果在0~255之间,也可用字符形式输出,系统会将该整数转换成相对应的ASCII码字符;同时,一字符也可以用整数形式输出。例:charc=‘a’;printf(“%c”,c);用来输出一个字符。inta=65;printf(“%c”,a);intc=‘A’;printf(“%d”,c);输出A输出65如:printf(“%3c”,c),则输出c格式字符也可以指定输出字数宽度
A3.3.1格式输出:printf()函数和scanf()函数(6)s格式字符%s:用来输出一个字符串例:printf(“%s”,“Hello!”);输出Hello!,不包括“”%ms:输出的字符串占m列。如果字符串长度小于m,则左端补以空格;长度大于m,则输出整个字符串。%-ms:如果串长小于m,则字符串向左靠,右补空格,其余同上。%m.ns:输出的字符串占m列,但只取字符串中左端n个字符,这n个字符输出在m列的右侧,左端补空格。%-m.ns:其他意义同%m.ns,右补空格。3.3.1格式输出:printf()函数和scanf()函数例:printf(“%30s”,“Hello!”);输出Hello!
printf(“%7s”,“Hello!”);输出Hello!(7)f格式字符%f:不指定字段宽度,整数部分全部输出,小数部分输出6位。%m.nf:指定输出数据占m列,其中有n位小数。若数值长度小于m,则左端补以空格。%-m.nf:功能同上,右端补以空格。(8)e格式字符%e:不指定字段宽度,系统自动给出6位小数,指数部分占4位。其中“e”占1位,指数符号占1位,指数占2位。3.3.1格式输出:printf()函数和scanf()函数例:printf(“%e”,123.456);输出:1.234560e+026位小数部分4位指数部分%m.ne,%-m.ne,%me
:中m,-的意义和前相同,n是指数据的小数部分输出的位数。(9)g格式字符用来输出实数,根据数值大小,自动选f或e格式,且不输出无意义的零。3.3.1格式输出:printf()函数和scanf()函数#include<stdio.h>voidmain(){inta=1234;floatf1=12.34567,f2=678.9;printf("1)%d,%6d,%-6d,%2d;\n",a,a,a,a);printf("2)%f,%10.4f,%3.2f;\n",f1,f1,f1);printf("3)%e,%e;\n",f1,f2);printf("4)%8e,%14e;\n",f1,f1);printf("5)%10.7e,%10.3e;\n",f1,f1);}实例:程序运行结果:1)1234,1234,1234,1234;2)12.345670,12.3457,12.35;3)1.234567e+01,6.78900e+02;4)1.234567e+01,1.234567e+01;5)1.2345670e+01,1.235e+01;
printf使用时的注意事项(1)格式控制字符串可以不包含任何格式控制符。(2)当格式控制字符串中既含有普通字符,又包含有格式控制符时,则表达式的个数应与格式控制符的个数一致。此时,常规字符原样输出,而格式控制符的位置上输出对应的表达式的值,其对应的顺序是:从左到右的格式控制符对应从左到右的表达式。(3)
如果格式控制字符串中格式控制符的个数多于表达式的个数,则余下的格式控制符的值将是不确定的。(4)不同类型的表达式要使用不同的格式转换符,同一表达式如果按照不同的格式转换符来输出,其结果可能是不一样的。
printf(“howareyou?\n”);//只有一个字符串参数,输出为:howareyou?printf(“howoldareyou?\n”,20);//带有两个参数,20没有意义,输出为:howoldareyou?已知:
inta=2;函数调用:
printf("a*a=%d,a+5=%d\n",a*a,a+5);实际输出:
a*a=4,a+5=7
printf("5+3=%d,5-3=%d,5*3=%d",5+3,5-3);
输出结果将是:5+3=8,5–3=2,5*3=-28710输出随机charch='A';printf("ch=%c",ch);//输出结果:ch=A
(以字符形式输出)printf("ch=%d",ch);//输出结果:ch=65
(以'A'字符的ASCII码形式输出)2、格式输入:scanf()函数功能:从终端输入任何类型的多个数据
格式:scanf("格式控制",地址表列);格式控制:由双引号括起来的字符串,用于指定要输入的数据的格式。1)普通字符:按原样输入的字符;
2)格式说明:用来指定需输入数据的输入格式的,其形式为:
%[<修饰符>]格式字符3.3.1格式输出:printf()函数和scanf()函数地址表列:由若干个变量地址组成的表列。地址是由”&”运算得到的。“&”是取址运算符,单目运算符,右结合性。例:&a,&chr,&i,分别表示变量a,chr,i的地址,该地址是在编译连接时系统分配给变量a,chr,i的地址。3.3.1格式输出:printf()函数和scanf()函数用于输入的修饰符用于输入的格式字符3.3.1格式输出:printf()函数和scanf()函数格式输入的使用与注意:输入数据时采用的分隔符应与格式控制中的分隔符一致。例1:
scanf("%d%f%d",&a,&b,&c);
格式符中无普通字符时,可用空格、Tab键、回车键作分隔符。如:123.45678↙或12(Tab)3.45(Tab)678例2:
scanf("%d,%f,%d",&a,&b,&c);
必须采用格式:12,3.45,678↙例3:
scanf("a=%d,b=%d",&a,&b);
必须采用格式:a=12,b=345↙3.3.1格式输出:printf()函数和scanf()函数无符号数可用%d、%o、%x
格式输入。输入格式符带有*:表示该数据不赋值。
例:scanf("%d%*d%d",&a,&c);
键入:1234567
则a=12,c=567,34未赋值。数据输入时不可规定精度,但可确定宽度。
例:scanf(”%3f%3c”,&a,&b);
合法。
例:scanf(”%3.2f%3c”,&a,&b);
非法。3.3.1格式输出:printf()函数和scanf()函数用c格式符输入字符时,空格、转义字符均为有效字符。
例
scanf("%c%c%c",&a,&b,&c);
若键入ABC
则a=A,b=B,c=C
若键入ABC
则a=A,b=,c=B
若键入AB
则C未送,结果已出为:a=A,b=
,c=B3.3.1格式输出:printf()函数和scanf()函数在下列情况下可认为数据输入结束:遇空格、回车、跳格键(Tab)时;遇宽度结束;非法输入。3.3.1格式输出:printf()函数和scanf()函数在格式控制字符串中可包含转义字符。
例:1)printf(“1)%s\n”,“VeryGood!”);
2)printf(“2)\“%s\”\n”,“VeryGood!”);
输出结果:VeryGood!“VeryGood!”使用scanf函数注意事项
(总结)
(1)如果相邻两个格式控制符之间,不指定数据分隔符(如逗号、冒号等),则相应的两个输入数据之间,至少用一个空格分隔,或者用Tab键分隔,或者输入一个数据后,按回车,然后再输入下一个数据。
(2)格式控制字符串中出现的常规字符(包括转义字符),务必原样输入。
(3)为改善人机交互性,同时简化输入操作,在设计输入操作时,一般先用printf()函数输出一个提示信息,再用scanf()函数进行数据输入。
(4)当格式控制字符串中指定了输入数据的域宽width时,将读取输入数据中相应的width位,但按需要的位数赋给相应的变量,多余部分被舍弃。例如:
scanf("%d%d",&num1,&num2);
假设给num1输入12,给num2输入36,则正确的输入操作为:
12□36↙
或者
12↙36↙
使用“↙”符号表示按回车键操作,在输入数据操作中的作用是,通知系统输入操作结束。例如:
scanf("%d:%d:%d",&h,&m,&s);
假设给h输入12,给m输入30,给s输入10,正确的输入操作为:
12:30:10↙
例如:
scanf("num1=%d,num2=%d\n",&num1,&num2);
假设给num1输入12,给num2输入36,正确的输入操作为:
num1=12,num2=36\n↙例如:将scanf("num1=%d,num2=%d\n",&num1,&num2);改为:
printf("num1=");scanf("%d",&num1);
printf("num2=");scanf("%d",&num2);例如:
scanf("%3c%3c",&ch1,&ch2);
假设输入abcdefg↙,则系统将读取的“abc”中的'a'赋给变量ch1;将读取的"def"中的'd'赋给变量ch2。使用scanf函数注意事项(总结)
(5)当格式控制字符串中含有抑制符‘*’时,表示本输入项对应的数据读入后,不赋给相应的变量(该变量由下一个格式指示符输入)。
(6)使用格式控制符%c输入单个字符时,空格和转义字符均作为有效字符被输入。
(7)输入数据时,遇到以下情况,系统认为该数据结束:
遇到空格,或者回车键,或者Tab键。
遇到输入域宽度结束。例如“%3d”,只取3列。
遇到非法输入。比方说,在输入数值数据时,遇到字母等非数值符号。
(8)当一次scanf调用需要输入多个数据项时,如果前面数据的输入遇到非法字符,并且输入的非法字符不是格式控制字符串中的常规字符,那么,这种非法输入将影响后面数据的输入,导致数据输入失败。例如:
scanf("%2d%*2d%3d",&num1,&num2);
printf("num1=%d,num2=%d\n",num1,num2);
假设输入123456789↙
输出结果为:num1=12,num2=567。
例如:
scanf("%c%c%c",&ch1,&ch2,&ch3);
假设输入:A□B□C↙,则系统将字母'A'赋值给ch1,空格'□'赋值给ch2,字母'B'赋值给ch3。
例如:
scanf("%d",a);
如果输入为:12a3↙,a的值将是12。例如:
scanf("%d,%d",&a,&b);
如果输入为:12a34↙,那么a的值将是12,b的值将无法预测。正确的输入是:12,34↙
例:自增、自减运算符程序实例5main(){inti;i=1;printf(“1)i=%d;2)i=%d;3)i=%d;4)i=%d;5)i=%d;6)i=%d;7)i=%d;\n",i,i++,i,i--,++i,i,--i);}1001100程序运行结果:1)i=1;2)i=0;3)i=0;4)i=1;5)i=1;6)i=0;7)i=0;不同的编译系统对输出表列中的求值顺序不一定相同。可以从左到右,也可从右到左。
TC和BC是按从右到左进行的。main(){inta;floatb;charc;
printf("按格式%%d%%f%%c送数:");scanf("%d%f%c",&a,&b,&c);printf("a=%d,b=%f,c=%c,\n",a,b,c);
printf("按格式%%d,%%f,%%c送数:");scanf("%d,%f,%c",&a,&b,&c);printf("a=%d,b=%f,c=%c,\n",a,b,c);
printf("按格式%%6d%%6f%%6c送数:");scanf("%6d%6f%6c",&a,&b,&c);printf("a=%d,b=%f,c=%c,\n",a,b,c);}程序运行结果:按格式%d%f%c送数:23
4.5pa=23,b=4.500000,c=p,按格式%d,%f,%c送数:23,4.5,pa=23,b=4.500000,c=p,按格式%6d%6f%6c送数:234.5000p
a=23,b=4.500000,c=p,程序实例1:main(){chara,b,c,d,e;scanf("%c%c%c",&a,&b,&c);scanf("%3c%3c",&d,&e);
printf("%c,%c,%c\n",a,b,c);printf("%c,%c\n",d,e);}程序实例2:程序运行结果:1234
5
1,2,34,5程序运行结果(错误):1234
5
1,2,3,【例】错误的格式化输出
#include<stdio.h>voidmain(){
inta=10,b=100;floatf=2;
printf("a=%d,b=%d\n",f,b);
printf("a=%f,b=%d\n",a,b);
printf("a=%ld,b=%d\n",120,b);}a=2.000000,b=100a=10.000000,b=100a=120,b=100期望的运行结果:a=0,b=0a=0.000000,b=-192a=6553720,b=-28770实际的运行结果(BC3.1下):a=0,b=1073741824a=0.000000,b=2012780960a=120,b=100实际的运行结果(VC6.0下):Why?输出float型数据f,却使用了%d,a的不正常输出会影响到下一个表达式的正常输出输出int型数据a,却使用了%f
,a的不正常输出会影响到下一个表达式的正常输出
输出int型数据120,却使用了%ld。在BC3.1下,因为整型和长整型所占内存单元的大小不同(整型占2字节,长整型占4字节),整型不会自动转换成长整型,所以不会正常输出120,同时也会影响到下一个表达式的输出。但在VC6.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陀螺果育苗技术规程
- 2025年南昌县公安局招聘警务辅助人员考试笔试试题【答案】
- 2025年超铀元素及其提取设备合作协议书
- 河南大学科技成果转化基金项目申请书
- 项目策划编制指南
- 大学生寒假.实践报告(卖春联)
- 2025产科护士个人工作计划
- 2025年医用超声诊断设备项目发展计划
- 2025年太阳能电池背膜项目发展计划
- 工作坊聚焦教育技术与教学质量的双重提升
- 2024年安徽省合肥市北城片区七年级数学第一学期期末学业水平测试试题含解析
- 2025至2030中国铜冶炼行业发展现状及应用需求现状分析报告
- 农业保险培训课件
- 茶园租赁合同(含茶叶加工销售)
- 2025至2030全球及中国浮式液化天然气行业产业运行态势及投资规划深度研究报告
- 药品连锁总部管理制度
- 2025至2030中国家用清洁工具行业发展趋势分析与未来投资战略咨询研究报告
- 20250617国金证券机器人行业研究垂直领域具身智能机器人的野望416mb
- 数字时代亲属关系重构-洞察及研究
- 管理类本科论文
- 招商人员笔试题目及答案
评论
0/150
提交评论