简单的C语言程序示例

//2.1 first.c
#include <stdio.h>    //预处理指令(#define 也是预处理指令)
int main(void)      //main()总是第一个被调用的函数
{                   //函数体开始int num;     //声明num = 1;       //赋值printf("I am a simple");      //调用printf()函数printf("computer.\n");          // \n 指的是换行printf("My favourite number is %d because it is first.\n", num);   //%d 是输出十进制的数字return 0;     //return 语句
}                   //结束

程序细节

1.#include 指令和头文件

#include <stdio.h>

作用:相当于把stdio.h文件中的所有内容都输入到该行所在的位置
#include这行代码是一条C预处理器指令。通常,C编译器在编译前会对源代码做一些准备工作,即预处理
stdio.h :标准输入输出头文件
通常,在C程序顶部的信息集合被称为头文件,头文件帮助编译器把你的程序正确地组合在一起。

2.main()函数

int main(void)

C程序一定从main()函数开始执行(不考虑例外),int 是main()函数的返回类型

3.注释

/**/存在潜在问题,不能嵌套
//注释单行

4.花括号、函数体和块

所有的C函数都使用花括号标记函数体的开始和结束
花括号还可用于把函数中的多条语句合并为一个单元或块

5.声明

int num;

声明完成了两件事
1.在函数中有一个名为num的变量
2.int表明num是一个整数
int是一种数据类型,编译器使用这些信息为num变量在内存中分配存储空间
int是C语言的一个关键字,表示一种基本的C语言数据类型
num是一个标识符,也就一个变量、函数或其他实体的名称
声明把特定标识符与计算机内存中的特定位置联系起来,同时也确定了储存在某位置的信息类型或数据类型

数据类型

C 语言可以处理多种类型的数据,把变量声明为整型或字符类型,计算机才能正确地储存、读取和解释数据

命名

给变量命名时要使用有意义的变量名或标识符,如果变量名无法清楚地表达自身的用途,可在注释中进一步说明
可以用小写字母、大写字母、数字和下划线(_)来命名。而且,名称的第1个字符必须是字符或下划线,不能是数字
操作系统和C库经常使用以一个或两个下划线字符开始的标识符,因此最好避免在自己的程序中使用这种名称

声明变量的4个理由

1.把所有的变量放在一处,方便读者查找和理解程序的用途。如果变量名无法表述清楚,在注释中解释变量的含义。这种方法让程序的可读性更高。
2.声明变量会促使你在编写程序之前做一些计划
3.声明变量有助于发现隐藏在程序中的小错误,如变量名拼写错误,如数字1和字母l
4.如果事先未声明变量,C程序将无法通过编译

6.赋值

num = 1;

声明时,编译器在计算机内存中为变量num预留了空间,然后在执行这行赋值表达式语句时,把值储存在之前预留的位置
可以给num赋不同的值,这就是num之所以被称为变量的原因
该赋值表达式语句从右侧把值赋到左侧

7.printf()函数

printf("I am a simple");
printf("computer.\n");
printf("My favourite number is %d because it is first.\n", num);

圆括号表明printf是一个函数名,圆括号中的内容是从main()函数传递给printf()函数的信息
第1行的I am a simple是函数的实际参数。
调用函数, 只需输入函数名,把所需的参数填入圆括号即可。当程序运行到这一行时,控制权被转给已命名的函数,函数执行结束后,控制权被返回至主调函数。
第2行的\n代表一个换行符,打印换行符的效果与按下Enter 键相同,但如果直接按下Enter键,编辑器会退出当前行并开始新的一行,而换行符仅会影响程序输出的显示格式。
第3行的%d相当于是一个占位符,其作用是指明输出num值的位置,%提醒程序,d表明把变量作为十进制整数打印
printf()函数名中的 f 提醒用户,这是一种格式化打印函数

8.return 语句

return 0;

int main(void)中的int 表明main()函数应返回一个整数,有返回值的函数要有return语句,该语句以return 关键字开始,后面是待返回的值,并以分号结尾

简单程序的结构

程序由一个或多个函数组成,必须有main()函数。函数由函数头和函数体组成。函数头包括函数名、传入该函数的信息类型和函数的返回类型。通过函数名后的圆括号可识别出函数,圆括号里可能为空,可能有参数。函数体被花括号括起来,由一系列语句、声明组成。

