C语言的基本构成

C语言的基本构成

知识点:C语言的注释;关键字;书写风格;常量和变量

重要程度:★★★★

1、C语言的良好风格

用C语言编写的程序,称为C语言源程序,简称C程序。

本节将通过一个简单的C程序例子,向大家介绍C语言的一些基本构成和如何写出风格良好的程序,使读者对C语言有一个初步的认识。

1:计算两个整数之和的C程序

#include  "stdio.h"

main( )                   /*求两数之和*/

{

int a,b,sum;            /*变量说明*/

              a=10;                 /*把整数10赋值给变量a */

              b=20;                 /*把整数20赋值给变量b */

              sum=a+b;              /*把两数之和赋值给变量sum */

              printf("a=%d,b=%d,sum=%d\n",a,b,sum);  /*把计算结果输出到用户屏幕上*/

}

好的风格     1. 花括号独占一行,有对应关系的花括号在同一列;

                       2. 有层次关系的代码有必要的缩进;

                       3. 一条语句独占一行

                       4. 有适当的注释

 

2、关于注释的说明(考点一)

²  程序中以“/*”开头并且以“*/”结尾的部分表示程序的注释部分。

²  注释可以加在程序的任何位置。

²  注释是为了提高程序的可读性而增加的,不属于C语言。

²  /*/*ddddddd*/*/ 这样的注释不是合法的。注释是从“/*“开始到”*/“结束的。以该例为准,属于注释的就是/*  */两个之间的/*ddddddd,所以最后剩下的*/就是多余了。

1: 阅读以下程序,想一想结果是多少?

main( )

{     int a=0,b=0;

a =10;            /*给a赋值                                                         

b=20;              给b赋值 */

printf("a+b=%d\n",a+b);   /*输出计算结果*/

}

