版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计智能工程学院“现场课程”目录CONTENTS
目
录
C语句概述2.1
格式输入输出2.2
字符输入输出2.3
提示严格来讲,程序中声明部分的内容不应称为语句。例如,“inta;”不是一条C语句,因为它不产生机器操作,而只是对变量的定义。但是,为了方便讲解,我们对两者并未进行严格区分。总体而言,C语句可以分为以下五类。
3.1C语句概述C语言作为结构化程序设计语言的代表,其核心执行单元是语句。语句通过遵循特定语法规则,实现数据操作、流程控制、函数调用等具体功能,是构成C程序的基本“行动单元”。所有C语句都以分号(;)
结尾,这是区分语句与其他语法元素(如表达式、变量声明)的关键标志。表达式语句:最基础的执行单元定义:由“表达式+分号”构成,核心作用是“计算表达式的值并执行副作用”(如变量赋值、函数调用)。注意:部分表达式(如a+b)本身无实际副作用,单独作为语句时(a+b;)仅计算值但不存储或使用,通常无实际意义,这类语句称为“空操作语句”的一种特殊形式。常见示例:赋值语句:x=10;(将10赋值给变量x,副作用是修改x的值)自增/自减语句:i++;(i的值加1,副作用是修改i)函数调用语句:printf("Hello");(调用printf函数输出字符串,副作用是控制台打印)复合表达式语句:y=x*2+3;(先计算表达式值,再赋值给y)表达式语句1
3.1C语句概述定义:用于声明变量、函数或类型别名的语句,核心作用是“告诉编译器某个标识符的存在及类型”。变量声明:分为“定义性声明”(分配内存,如inta;)和“引用性声明”(不分配内存,如externinta;,用于跨文件引用变量);函数声明:又称“函数原型”,告知编译器函数的返回值类型、参数个数及类型(如intadd(intx,inty););类型声明:用typedef定义类型别名(如typedefintSize;,后续可用Size代替int定义变量)。示例:intnum;//变量定义性声明(分配4字节内存,默认值不确定)externdoublepi;//变量引用性声明(pi在其他文件中定义)charget_char();//函数声明(告知编译器:get_char无参数,返回char)typedefstruct{//类型声明(定义结构体类型Person)charname[20];intage;}Person;声明语句2
3.1C语句概述控制语句是结构化程序设计的核心,用于改变程序“自上而下”的默认执行顺序,实现分支、循环、跳转等逻辑。C语言共提供9种控制语句,按功能可分为3类::控制语句3
3.1C语句概述定义:用大括号({})
将多条语句包裹起来,形成一个“语句块”,在语法上等价于一条语句。核心特点:块内可以定义变量(C99及以后标准支持“块作用域变量”,变量仅在块内有效);常用于控制语句的“分支体”或“循环体”,将多条相关语句封装为一个整体。示例(for循环中的复合语句):#include<stdio.h>intmain(){for(inti=1;i<=5;i++)//i是块作用域变量,仅在for循环体内有效{intsquare=i*i;//square也是块作用域变量printf("%d的平方是%d\n",i,square);//此处可以运行}printf("%d的平方是%d\n",i,square);//此处无法访问i或square(编译报错)}复合语句4
3.1C语句概述定义:仅由一个分号(;)构成的语句,不执行任何操作。适用场景:当语法要求必须有一条语句,但逻辑上无需执行操作时(如循环体为空、switch的case无需处理)。示例(空循环体的for循环):longstart=clock();
//功能:等待1秒(通过循环消耗时间,实际开发用sleep函数更规范)for(;clock()-start<CLOCKS_PER_SEC;);//循环体为空,分号是空语句while(getchar()!='\n');//本语句的功能是,只要从键盘输入的字符不是回车则重新输入。这里的循环体为空语句。空语句5
3.1C语句概述C语言本身没有提供输入输出语句,输入和输出操作由C函数库中的函数来实现。在使用系统库函数时,要使用预编译命令“#include”将有关的“头文件”包含进来。本节将介绍最常用的标准输入输出函数——格式输入输出函数,这些函数包含在“stdio.h”文件中,故在程序开头应该添加预编译命令:#include<stdio.h>或#include"stdio.h"
名师点睛在初学本节内容时,读者不必花许多精力去探究每个细节,重点在掌握最常用的一些规则。其他部分可在需要时随时查阅。学习这部分内容时最好边看书边上机练习,通过编写和调试程序逐步深入地掌握输入输出的应用。
3.2格式输入输出在前面各章节中已多次用到了printf函数(格式输出函数),它的作用是将指定的数据按指定的格式输出到显示器上。格式输出函数printf,其一般格式为:printf("格式控制",输出项列表);例如:printf("a=%d,b=%f",a,b);括号内包括两部分内容:(1)“格式控制”是用双撇号括起来的一个字符串,称为“转换控制字符串”。它包括两个信息:①格式声明。格式声明由“%”和格式字符组成,如%d、%f等。它的作用是以指定的格式输出数据。②普通字符。普通字符即需要原样输出的字符,例如,上面printf函数双撇号内的“a=”、“b=”及中间的逗号都是普通字符,会原样输出到屏幕上。printf函数的一般格式1
3.2格式输入输出3.2.1格式输出——printf函数(2)“输出项列表”是程序需要输出的一些数据,可以是常量、变量或表达式。输出项列表中给出了各个输出项,要求格式声明和各输出项在数量和类型上应该一一对应。例如,以下的printf函数中,第一个“%d”与变量a对应,第二个“%c”与变量b对应,第三个“%d”与表达式a+b对应。
3.2格式输入输出3.2.1格式输出——printf函数下面,我们重点介绍一下格式声明这部分内容。格式声明一般形式为:%[标志][0][输出最小宽度][.精度][长度]格式字符其中方括号[]中的项为可选项。也可以表示为:%[±][0][m][.n][l或h]格式字符printf函数中的格式声明2下面,我们重点介绍一下格式声明这部分内容。格式声明一般形式为:%[标志][0][输出最小宽度][.精度][长度]格式字符其中方括号[]中的项为可选项。也可以表示为:%[±][0][m][.n][l或h]格式字符各项的意义介绍如下:标志字符为“-”或“+”,指定输出数据的对齐方式:指定“+”时,输出右对齐;指定“-”时,输出左对齐;不指定标志时缺省为“+”,默认右对齐。用十进制整数m来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出;若实际位数少于定义的宽度,则补空格或0(如在m前有数字0,则补0)。精度格式符以“.”开头,后跟十进制整数n。意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。长度格式符有h和l两种,h表示按短整型输出,l表示按长整型输出。格式字符用来表示输出数据的类型,各种格式字符及其功能说明如表所示。
3.2格式输入输出3.2.1格式输出——printf函数标志
3.2格式输入输出3.2.1格式输出——printf函数格式符含义及相关举例【例3-1】使用格式输出函数printf输出不同类型变量。#include<stdio.h>intmain(){intint_num=12345;//基本整数类型,通常为4字节shortshort_num=-678;//短整数类型,通常为2字节longlong_num=987654321;//长整数类型,通常为4或8字节unsignedintuint_num=4294967295U;//无符号整数,只能表示非负数floatfloat_num=3.14159f;//单精度浮点数,约6-7位有效数字,需加f后缀doubledouble_num=2.718281828459045;//双精度浮点数,约15-17位有效数字printf("int类型:%d\n",int_num);//%d用于输出有符号十进制整数printf("short类型:%hd\n",short_num);//%hd用于输出short类型整数printf("long类型:%ld\n",long_num);//%ld用于输出long类型整数printf("unsignedint类型:%u\n",uint_num);//%u用于输出无符号整数printf("八进制表示:%o\n",int_num);//%o用于输出八进制整数(无前缀)printf("十六进制表示(小写):%x\n",int_num);//%x用于输出十六进制(小写字母)printf("十六进制表示(大写):%X\n\n",int_num);//%X用于输出十六进制(大写字母)printf("===浮点类型===\n");printf("float类型(默认):%f\n",float_num);//%f用于输出浮点数(默认6位小数)printf("float类型(指数形式):%e\n",float_num);//%e以科学计数法输出(小写e)printf("double类型(保留3位小数):%.3lf\n",double_num);//%.3lf控制保留3位小数printf("自动选择最短格式:%g\n\n",double_num);//%g自动选择%f或%e中更简洁的格式return0;}
3.2格式输入输出3.2.1格式输出——printf函数【运行结果】程序运行结果如图所示。
3.2格式输入输出3.2.1格式输出——printf函数【程序说明】通过这些示例,可以清晰地了解如何针对不同类型的变量选择合适的格式说明符,以及如何使用修饰符控制输出格式。【例3-2】在printf函数中使用附加符号。#include<stdio.h>intmain(){ inta=15; /*定义整型变量a并赋值*/ doubleb=12345678.1234567; /*定义双精度型变量b并赋值*/ printf("a=%5d,a=%-5d,a=%05d\n",a,a,a); /*使用m控制输出位数,用-左对齐, 空位补0*/ printf("b=%f,b=%lf,b=%8.3f\n",b,b,b); /*输出b,用m.n控制输出的长度和 小数点位数*/ printf("%15s\n","IloveC"); /*使用m控制输出字符串长度*/ printf("%-15.5s\n","IloveC"); /*使用-m.n进行左对齐、限制字符串 长度和字符位数*/ return0; /*函数返回值0*/}
3.2格式输入输出3.2.1格式输出——printf函数【运行结果】程序运行结果如图所示。
3.2格式输入输出3.2.1格式输出——printf函数【程序说明】输出变量a时,“%5d”表示输出宽度为5,而a值为15,只有两位,故补三个空格;“%-5d”表示输出宽度为5并且左对齐,因此后补三个空格;“%05d”表示输出宽度为5并用“0”来补空位。输出变量b时,“%f”和“%lf”格式的输出相同,说明符号“l”对“f”类型无影响。“%8.3f”表示输出宽度为8,精度为3,由于实际长度超过8位,故应按实际位数输出,小数位数超过3位部分被截去。输出字符串时,“%15s”表示输出字符串宽度为15,如果字符串本身长度不足15,则用空格左补齐,可以看到“IloveC”前存在7个空格。“%-15.5s”表示输出宽度虽为15,但这里指定了精度“.5”,也就是说指定了输出字符的个数为5,并且用“-”指定了左对齐,所以输出5个字符“Ilov”,后面还有10个空格。
3.2格式输入输出3.2.1格式输出——printf函数scanf()函数用于从标准输入设备(通常是键盘)读取格式化的数据。格式输入函数scanf的一般格式为:scanf("格式控制",输入项地址列表);例如:scanf("a=%d,b=%f",&a,&b);scanf函数的一般格式1
3.2格式输入输出3.2.2格式输入——scanf函数括号内包括两部分内容:“格式控制”与printf函数类似,也包含两部分内容:格式声明与普通字符。格式声明用于规定输入的格式(如%d、%f等),如输入数据的类型、长度等;普通字符是需按原样输入的字符,如前面的“a=”、“b=”及中间的逗号。输入项地址列表,由需要输入变量的地址组成。变量的地址需用取地址运算符“&”得到。多个输入项之间用逗号隔开,同样要求格式声明和各输入项在数量和类型上一一对应。
3.2格式输入输出3.2.2格式输入——scanf函数12scanf函数中的格式声明与printf函数中的格式声明类似,以“%”开始,以一个格式字符结束,中间可以插入附加的符号。其形式为:%[m][l或h]格式字符其中方括号中为可选项,可以没有,但格式字符不能缺少。数据宽度m:m为十进制整数,用于指定输入数据的宽度(即数字个数)。例如:scanf("%4d",&a);如果输入:123456则只读入4位给变量a,即a为1234,后面的5、6被舍弃。如输入小于4位,则不影响。对指定了宽度的格式输入,数据之间可以无分隔符,将根据各自宽度来读入。例如:scanf("%3d%3d",&a,&b);输入:123456,则a等于123,b等于456。长度l/hl表示输入长整型或双精度型数据,h表示输入短整型数据。例如:%ld、%lo、%lx表示输入数据为长整型(十进制、八进制、十六进制);%lf、%le表示输入数据为双精度型(小数形式、指数形式);%hd、%ho、%hx表示输入数据为短整型。scanf函数中的格式声明2
3.2格式输入输出3.2.2格式输入——scanf函数
3.2格式输入输出格式符含义及相关举例3.2.2格式输入——scanf函数
提示使用注意事项1.变量地址:scanf()的参数必须是变量的地址(使用&运算符),字符串数组除外inta;floatb;charstr[20];scanf("%d%f%s",&a,&b,str);//str不需要&,因为数组名本身就是地址2.输入分隔:默认以空白字符(空格、制表符、换行符)作为输入数据的分隔3.输入格式匹配:输入数据的格式应与格式字符串中的格式说明符匹配intx,y;scanf("%d,%d",&x,&y);//正确输入:10,204.缓冲区问题:scanf()会留下换行符在输入缓冲区,可能影响后续输入,特别是字符输入inta;charc;scanf("%d",&a);//输入10并回车scanf("%c",&c);//这里会读取到回车符'\n',而不是用户输入的下一个字符解决方法:在%c前加空格,跳过空白字符scanf("%c",&c);//注意%c前的空格
3.2格式输入输出3.2.2格式输入——scanf函数字符输出函数putchar的功能是向输出设备输出一个字符,其一般格式为:putchar(c);c为欲输出的字符常量或变量,亦可为整型常量或变量(ASCII码)。【例3-3】输出ABC三个字符。【问题分析】输出三个字符,可用三次putchar函数进行输出,这里我们分别用字符变量、整型变量和字符常量作为putchar的参数来进行输出。
3.3字符输入输出3.3.1字符输出——putchar函数【参考代码】#include<stdio.h>intmain(){ chara='A'; /*定义字符型变量a并赋初值'A'*/ intb=66; /*定义整型变量b并赋初值66*/ putchar(a); /*输出变量a的值*/ putchar(b); /*输出变量b的值*/ putchar('C'); /*输出字符'C'*/ putchar('\n'); /*输出换行符*/ return0; /*函数返回值0*/}
3.3字符输入输出3.3.1字符输出——putchar函数运行结果程序运行结果如图所示。
提示可以用putchar函数输出转义字符,例如:putchar('\n'); /*输出换行符*/putchar('\101'); /*输出字符A,因为八进制的101等于十进制的65*/putchar('\''); /*输出单撇号*/
3.3字符输入输出3.3.1字符输出——putchar函数字符输入函数getchar的功能是从输入设备上读入一个字符,其一般格式为:getchar();该函数的返回值为所读入的字符,所以一般与赋值语句联合使用,将读取的字符赋给变量,例如:charc; /*定义字符变量c*/c=getchar()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 楼顶logo施工方案(3篇)
- 香薰手工活动方案策划(3篇)
- 声控照明施工方案(3篇)
- 茶叶活动推广策划方案(3篇)
- 高州剪发活动策划方案(3篇)
- 2025年零售行业顾客服务标准流程
- 医美成交方案策划
- 2025年大学汽车运用与维修(汽车检测技术)试题及答案
- 2025年中职旅游服务(导游服务技能)试题及答案
- 2025年高职新闻采编与制作(新闻采编)试题及答案
- 国家开放大学电大本科《流通概论》复习题库
- 机关档案汇编制度
- 2025年下半年四川成都温江兴蓉西城市运营集团有限公司第二次招聘人力资源部副部长等岗位5人参考考试题库及答案解析
- 2026福建厦门市校园招聘中小学幼儿园中职学校教师346人笔试参考题库及答案解析
- 2025年高职物流管理(物流仓储管理实务)试题及答案
- 设备管理体系要求2023
- 2025年学法减分试题及答案
- 2025年特种作业人员考试题库及答案
- 邢台课件教学课件
- 2025年新能源市场开发年度总结与战略展望
- 互联网企业绩效考核方案与实施细则
评论
0/150
提交评论