提高程序可读性的技巧

选择有意义的函数名和写注释
如果变量名是width,就不必写注释说明该变量表示宽度,但是如果变量名是video_routine_4,就要解释一下该变量名的含义。
在函数中用空行分隔概念上的多个部分。
每条语句各占一行。

进一步使用C

//fathm_ft.c--把2音寻转换成英寸
#include <stdio.h>
int main(void)
{int feet, fathoms;fathoms = 2;feet = 6 * fathoms;printf("There are %d feet in %d fathmos!\n", feet, fathoms);printf("Yes, I said %d feet!\n", 6 * fathoms);return 0;
}

多个函数

//two_func.c  一个文件中包含两个函数
#include <stdio.h>
void butler(void);//ANSI/ISO函数原型
int main(void)
{printf("I will summon the butler function.\n");butler();printf("Yes. Bring me some tea and writeable DVDs.\n");return 0;
}
void butler(void)//函数定义开始
{printf("You rang, sir?\n");
}

butler()函数出现3次,
第一次是函数原型,告知编译器在程序中要使用该函数,函数原型指明了函数的属性。butler()函数的第一个void表明butler()函数没有返回值,第二个void表明butler()函数不带参数。
第二次是函数调用,在main()函数中调用butler()很简单,写出函数名和圆括号即可。
第三次是函数定义,其形式和main()函数相同,都包含函数头和用花括号括起来的函数体。

调试程序

//nogood.c  有错误的程序
#include <stdio.h>
int main(void)
{int n, n2, n3;//该程序有一个语义错误n = 5; n2 = n * n;n3 = n2 * n2;printf("n = %d,n squared = %d,n cubed = %d\n", n, n2, n3);return 0;
}

n3得到的值是n的四次方,但 n cubed 表示的是n的立方,语义错误

关键字和保留标识符

关键字不能用做标识符(如,变量名)
对于保留标识符,C语言已经指定了他们的用途或保留他们的使用权,不能随便使用。

编程练习

#include <stdio.h>
int main(void)
{printf("Gustav Mahler\n");printf("Gustav \nMahler\n");printf("Gustav ");printf("Mahler\n");return 0;
}
#include <stdio.h>
int main(void)
{int age = 20;printf("age: %d\n", age);printf("days: %d\n", age * 365);return 0;
}
#include <stdio.h>
void jolly(void);
void deny(void);
int main(void)
{jolly();jolly();jolly();deny();return 0;
}
void jolly(void)
{printf("For he's a jolly good fellow!\n");
}
void deny(void)
{printf("Which nobody can deny!\n");
}
#include <stdio.h>
void br(void);
void ci(void);
int main(void)
{br();printf(",");ic();printf("\n");ic();printf(",");printf("\n");br();return 0;
}
void br(void)
{printf("Brazil, Russia");
}
void ic(void)
{printf("India, China");
}
#include <stdio.h>
int main(void)
{int toes = 10;printf("toes: %d\n", toes);printf("toes squared: %d\n", toes * toes);printf("double toes : %d\n", toes * 2);return 0;
}
#include <stdio.h>
void smile(void);
int main(void)
{smile();smile();smile();printf("\n");smile();smile();printf("\n");smile();return 0;
}
void smile(void)
{printf("Smile!");
}
#include <stdio.h>
void one_three(void);
void two(void);
int main(void)
{printf("starting now:\n");one_three();printf("done!\n");return 0;
}
void one_three(void)
{printf("one\n");two();printf("three\n");
}
void two(void)
{printf("two\n");
}

读书记录,欢迎指正