这是2006年9月全国计算机等级考试二级考试的第19题。需要特别注意的是,程序第三行“/*”开始的注释部分,直到第四行末尾才结束。因此上面的程序等价于以下的程序:

main( )

{     int a=0,b=0;

a =10;

printf("a+b=%d\n",a+b);

}

 

3、标识符(考试重点)

在C语言中用于标识名字的有效字符序列称为标识符。标识符可以用作常量名、变量名、符号名、函数名和后面要学到的指针名、数组名等。C语言中标识符的命名规则如下:

1)标识符只能由字母、数字和下划线组成;

2)标识符的第一个字符必须是字母或下划线。

3)标识符区分大小写字母。如int与Int是两个完全不同的标识符。

合法的标识符:

a  x  sum  spels  program  ab1   _to   file_5   a1b2c3  _2   B3

非法的标识符:

ab12#            (含有不合法的字符“#”)

a1-c        (含有不合法的字符“-”)

ab c       (空格不是合法标识符)

pr           (“p”不是字母,为不合法标识符字符)

23ab       (第一个字符不能为数字)

C语言的标识符分为如下三类:

1)关键字

关键字是具有特定含义的、专门用来说明C语言特定成分的一类标识符。关键字均由小写字母构成。Int 就不是关键字。

2)预定义标识符

预定义标识符(如printf,scanf,sin,isalum等)和编译预处理命令名(如define,include等)。注意,预定义标识符可以作为“用户标识符”使用。

3)用户标识符(考试重点)

不能是关键字;只能由字母、数字和下划线组成;第一个字符必须是字母或下划线。

Int可以作为用户标识符,int就不可以作为用户标识符。

考点:1. 识别哪些是(或不是)标识符

      2. 识别哪些是(或不是)用户标识符

2: 以下不能定义为用户标识符的是

A) scanf        B) Void       C) _3com_       D) int

分析:本题答案选D。因为int是关键字,关键字不能作为用户标识符。答案(A)的scanf虽然是预定义标识符,但是预定义标识符可以作为用户标识符使用。(B)中Void的第一个字符V大写,它与关键字void是两个不同的标识符,故它可以作为用户标识符。(C)中的_3com_符合标识符的命名规则,且不是关键字,故可以定义为用户标识符。

3:以下不合法的用户标识符是

A)  j2_KEY           B)  Double           C)  4d               D)_8_

分析:本题答案选C。答案(A)是一个用户标识符,符合标识符的命名规则。答案(B)也是用户标识符,需要注意的是,它与关键字double是两个不同的标识符。答案(D)是用户标识符,由数字和下划线组成,且第一个字符为下划线。只有答案(C)是不合法的用户标识符,因为它的第一个字符是数字,不符合标识符的命名规则。

  • 标识符的常见错误:

1. 数字开头

2. 包含减号“-”

3. 用户标识符使用的是关键字

4、常量。

C语言中,还有另外一种常量是用标识符命名的,称为符号常量。下面程序的PI就是符号常量。

4: 计算圆面积的C语言程序

#define  PI  3.14159

main( )

{     float r,area;

r=12.5;

area=PI*r*r;

printf("area=%f\n",area);

}

程序的第一行是宏定义,以后遇到PI就用其后的内容——3.14159来原样替换。这里的PI就是一个符号常量。通常,符号常量用大写字母表示,但这并不是语法上的要求,只不过用大写字母书写符号常量,便于辨认。当进行宏定义后,程序中只要用到相应的数值常量都可以用符号常量代替,这就给程序的修改提供了方便。例如,如果需要进一步提高圆周率的精度,可以直接修改宏定义中的数值常量:

#define  PI  3.1415926

这样,程序中只要用到PI的地方,其值都自动变为3.1415926。

 

5、变量

与常量对应的是变量。顾名思义,变量就是在程序的运行过程中其值可以改变的量。例1中的a,b都是变量,它们是由用户定义的标识符,变量的命名必须遵循标识符的命名规则。

用盒子的理论来描述:

1) 变量就是盒子,里面装的内容可以改变。

2) 通过赋值语句就可以改变盒子里的内容。

3) 每次使用盒子时,盒子里都应该有确切的内容而不能是不确定的值。

4) 每次使用盒子时,都是用的现在盒子里装的内容。以前装过什么内容没有任何影响。

转载于:https://www.cnblogs.com/zhugeanran/p/8424555.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android.View.InflateException: Binary XML File Line #异常的解决

这个运行错误,主要出现在安卓系统5.0一下手机系统。在5.0以上手机系统,不会出现这个错误 错误如下:在引入自定义VIEW时报错 原因:资源文件shape_new_message.xml在drawable-v24文件夹下,而不在drawable文件夹下 解决…

shiro 角色与权限的解读

1、为什么 shiro 有了《角色》后,还要设置《角色权限》呢?(问题) 思考:设置好角色了,那么就代表什么操作都可以执行了吗? 理解:如果上边回答是的话,那么只是《角色》层次…

Android添加Header请求参数实例,java响应header请求实现demo

1、首先添加AsyncHttpClient.jar包到libs文件夹下 2、初始化请求类以及响应回调类 private AsyncHttpClient client; private AsyncHttpResponseHandler asyncHttpResponseHandler; 3、网络权限 <!-- 网络链接 --> <uses-permission android:name"android.perm…

代码整洁之道pdf

下载地址&#xff1a;网盘下载内容简介 《代码整洁之道(英文版)》提出一种观念&#xff1a;代码质量与其整洁度成正比。干净的代码&#xff0c;既在质量上较为可靠&#xff0c;也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者&#xff0c;《代码整洁之道(英文版)…

苹果 ios 微信浏览器界面 ajax 提交带 file 的 form 总是走error方法

1. 问题 问题出在微信端&#xff0c;而且是苹果机的微信端(苹果你咋这么矫情&#xff0c;安卓正常).&#xff1b;代码还是之前的代码&#xff0c;貌似是苹果升级系统后部分版本出现的 BUG&#xff0c;后来证明确实跟 ios 版本有关&#xff0c;网上也找过类似的解决措施&#xf…

前端学习(2748):uniapp创建项目和演示

1创建项目 2运行项目 3配置在微信小程序注意 配置路径 4注意开启端口号

HttpServletResponse.getWriter().print乱码,request.getHeader乱码,解决方法

1、添加响应类型即可 //这句话的意思&#xff0c;是让浏览器用utf8来解析返回的数据 response.setHeader("Content-type", "text/html;charsetUTF-8"); 添加前后&#xff1a; 如果是header参数乱码&#xff0c;解决方法如下&#xff1a; HTTP H…

设计图与html 对比

简易打开旧版火狐 网页版火狐添加组件 新版有时也会没有 谷歌是腾讯的转载于:https://www.cnblogs.com/byksj/p/8426291.html

jsr-303 参数校验-学习(转)

1、是什么&#xff1f; JSR303 是一套 JavaBean 参数校验的标准&#xff0c;它定义了很多常用的校验注解&#xff0c;比如&#xff1a;------------------------------------------------- NotNull(message"名字不能为空") private String userName; Max(value90,mes…

URLEncoder 、URLDecoder 对中文转码解码使用

URLEncoder 、URLDecoder 转码解码使用 传递参数&#xff0c;转码传递 String encodeStr null; try { encodeStr URLEncoder.encode("aabb22中国", "utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } System.out.pr…

SQLServer DBA 三十问(加强版)

SQLServer DBA 三十问&#xff08;加强版&#xff09; 原文链接&#xff1a;http://www.cnblogs.com/fygh/p/3288701.html距离最初发布SQLServer DBA 三十问 已有一年多了&#xff0c;大家对其中的某些问题讨论比较激烈&#xff0c;要回答出来这些问题需要比较扎实的SQLServer …

jsr-303 参数校验—自定义校验注解

1、为什么要自定义&#xff1f; 通过上篇学习&#xff0c;了解到很多常用注解了&#xff0c;但是呢&#xff0c;总是有那么些需求....2、案例分析(手机号格式) 2.1、需要验证的实体 Bean public class LoginVo {NotNullIsMobile //自定义的注解private String mobile;NotNullLe…

关于Apache Tomcat解决localhost was unable to start within 45 seconds

关于重装myeclipse启动服务超时问题解决方法&#xff1a; 1.打开安装或解压了Tomcat的根目录 &#xff08;1&#xff09;temp&#xff08;项目临时缓存文件&#xff09; 里面的文件全部删除&#xff0c;不要犹豫&#xff0c;这是之前在对项目进行操作的时候&#xff0c;所产生…

[译]SQL SERVER 2016 – Temporal Tables

原文 Temporal Table是SQL Server2016的新特性。能存储你表里面任意时间点的数据信息。 换句话说&#xff0c;如果你针对一张表执行任何更新或者删除操作&#xff0c;老数据会被新数据覆盖&#xff0c;下次查询的时候是查的最新的数据&#xff0c;但如果使用了temporal table你…

拦截器、过滤器、@Aspect 区别

1、需求场景 之前也有在文章写道 “拦截器\过滤器" 的区别&#xff0c;文章链接&#xff0c;在实际开发过程中&#xff0c;我们可能会遇到拦截请求参数的需求&#xff0c;在这我举个场景。某一个接口的请求参数都是加密的&#xff0c;而请求参中还有一些跟业务无关的数据&…

工作231:给input动态赋值

这个应该是不可以的&#xff0c;必须重新使用用文件对话框选择。 这是处于安全的考虑&#xff0c;不能直接对input typefile的类型赋值&#xff0c;因为直接用JS就可以将你本地文件直接取到指定地点&#xff0c;就没有安全性可言。 因此必须对一个input typefile设置一个按钮来…