个人学习笔记:C语言程序结构
个人笔记:C语言程序
- 函数
- 语句
- 输入输出对象
- 标识符
- 关键字
函数
一个C语言源程序,是由一个或多个函数定义顺序组成的,其中必须有一个函数名为main的主函数。C语言源程序中的函数是指完成特定数据处理任务、功能上独立的一个程序段。任何一个函数定义都是由函数首部和函数体构成,函数体必须用大括号“{”和“}”括起来,函数体必须紧接在函数首部之后。函数体的成分是由0或多条变量组成的定义序列;1条或多条语句顺序组成的语句序列。
函数定义=函数首部+函数体
int main(void)() //函数首部
{ //函数体
.......
return 0; //返回值
}
函数体的主要成分:变量定义序列+语句序列
int r=5;
int f=3;
int s; //变量定义序列
s=r*f //语句序列
语句
1. 表达式语句
表达式语句由表达式加上分号“;”,执行表达式语句就是计算表达式的值。
x=y+z;z=100 //赋值语句
y+z; //加法运算语句,但计算结果不能保留,无实际意义
i++; //先引用变量i,然后变量i进行自加1运算
++i; //变量i先进行自加1运算,然后对变量i进行引用
2. 函数调用语句
函数调用语句由函数名、实际参数加上分号“;”组成。执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调函数体中的语句,求取函数值。通过调用函数printf(),来实现输出字符串的功能。
形式:函数名(实际参数表);
例:
printf("hello,yinuo!");
3. 控制语句
控制语句是由特定的语句定义符组成,使用控制语句可实现程序的各种结构方式,从而实现对程序流程的控制。
C语言的九种控制语句。可分为以下三类
1)条件判断语句:if语句、switch语句。
2)循环执行语句:do...while语句、while语句、for语句。
3)转向语句:break语句、goto语句(尽量少使用,不利于结构化程序设计)、continue语句、return语句。
4. 复合语句
把多个语句用括号“{}”括起来组成的一个语句称复合语句,复合语句内的各条语句都必须以分号“;”结尾,在括号“}”外不能加分号。复合语句在程序中属于一条语句,不能将它看为多条语句。
{
k=i+j;
a=b+c;
printf{"%d%d\n",k,a};
}
5. 空语句
空语句是由分号“;”组成,并且是什么也不执行的语句,在程序中空语句可用来作空循环体。
int x=4;
++x;
;
printf("%d",x)
输入输出对象
1. 格式化输入函数
scenf()函数的作用是从输入设备输入若干个任意类型的数据。它的函数原型在头文件<stdio.h>中。
一般形式:
scanf ("格式控制字符串",地址列表);
例如
scanf("%d %c",&a,&b);
该函数主要有如下两个参数:
1).格式控制字符串:用来指定每个输入项的输入格式。格式控制字符串通常由“%”和格式字符组成,如%d、%c、%f等。它的作用是确定输入数据的格式,格式说明都是由“%”字符开头的。
常见的scan()函数的格式控制符:
| 格式控制符 | 字符含义 | 格式控制符 | 字符含义 |
|---|---|---|---|
| %d,%i | 输入十进制带符合整数 | %f,%e,%E,%g,%G | 输入实数 |
| %o | 输入八进制无符合整数 | %c | 输入单个字符 |
| %x,%X | 输入十六进制无符号整数 | %s | 输入字符串 |
| %u | 输入十进制无符号整数 |
2)地址列表:地址列表给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。例如,&a表示变量a在内存中的地址,其中&是取地址运算符,其作用是求变量的地址
2. 格式化输出函数
printf()函数的作用是向终端输出若干个任意类型的数据。它的函数原型在头文件<stdio.h>中。
一般形式:
printf(格式控制字符串,输出列表);
该函数主要有如下两个参数:
1).格式控制串:用来指定每个输出项的输出格式,格式控制字符串由格式说明、转义字符和普通字符组成。
普通字符:也称为非格式说明符,按原样输出字符、
转义字符:是以“ \ ”开头的字符
格式说明:以“%”和格式字符组成
常见的printf()函数中使用的格式控制符:
| 格式控制符 | 字符含义 | 格式控制符 | 字符含义 |
|---|---|---|---|
| %d,%i | 输出十进制带符合整数,正数不带符合 | %g,%G | 输出%f或%e中宽度最短的单双精度实数 |
| %o | 输出八进制无符合整数,无前缀0 | %c | 输出单个字符 |
| %x,%X | 输出·十六进制无符号整数,无前缀0x | %s | 输出字符串或字符数组 |
| %u | 输出十进制无符号整数 | %p | 输出指针 |
| %f | 输出小数形式的实数 | %% | 输出一个% |
| %e,%E | 输出指数形式的单双精度实数 |
2).输出列表:是要输出的各项数据,这些数据可以是常量、变量、函数或表达式,其具体类型由格式控制符决定。输出列表的个数必须与格式控制字符串中规定的字符个数一样多,各参数之间“,”分开,且顺序一一对应。
3. 字符的输入函数
getchar()函数是字符输入函数,作用是从标准输入设备上输入一个字符,在同一个时间只能读取一个单一的字符
使用语法:
getchar();
注意
1).使用gatchar()函数输入时,都是转换为ASCII码值来存储,所以getchar()函数读取一个字符,返回的是一个整数
2).getchar()函数没有参数,单括号不能省略。输入数字也必须按字符处理。当输入多个字符时,只能接收第一字符。
3).在程序中使用gatchar函数,必须在程序的开头加上编译预处理命令,即:#include<stdio.h>
在C程序中,通常把输入的字符赋予一个字符变量,使其构成一个赋值语句,语句如下:
char x; //定义字符变量x
x = getchar(); //从键盘输入一个字符,然后将字符的值赋给变量x
4. 字符的输出函数
putchar()函数是字符输出函数,作用是向标准输出设备上输出一个字符,同一时间内只能输出一个单一的字符。
语法格式:
putchar(ch);
注意:
1).其中的ch可以是常量、变量、转义字符或表达式等,其数据类型可以是字符型或整形,如果是整形数据,代表的是与一个字符相对应的ASCII码值
2).在程序中使用putchar函数,必须在程序的开头加上编译预处理命令,即:#include<stdio.h>
3).putchar函数只能用于单个字符的输出,且一次只能输出一个字符
标识符
在程序中使用的变量名、函数名、标号等统称为标识符,除库函数的函数名由系统定义外,其余都是由用户定义
命名必须遵循以下基本规则:
1.标识符只能是由英文字母“AZ,az”、数字“0~9”和下划线“_”组成的字符串 ,并且第一个字符必须是字母或下划线。
2.标识符不能是C语言的关键字
3.在标识符中,大小写是有区别的。
4.标识符命名尽量有相应的意义,以便阅读理解。
关键字
关键字是C程序中的保留字,在C语言的编写中不允许标识符与关键字相同,ANSI C标准一共规定了32个关键字。
| 关键字 | 用途 | 说明 |
|---|---|---|
| auto | 存储种类说明 | 用以说明局部变量,默认值为此 |
| break | 程序语句 | 退出最内层循环体 |
| case | 程序语句 | switch语句中的选择项 |
| char | 数据类型说明 | 单字节整型数或字符型数据 |
| const | 存储类型说明 | 在程序执行过程中不可更改的常数值 |
| continue | 程序语句 | 转向下一次循环 |
| default | 程序语句 | switch语句中的失败选择项 |
| do | 程序语句 | 构成do...while循环结构 |
| double | 数据类型说明 | 双精度浮点数 |
| else | 程序语句 | 构成if...eles选择结构 |
| enum | 数据类型说明 | 枚举 |
| exterm | 存储类型说明 | 在其他程序模块中说明了的全局变量 |
| float | 数据类型说明 | 单精度浮点数 |
| for | 程序语句 | 构成for循环 |
| goto | 程序语句 | 构成goto转移结构 |
| if | 程序语句 | 构成if...else选择循环 |
| int | 数据类型说明 | 基本型整数 |
| long | 数据类型说明 | 长整型数 |
| register | 存储类型说明 | 使用CPU内部寄存的变量 |
| return | 程序语句 | 函数返回 |
| short | 数据类型说明 | 短整型数 |
| signed | 数据类型说明 | 有符号数,二进制数据的最高位为符号位 |
| sizeof | 运算符 | 计算表达式或数据类型的字节数 |
| static | 存储类型说明 | 静态变量 |
| struct | 数据类型说明 | 结构类型数据 |
| switch | 程序语句 | 构成switch选择结构 |
| typedef | 数据类型说明 | 重新进行数据类型定义 |
| union | 数据类型说明 | 联合类型数据 |
| unsigned | 数据类型说明 | 无符号数据 |
| void | 数据类型说明 | 无类型数据 |
| volatile | 数据类型说明 | 该变量在程序执行中可被隐含地改变 |
| while | 程序语句 | 构成while和do...while循环结构 |
个人学习笔记:C语言程序结构的更多相关文章
- Objective-C 学习笔记(一) 语言程序结构
Objective-C语言程序结构 “Hello World”简单示例 #import <Foundation/Foundation.h> //预处理命令,它告诉Objective-C语言 ...
- C#学习笔记二:C#程序结构
从最简单的HelloWorld开始入手,这是一个最低限度的C#程序结构. C# Hello World 示例 一个C#程序主要由以下几部分组成: 命名空间声明 一个类 类方法 类属性 一个Main方法 ...
- WP8 学习笔记(002_应用程序结构)
下图是微软官方给出的WP8应用程序执行顺序: 在App.XAML.CS中,有程序主要步骤的函数 // 应用程序启动(例如,从“开始”菜单启动)时执行的代码 // 此代码在重新激活应用程序时不执行 pr ...
- [java学习笔记]java语言核心----面向对象之this关键字
一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理: 代表的是当前对象. this就是所在函数 ...
- IOS学习笔记06---C语言函数
IOS学习笔记06---C语言函数 -------------------------------------------- qq交流群:创梦技术交流群:251572072 ...
- java之jvm学习笔记十三(jvm基本结构)
java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...
- DeepLearning.ai学习笔记(三)结构化机器学习项目--week2机器学习策略(2)
一.进行误差分析 很多时候我们发现训练出来的模型有误差后,就会一股脑的想着法子去减少误差.想法固然好,但是有点headlong~ 这节视频中吴大大介绍了一个比较科学的方法,具体的看下面的例子 还是以猫 ...
- muduo学习笔记(二)Reactor关键结构
目录 muduo学习笔记(二)Reactor关键结构 Reactor简述 什么是Reactor Reactor模型的优缺点 poll简述 poll使用样例 muduo Reactor关键结构 Chan ...
- [java学习笔记]java语言核心----面向对象之构造函数
1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用: 给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...
- Java学习笔记:语言基础
Java学习笔记:语言基础 2014-1-31 最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...
随机推荐
- JAVA基础--环境搭建
概况 系统:win10 企业版 IDE:Eclipse 4.7.3 JDK:jdk1.8.0_171 数据库:SQLServer2012 Oracle,未安装MySQL 安装 JDK与开发工具(Ecl ...
- 为什么学习JavaScript设计模式,因为它是核心
那么什么是设计模式呢?当我们在玩游戏的时候,我们会去追求如何最快地通过,去追求获得已什么高效率的操作获得最好的奖品:下班回家,我们打开手机app查询最便捷的路线去坐车:叫外卖时候,也会找附近最近又实惠 ...
- vuex实现登录状态的存储,未登录状态不允许浏览
基础思路就是使用vuex状态管理来存储登录状态(其实就是存一个值,例如token),然后在路由跳转前进行登录状态的判断,可以使用vue-router的全局前置守卫beforeEach,也可以使用路由独 ...
- java并发编程(一)线程状态 & 线程中断 & 线程间的协作
参考文章: Java线程的5种状态及切换:http://blog.csdn.net/pange1991/article/details/53860651 线程的5种状态: 1. 新建(NEW):新创建 ...
- [Beta]Scrum Meeting#6
github 本次会议项目由PM召开,时间为5月11日晚上10点30分 时长15分钟 任务表格 人员 昨日工作 下一步工作 木鬼 撰写博客整理文档 撰写博客整理文档 swoip 改进界面 为适应新功能 ...
- 响应: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
原vsftpd服务器的系统从centos6.8升级到centos7.2.vsftpd使用yum方式安装,用户采用系统用户登录.由于系统升级到centos7,yum安装的vsftpd版本改变.因此按ce ...
- 大牛总结的MySQL锁优化【转】
MySQL 就是其中之一,它经历了多个版本迭代.数据库锁是 MySQL 数据引擎的一部分,今天我们就一起来学习 MySQL 的数据库锁和它的优化. MySQL 锁分类 当多个事务或者进程访问同一个资源 ...
- arcpy地理处理工具案例教程-将细碎图斑按相同属性或相近属性合并相邻图斑
arcpy地理处理工具案例教程-将细碎图斑按相同属性或相近属性合并到相邻图斑 商务合作,科技咨询,版权转让:向日葵,135-4855_4328,xiexiaokui#qq.com 目的:针对存在的细碎 ...
- 【C++】C++中的类模板
基础的类模板 模板类的继承 内部声明定义普通模板函数和友元模板函数 内部声明友元模板函数+外部定义友元模板函数 声明和定义分别在不同的文件(模板函数.模板友元) C++中有一个重要特性,那就是模板类型 ...
- Centos新服务器需要安装的必备软件包
yum install -y gcc gcc-c++ kernel-devel yum install -y pcre pcre-devel yum install -y zlib zlib-deve ...