C Prime Plus 第二章 C语言概述相关推荐

  1. 《C Primer Plus》第二章——C语言概述(程序示例与解释,提高程序可读性,函数的定义与使用,调试,关键字,复习题与编程练习)

    文章目录 第二章-C语言概述 本章内容 简单的C程序示例 示例解释 快速概要 程序细节 简单程序的结构 提高程序可读性的技巧 进一步使用C 多个函数 调试程序 语法错误 语义错误 程序状态 关键字和保 ...

  2. c语言编译器能不能找出逻辑错误,《C Primer Plus》- 第二章 C语言概述

    本笔记写于2020年1月27日. 本系列文章参考的是<C Primer Plus>(第六版),其中里面会有笔者自己的相关补充. 以下示例均运行于macOS Catalina 10.15.2 ...

  3. 【Java基础系列教程】第二章 Java语言概述、配置环境变量

    一.计算机编程语言概述 1.1 语言 语言(英文:Language)是人类进行沟通交流的表达方式.例如:中国人与中国人用普通话沟通.而中国人要和英国人交流,就要学习英语.              语 ...

  4. C Primer Plus 第02章 C语言概述 学习笔记及复习题、编程题解答

    第二章 C语言概述 1. 解析第一个C程序 一个基本的程序结构包含如下部分: #include<stdio.h> // 包含另一个文件,C编译器软件包的标准部分,提供键盘输入和屏幕输出的支 ...

  5. 第1章 Java语言概述

    第1章 Java语言概述 声明 0. Java语言应用场景 1. 软件开发介绍 2. 计算机编程语言介绍 3. Java语言概述 4. Java程序运行机制及运行过程 5. Java的环境搭建  5. ...

  6. c语言i=5.6a=(int)i,第一章C语言概述.ppt

    <第一章C语言概述.ppt>由会员分享,可在线阅读,更多相关<第一章C语言概述.ppt(35页珍藏版)>请在人人文库网上搜索. 1.C语言程序设计,课程安排和理论教学:(419 ...

  7. c语言从键盘输入千米数,第二章 C语言编程基础.ppt

    第二章 C语言编程基础 习题2 P51-7.8.13.14.16 2.4.8break 语句和continue语句 [例2.19] 输出100 - 200 之间不能被3整除的数. P44 2.4.9循 ...

  8. vc 运行c语言步骤,第1章_C语言概述(vc++环境如何运行c语言程序)[精选].ppt

    第1章_C语言概述(vc环境如何运行c语言程序)[精选] C语言程序设计 授课对象:电子商务06 时间安排: 理论课(1-9周): 星期一 5-6节 9407D 星期三 5-6节 9410D 实验课( ...

  9. Web前端开发笔记——第二章 HTML语言 第四节 超链接标签

    目录 前言 一.超链接标签 (一)链接其它子网页 (二)链接其它站点 (三)虚拟超链接 二.从当前页面链接到指定位置 三.链接的访问情况 四.在新窗口中打开链接 例题 结语 前言 本节介绍超链接标签即 ...

最新文章

  1. perl学习之(not install YAML)解决
  2. python3(六)监督学习
  3. springboot使用mongodb
  4. CodeForces 484B Maximum Value
  5. win10安装Unbuntu的Linux系统的虚拟机02
  6. linux下oracle imp,oracle中imp命令Linux下使用
  7. 2014 史丰收速算
  8. python解析库 爬虫_Python-爬虫-解析库(Beautiful Soup)的使用
  9. 六度分离(Floyd算法)
  10. 手机更换证件照背景色只需1分钟,别去打印店花冤枉钱了
  11. 【YBT2023寒假Day11 B】催眠大师(费用流)
  12. 施主,贫僧乃东土大唐而来,恳请在此借宿一晚……...
  13. 如何将本地项目上传到gitee仓库里
  14. sso单点登录与Jsonp
  15. (转)程序员成功之路 ——The road ahead for programmer(演讲稿)
  16. 谷歌浏览器,无需安装
  17. ssm基于BS架构的校园爱心捐赠与物品交换平台的设计与实现毕业设计源码
  18. 如何配置java环境变量?
  19. 【一周头条盘点】中国软件网(2018.12.17~2018.12.21)
  20. 2022江苏最新建筑八大员(资料员)模拟考试试题及答案解析

热门文章

  1. [架构之路-181]-《软考-系统分析师》-19- 系统可靠性分析与设计 - 2-容错性: 软件容错技术
  2. 华硕z170a如何开启m2_华硕z170主板装win7教程及BIOS设置
  3. scala学习之scala中一些集合的常用函数
  4. Netty in Action 读书
  5. Compound学习(二) 简单部署
  6. CAD制图初学入门教程之立剖网格
  7. 给力回馈!亲~时间有限哦!
  8. 专访王颖泽:国产数据库开源之路如何可控?
  9. 如何 修炼 软件测试这门 手艺
  10. 织梦php实现评论,织梦文章评论功能的使用