#include <stdio.h>
int main(void)
/*一个简单的c程序*/
{
int num;
num = 1;
printf(" I am a simple");
printf("computer.\n");
printf("My favorite number is %d because it is first.\n",num);
return 0;
}
一、内容分析:
#include <stdio.h>
#include
语句是C预处理器指令的一个例子。(C编译器在编译前要对源代码做一些准备工作,这称为预处理)- 文件
stdio.h
是所有C语言编译包的一个标准部分。它包含了有关输入和输出函数(例如printf()
)的信息以供编译器使用。
在C世界中,人们称出现在文件顶部的信息集合为头,C实现通常都带有许多头文件。头文件可以定义常量,或者说明函数名以及该函数如何使用。但是函数的实际代码被包含在一个预编译代码的库文件中。
ISO/ANSI C已经对必须提供哪些头文件制定了标准。有些程序需要包含
stdio.h
而有些则不需要。一个具体C实现的文档应该包括对C函数库中函数的描述。这些描述指出了函数所需的头文件。例如,对printf()
的描述指明需要使用stdio.h
。
该语句的作用相当于您在文件中该行所在的位置键入了文件stdio.h
的完整内容。实际上,它是一种剪切和粘贴操作,这样可以方便地在多个程序间共享公用的信息。
int main(void)
C程序中包含一个或多个函数,它们是C程序的基本模块。上面这个程序包含一个名为函数。
- 圆括号表明main()是一个函数的名字
- int表示main()函数返回一个整数
- void表示main()函数不接受任何参数
一个项目只能有一个主函数(即main),主函数是应用程序的接口。
最基本的程序就是一个主函数。
主函数的标准(C99)形式:
//第一种:
int main(void);
{
return 0;
}
//第二种:
int main(int argc, char*argv[])
{
return 0;
}
其他形式:
int main()//C++标准形式
{
return 0;
}
main()//C89
{
}
void main()//不提倡
{
}
/*一个简单的c程序*/
包含在/**/
或者//
之间的部分是程序注释。使用注释的目的是使人们更容易理解程序。
编译器将直接忽略注释,不予解析。
{
代表组成函数的语句的开始
int num
程序中的这一行叫做声明语句,声明两件事情:
- 在函数中您有一个名为num的变量
- int说明num是一个整数
变量:数据在程序运行过程中可能变化或被赋值,这称为变量。
常量:有些数据可以在程序使用之前预先设定并在整个运行过程中没有变化,这称为常量。
编译器使用这个信息为变量num在内存中分配一个合适的存储空间。
- 单词int是C语言的一个关键字,它代表C中最基本的一个数据类型。关键字是用来表达语言的单词,不能将它们用于其他目的。还有一个不该用的其他字符叫保留标识符。
- 单词num是一个标识符(identifier),也就是您为一个变量、函数或其他实体所选的名字
关键字列表:
- 数据类型关键字(12个)
char,short,int, long,float,double,unsigned,signed,struct,union,enum,void
- 控制语句关键字:(12个)
if,else,switch, case, default,for, do, while, break,continue,goto,return
- 存储类关键字:(5个)
auto,extern,register,static,const
- 其他关键字:
sizeof,typedef,volatile,_Complex , _Imaginary, _Alignas, _Alignof, _Static_assert , _Noreturn,_Bool,_Generic
num = 1
这行程序是一个赋值语句。
意思是“把值1赋给变量num”。
前面的 int num;
语句在计算机内存中为变量num分配了空间,该赋值语句在那个地方为变量存储了一个值。
printf(" I am a simple")
一个函数调用语句。
printf()
是C标准库的一部分,是一个函数。
在vs中,选中printf
并点击鼠标右键选中转到定义,可查看stdio
文件中对它的描述。
一般来说,printf
是stdio
定义的,所以要引入stdio
文件,如果未引入,测试时会报出警告,但仍能继续执行,这是因为printf
是内建函数(编译器给一些非常常用的函数设置的)
圆括号表明printf是一个函数名。
圆括号中包括的内容是从函数main()
传递到函数printf()
的信息。
I am a simple
在双引号中,被称为实际参数,会原封不动的输出在屏幕上。
❓printf是如何处理这个参数的?
程序将识别括号之间的内容并把他们显示在屏幕上。
🎈有关数据输入输出的概念
所谓输入输出是以计算机主机为主体而言的
- 从计算机向输出设备(如显示器、打印机等)输出数据称为输出
- 从输入设备(如键盘、磁盘、光盘、扫描仪等)向计算机输入数据称为输入
printf("computer.\n")
\n
意味着“在下一行的最左边开始新的一行,是一个换行符,属于转义字符
printf("My favorite number is %d because it is first.\n",num)
%d
是一个占位符,其作用是指出输出num值的位置,以十进制输出。
%0:八进制
%x:十六进制
%X:大写的十六进制
%告诉程序把一个变量在这个位置输出,d告诉程序将输出一个十进制整数变量。
return 0
一个返回语句。
带有返回值的C语言函数(这里是main函数)要使用一个return语句,该语句包括关键字return,后面紧跟着要返回的值。
}
标志函数的结束。
二、结构分析
程序由一个或多个函数组成,其中必须有一个名为main()
的函数。
每个函数都用来实现一个或几个特定功能。被调用的函数可以是库函数,也可以是自己编制设计的函数
函数的描述由函数头和函数体组成。
- 函数头包括预处理语句(如#include)和函数名。可以通过圆括号识别一个函数名,圆括号里面可能是空的
- 函数体位于花括号中并由一系列语句组成,每个语句以一个分号结束。可以是空函数。
- 该例子包含四种语句:
- 声明语句:指出所使用的变量名和类型
- 赋值语句:给变量赋一个值
- 输出语句:每一句都调用了
printf()
函数 - 返回语句:return
每一个C语句都是针对计算机的指令,并以一个分号作为结束标志。
一个程序主要包括以下两方面的信息:
①对数据的描述。【数据结构】在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式。
②对操作的描述。【算法】即要求计算机进行计算的步骤
程序 = 算法 + 数据结构
一个程序除了算法和数据结构这主要要素外,还应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言表示。
算法、数据结构、程序设计方法和语言工具是一个程序设计人员应具备的知识。
三、增强程序可读性
-
使用有意义的变量名
-
使用注释;程序在开始时作注释,说明文件的名称和程序的目的。
-
使用空行分隔一个函数的概念上的多个部分
-
每个语句用一行
四、程序调试
写完程序,有时会出现错误,此时一般有
-
语法错误
例如:注释少了结束的*/;该用花括号用成了圆括号;少写了分号;使用了关键字当标识符
-
语义错误
程序中的语义错误只有在编译完成之后才能从程序的行为中表现出来。
例如:想n的三次方,写成n3
-
程序状态
error:如果输入程序的过程中出现error错误,比如少了一个分号,编译器会给出语法错误消息。错误消息表明程序中存在错误,不能对其编译。warning:即使输入正确,编译器还可能发出像这样的警告(warning),比如从double类型转换为float类型时有可能丢失数据。警告则表明尽管代码正确但有可能不是程序员所要的。警告不终止编译。
在编译完成之后才能从程序的行为中表现出来。
例如:想n的三次方,写成n3