C语言基本语法元素清华大学_第1页
C语言基本语法元素清华大学_第2页
C语言基本语法元素清华大学_第3页
C语言基本语法元素清华大学_第4页
C语言基本语法元素清华大学_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

计算机程序设计基础第1章C语言基本语法元素【提纲】1.1数据型式1.2量与表达式1.3语句1.4基本输入输出1.5程序设计风格2025/2/12清华大学计算机科学与技术系2【提纲】1.1数据型式1.2量与表达式1.3语句1.4基本输入输出1.5程序设计风格2025/2/12清华大学计算机科学与技术系3【数据型式】整数型式:int定义整型数据对象有取值范围,仅能表示特定区间内整数值浮点数型式:double或float表示小数,同样具有取值范围首选double字符串型式字符序列以整体形式作为数据对象使用配套zylib库中的STRING型式和CSTRING型式表示字符串2025/2/12清华大学计算机科学与技术系4【1.1】【数据型式】整数型式定义a为整数:inta;整数符号:确定是否表示负数signed、unsigned定义b为无符号整数:unsignedintb;整数长短:确定整数取值范围的大小long、short定义c为短整数:shortintc;2025/2/12清华大学计算机科学与技术系5【1.1】【浮点数型式】例1.1编写程序,求用户输入的两个浮点数之和。2025/2/12清华大学计算机科学与技术系6#include<stdio.h>intmain(){doublea,b,sum;printf("Theprogramaddstworealnumbers.\n");printf("Thefirstrealnumber:");scanf("%lf",&a);printf("Thesecondrealnumber:");scanf("%lf",&b);sum=a+b;printf("%lf+%lf=%lf\n",a,b,sum);return0;}【1.1】【浮点数型式】2025/2/12清华大学计算机科学与技术系7【1.1】【浮点数型式】例1.1编写程序,求用户输入的两个浮点数之和。2025/2/12清华大学计算机科学与技术系8#include<stdio.h>intmain(){floata,b,sum;printf("Theprogramaddstworealnumbers.\n");printf("Thefirstrealnumber:");scanf("%f",&a);printf("Thesecondrealnumber:");scanf("%f",&b);sum=a+b;printf("%f+%f=%f\n",a,b,sum);return0;}【1.1】【字符串型式】例1.2接受用户输入的用户名,向用户问好。2025/2/12清华大学计算机科学与技术系9#include<stdio.h>#include"zylib.h"//使用双引号包含配套库intmain(){STRINGname;//定义于“zylib.h”库中printf("Theprogramgivesagreetingtouser.\n");printf("Yourname:");//配套库已实现,获取用户输入字符串,以文本行为单位name=GetStringFromKeyboard();//使用“%s”输出字符串printf("Hello,%s\n",name);return0;}【1.1】【字符串型式】2025/2/12清华大学计算机科学与技术系10【1.1】【工程项目设置】基本步骤步骤1:创建新工程,设置好工程项目的目录步骤2:编写程序代码,将文件保存在该目录下步骤3:将文件“zylib.h”与“zylib.c”拷贝到该目录步骤4:在工程项目中添加上述两个文件步骤5:在程序文件中使用双引号包含头文件“zylib.h”工程项目意义将程序组织成一个项目整体进行开发和管理一般需要创建独立的工程项目才能开发程序特别说明:不同编译器的工程项目设置并不相同2025/2/12清华大学计算机科学与技术系11【1.1】【工程项目设置】避免多次拷贝库文件的方法为全部练习题创建总目录,如“CExercises”在“CExercises”目录下创建子目录“zylib”,将文件“zylib.h”与“zylib.c”拷贝到“zylib”目录下创建新工程时,为每道练习题在“CExercises”目录下创建单独子目录(注意不要使用多级目录),如“Ex0101”与“Ex0102”,编写的程序文件都保存在该目录下在工程项目中添加“zylib”子目录下的库文件“zylib.h”与“zylib.c”在程序中使用相对路径包含头文件“../zylib/zylib.h”(Linux和OSX)或者“..\zylib\zylib.h”(Windows,单双反斜杠均可)2025/2/12清华大学计算机科学与技术系12【1.1】【提纲】1.1数据型式1.2量与表达式1.3语句1.4基本输入输出1.5程序设计风格2025/2/12清华大学计算机科学与技术系13【量与表达式】表达式变量文字与常量赋值与初始化操作符与操作数混合运算与型式转换2025/2/12清华大学计算机科学与技术系14【1.2】【表达式】表达式定义操作数与操作符序列,表达运算过程操作数:文字、量、函数调用、括号操作符:运算逻辑表达式值:运算结果表达式求值:计算表达式值的过程按普通四则运算理解表达式求值过程,逐一计算表达式中所有操作符,直至完成2025/2/12清华大学计算机科学与技术系15【1.2】【变量】先定义再使用定义格式:变量型式变量名称[,变量名称];变量名称应具有唯一性:不允许重名变量四大基本特征(VANT)变量总是具有值(value)变量总是与内存中地址(address)相对应变量总是具有名称(name)变量总是具有确定型式(type)2025/2/12清华大学计算机科学与技术系16【1.2】【文字】定义:程序中单独出现的值例:3.14、100等整数型式文字十进制、十六进制、八进制浮点型式文字字符串型式文字2025/2/12清华大学计算机科学与技术系17【1.2】【整型文字】十进制表示:普通整数表示十六进制表示:逢十六进一,无正负号以“0x”或“0X”开头的0~9、A/a~F/f序列例:0x55、0X1F、0x2a(0x5516=8510)八进制表示:逢八进一,无正负号以“0”开头的0~7序列例:055(0558=4510)注意不要与十进制混淆2025/2/12清华大学计算机科学与技术系18【1.2】【浮点型文字】一般形式:小数表示法由整数部分、小数点与小数部分组成例:3.1416、-2.718281828指数形式:科学计数法由尾数部分、字符‘E’/‘e’与指数部分组成例:3.1416e3(3.14103)例:-2.718281828E-2(-2.71828182810-2)2025/2/12清华大学计算机科学与技术系19【1.2】【字符串型文字】双引号引起来的字符序列例:"ProgramminginC"、"HelloWorld!\n"双引号是字符串文字界定符,非字符串内容转义序列字符串不仅可以包含可打印字符,也可以包含表示特殊活动的特殊字符用反斜杠开始转义序列,后跟一个或多个字符转义序列整体作为单个字符处理,格式固定例:"\n"、"\\"2025/2/12清华大学计算机科学与技术系20【1.2】转义序列功能与意义\a响铃\b退格\f换页\n换行\r返回到当前行首\t水平制表键\v垂直制表键\0ASCII码0\\反斜杠字符自身\'单引号字符(仅在字符常数中需要使用此方式)\"双引号字符(仅在字符串常数中需要使用此方式)\ddd“ddd”表示八进制的该字符ASCII码值\xhh“hh”表示十六进制的字符ASCII码值,x为十六进制标志【预定义转义序列】2025/2/12清华大学计算机科学与技术系21【1.2】【常量】常量的定义:程序运行期间值不可改变的量格式:const数据型式常量名称=初始值;例:constintzero=0;常量的意义解决直接出现的文字无法解释其意义的问题文字?魔数也!常量与变量常量不可改变值,其他与变量同定义常量时必须进行初始化常量初始值必须能够在编译期间计算出来2025/2/12清华大学计算机科学与技术系22【1.2】【赋值与初始化】赋值表达式格式:变量名称=表达式例:a=0赋值语句:赋值表达式加分号格式:变量名称=表达式;例:a=b+c;变量初始化在定义变量时直接设定初始值例:inta=0;2025/2/12清华大学计算机科学与技术系23【1.2】【赋值流程】2025/2/12清华大学计算机科学与技术系24absummain()【1.2】【赋值流程】2025/2/12清华大学计算机科学与技术系251absummain()a=1;【1.2】【赋值流程】2025/2/12清华大学计算机科学与技术系2612absummain()a=1;b=2;【1.2】【赋值流程】2025/2/12清华大学计算机科学与技术系27123absummain()a=1;b=2;sum=a+b;【1.2】【操作符与操作数】操作符分类一元操作符:只有单个操作数,例如负号二元操作符:带有两个操作数,例如加减乘除等三元操作符:带有三个操作数,例如条件表达式操作符优先级与结合性优先级确定计算顺序,结合性确定计算方向操作符优先级仅具有参考价值,C语言对于特殊表达式的计算有特别规定,并不完全遵照该规则如果拿不准,使劲加括号2025/2/12清华大学计算机科学与技术系28【1.2】【混合运算与型式转换】例1.3编写程序,询问用户姓名,向用户问好,然后将用户输入的整数和实数相加,输出结果。2025/2/12清华大学计算机科学与技术系29【1.2】#include<stdio.h>//#include"zylib.h"//使用双引号包含配套库#include"../zylib/zylib.h"//单独库目录,Linux或OSX//#include"..\zylib\zylib.h"//单独库目录,Windowsintmain(){intn;doubled,sum;STRINGname;printf("Theprogramgivesagreetingtouser.\n");printf("andaddsanintegerandarealnumber.\n");printf("Yourname:");//获取用户输入的单行字符串name=GetStringFromKeyboard();printf("Hello,%s\n",name);printf("Pleaseinputaninteger:");//获取用户输入的一个整数n=GetIntegerFromKeyboard();printf("Pleaseinputarealnumber:");//获取用户输入的一个实数d=GetRealFromKeyboard();sum=n+d;printf("%d+%lf=%lf\n",n,d,sum);return0;}【混合运算与型式转换】2025/2/12清华大学计算机科学与技术系30【1.2】【混合运算与型式转换】2025/2/12清华大学计算机科学与技术系31【1.2】【混合运算与型式转换】隐式型式转换:自动进行,程序员无法干预转换原则:一般以不损失精度为前提赋值:右边表达式的值先转换为目标型式后赋值显式型式转换:程序员手工进行的型式转换格式:(转换后的目标型式)原表达式例:inta;doubleg=9.80665;a=g;//隐式型式转换,小数部分舍弃,a值9a=(int)g*4;//显式型式转换,a值36a=(int)(g*4);//显式型式转换,a值392025/2/12清华大学计算机科学与技术系32【1.2】【提纲】1.1数据型式1.2量与表达式1.3语句1.4基本输入输出1.5程序设计风格2025/2/12清华大学计算机科学与技术系33【语句】简单语句:表达式后跟分号例一:sum=n+d;例二:n=GetIntegerFromKeyboard();例三:printf("%d+%lf=%lf\n",n,d,sum);复合语句:花括号对封装的语句序列例:{a=1;b=a+1;}空语句:单独出现的分号满足程序特定语法规则的要求作为未来添加程序代码的占位标记2025/2/12清华大学计算机科学与技术系34【1.3】【提纲】1.1数据型式1.2量与表达式1.3语句1.4基本输入输出1.5程序设计风格2025/2/12清华大学计算机科学与技术系35【基本输入输出】基本事实输入输出是语言与算法必备功能C语言本身没有输入输出语句或命令输入输出需使用标准库函数输入输出函数原型位于头文件“stdio.h”中典型输入输出函数格式化输出函数printf()格式化输入函数scanf()2025/2/12清华大学计算机科学与技术系36【1.4】【格式化输出】格式化输出函数printf()调用格式格式:printf("输出格式规约字符串",输出项列表);例一:printf("Helloworld!\n");例二:printf("Hello,%s.\n",name);例三:printf("%f+%f=%f\n",a,b,sum);例四:printf("%d+%lf=%lf\n",n,d,sum);%y:格式描述符%d:十进制整数;%u:无符号整数%f:float型式浮点数;%lf:double型式浮点数%c:单个字符;%s:字符串2025/2/12清华大学计算机科学与技术系37【1.4】【格式化输出】例1.4编写程序,按照下列格式输出下述部分省市统计数据。2025/2/12清华大学计算机科学与技术系38【1.4】场宽精度左右对齐【场宽•精度•对齐】输出格式%[对齐标志][场宽][.精度]格式描述符对齐标志:确定每列左侧还是右侧对齐缺省右对齐,左对齐使用“-”例:“%-d”表示按照左对齐格式输出整数场宽:确定每列占用多少字符宽度,数据输出一般不会截断确定输出最小宽度,超出部分照常输出例:“%3d”表示按照右对齐、占三位格式输出整数,若整数长度超出三位,则照常输出数据2025/2/12清华大学计算机科学与技术系39【1.4】【场宽•精度•对齐】精度:确定输出多少位数据以保证其精度精度数字前有小数点标志,在场宽中占用1位例:“%-5.2f”表示按照左对齐,整体占5位,且小数点后2位的格式输出浮点数数据截断例一:按“%-5.2f”格式输出12.3456,结果为12.35,注意四舍五入例二:按“%-5.2f”格式输出123.456,结果为123.46,注意截断后的数据仍然超出场宽限制,照常输出字符串截断输出特例:“%13.13s”表示字符串为13位宽,多余部分截断2025/2/12清华大学计算机科学与技术系40【1.4】#include<stdio.h>//#include"zylib.h"//使用双引号包含配套库#include"../zylib/zylib.h"//单独库目录,Linux或OSX//#include"..\zylib\zylib.h"//单独库目录,Windowsintmain(){STRINGpro1,pro2,pro3,pro4,pro5;doublearea1,area2,area3,area4,area5;doublepop1,pop2,pop3,pop4,pop5;pro1="Anhui";area1=139600;pop1=6461;pro2="Beijing";area2=16410.54;pop2=1180.70;pro3="Chongqing";area3=82400;pop3=3144.23;pro4="Shanghai";area4=6340.50;pop4=1360.26;pro5="Zhejiang";area5=101800;pop5=4894;【格式化输出示例代码】2025/2/12清华大学计算机科学与技术系41【1.4】printf("-------------------------------------------\n");printf("ProvinceArea(km2)Population(10K)\n");printf("-------------------------------------------\n");printf("%-13.13s%9.2lf%-.2lf\n",pro1,area1,pop1);printf("%-13.13s%9.2lf%-.2lf\n",pro2,area2,pop2);printf("%-13.13s%9.2lf%-.2lf\n",pro3,area3,pop3);printf("%-13.13s%9.2lf%-.2lf\n",pro4,area4,pop4);printf("%-13.13s%9.2lf%-.2lf\n",pro5,area5,pop5);printf("-------------------------------------------\n");return0;}【格式化输出示例代码】2025/2/12清华大学计算机科学与技术系42【1.4】【格式化输入】格式化输入函数scanf()调用格式格式:scanf("输入格式规约字符串",输入项列表);例:scanf("%d,%d",&a,&b);特别说明输入格式码与输出格式码基本相同用户在终端输入的数据逐一存放到输入项列表中变量所在的地址空间;普通变量的名称前需有取址操作符“&”输入项之外的其他字符:格式描述串中其他字符需在输入数据时一并输入,不能遗漏、省略或不一致2025/2/12清华大学计算机科学与技术系43【1.4】【格式化输入】特别说明输入项的分隔:无分隔字符的相连项在输入时使用空格、Tab键或回车键分隔尽量不用scanf()使用zylib库中的三个函数代替整数输入:GetIntegerFromKeyboard()浮点数输入:GetRealFromKeyboard()字符串输入:GetStringFromKeyboard()2025/2/12清华大学计算机科学与技术系44【1.4】【提纲】1.1数据型式1.2量与表达式1.3语句1.4基本输入输出1.5程序设计风格2025/2/12清华大学计算机科学与技术系45【程序设计风格】注释命名规范宏与常量赋值语句简写形式源代码排版2025/2/12清华大学计算机科学与技术系46【1.5】【注释】注释目的:增强程序可读性、可维护性注释格式格式一:“/*”与“*/”对,注释其中的部分,可出现在程序任意位置例一:int/*此处内容为注释*/a;格式二:“//”,注释从此直至文本行结束例二:inta;//此处内容为注释特别说明同一种注释标记不可以嵌套“//”不跨行,“/*”与“*/”对可跨行2025/2/12清华大学计算机科学与技术系47【1.5】【命名规范】字符集:ASCII字符集大小写英文字母、数字、部分特殊符号标识符以下划线或字母开头,由下划线、字母、数字组成,表示常量、变量、函数、型式等名称,区分大小写关键字:系统专用的具有特定意义的标识符预定义标识符:编译命令与库函数名,具有特定意义,一般不能重新定义用户定义标识符:用户根据需要定义,主要是为了使程序容易阅读、理解与维护2025/2/12清华大学计算机科学与技术系48【1.5】宏定义:预处理命令#define一旦定义,可以代替常量使用例:#definePI3.14宏定义不是常量应优先使用常量而不是宏目的与意义增强程序可读性使用有意义的名字命名增强程序可维护性将值定义为符号常量,则程序中仅需要修

温馨提示

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

评论

0/150

提交评论