C语言入门学习(02)——HelloWorld程序分析&printf函数的用法
接着上一篇 C语言入门学习(01)——C编程环境的搭建及HelloWorld程序 继续
//本文不是最终版本,该教程还在编写整理中。
目录
Part_2.1:HelloWorld程序的解释
搭建好环境之后,我们来仔细分析一下上一节搭建环境时候的写的那几行代码,代码如下:
#include <stdio.h>
int main(void)
{
printf("Hello world!");
return 0;
}
上面代码中第四行的printf("Hello world!");放在后面printf函数的基本用法中解释。剩下的五行代码,要想解释清楚,会涉及到很多的知识点和新的概念名词,并不适合现在讲,等编程有一定的基础了之后再理解这五行代码会很容易。所以这里只告诉大家,这五行代码是后面每段程序都必须要有的,可以理解为是一种固定的格式、一种固定的模板、框架,只要写C语言的程序,首先写好这五行代码,然后在这五行代码的基础上,去加别的东西(比如加一句printf("Hello world!");)。所以这五行代码,暂时不用理解,把它当做写C语言的一种格式和模板即可,随着学习的深入,会逐步解释这五行代码。
即,写C语言程序的模板如下,在今后的很长时间里,写C语言程序都要写先写好这几行代码,然后开始在空行的地方开始写别的代码。
#include <stdio.h>
int main(void)
{
return 0;
}
可以试一下把上面的代码敲一遍,然后单击编译链接按钮,正常情况下,也会弹出一个窗口的,但是没有显示任何内容,截图如下:
这应该算是最简单的C语言程序了,当然要想省还可以把第五行的return 0;和第一行的#include<stdio.h>也都删掉,即花括号里面什么都不写,执行效果也会是上图那样,包括之前的HelloWorld源程序,把return 0;那句删掉,花括号里面只保留一个printf("Hello world!");,程序依然能执行。但是我建议不要去掉这句话,因为去掉之后会显得不专业、不舒服、不完整。当然具体这句话从何而来,以后介绍函数这个概念的时候会提到。
Part_2.2:printf函数的用法
这里只介绍printf函数最简单最基本的用法——输出字符串到屏幕上。
printf("Hello world!");
这行代码是在屏幕上显示了一个字符串—— Hello world!。它是通过调用printf这个库函数实现的,这里提到了一个新的概念——(库)函数。首先简单解释下函数的概念,具体函数这个概念以后会讲到。
还有字符串这个概念,一个英文字母、一个英汉标点符号、一个汉字,这都叫做字符,好多字符连起来,就叫做字符串。
Part_2.2.1:函数概念简介
对于函数可以这样理解:函数是可以帮我们完成一些特定功能的一段代码,比如这个printf函数就帮我们完成了在屏幕上输出一句话的功能。函数可以是自己写的,也可以是别人写好你直接调用的,这是函数的简单概念。
下面这一段内容是对函数的进一步解释,可以简单看一下,能理解多少算多少,现在理解不了也没关系。
函数可以供我们的程序调用,即我们写程序时想实现某个功能,就可以看看有没有现成的函数可以调用,如果有现成的函数可以调用,就直接在我们的程序里调用函数即可实现相关功能。如果没有现成的函数,我们可能就需要自己写函数,然后在我们的程序里调用,以实现相关功能。比如程序想实现在屏幕上输出一句话的功能,就可以直接调用printf函数,并且把要输出的这句话告诉给printf函数,该功能即可实现。但比如程序想实现对一组数字从小到大排序的功能,就没有现成的函数可以调用,需要自己写一个可以实现排序功能的函数,然后调用排序函数并把要排序的这一组数字告诉排序函数,它就能帮你把这组数字排好顺序。
介绍另一个概念——库函数,首先库函数也是函数,库函数是把大家最常用的函数都写好放到一个文件里面,供大家使用的一种方式,库函数所在的文件叫做库文件,如果程序需要使用库函数,那么程序就要把相关的库加载到自己的程序中。比如printf函数就是一个库函数,它被放在stdio.h这个库文件里面,因此如果我们想使用printf函数,就需要在我们的程序里加载stdio.h文件。
这样我们前面的HelloWorld程序第一行代码就可以解释清楚——加载库函数文件stdio.h。C语言中,加载库函数文件的格式如下:
#include<stdio.h>
#include<string.h>
#include<math.h>
上面三行代码演示了加载库文件的格式,三行代码分别加载了三个库函数文件,第一个文件stdio.h大家已经见过了,stdio是“standard buffered input&output (带缓冲的标准输入输出)”的缩写,即这个文件里面放的都是和输入输出相关的函数。第二个库文件叫string.h,string,即字符串,所以这个库文件里面放的函数都是和字符串处理相关的函数。第三个库文件math.h,猜也能猜到这里面放了一堆和数学相关的函数,比如要对一个数开方,取绝对值等一些操作就可以用这个库里面的函数。
Part_2.2.2:用printf函数输出字符串
printf函数的基础用法就是在屏幕上输出字符串,看如下两行代码,猜一下它的执行结果是什么。
#include <stdio.h>
int main(void)
{
printf("Hello world!")
printf(用printf函数输出字符串");
reutrn 0;
}
这应该很好猜吧,当然猜完也要去写一遍验证一下,执行结果如下:
Hello world!用printf函数输出字符串
这段程序告诉告诉我们:printf函数输出的内容即可以是英文字符,也可以是中文字符。
但是上面的输出结果并不是很好看,我们更多时候希望第一次printf输出的内容显示在第一行,第二次用printf函数时输出内容显示在第二行,即我们希望输出是下面这样的格式:
Hello world!
用printf函数输出字符串
为此,我们要学习一个新的东西——回车换行(‘\n’)。
尝试运行一下下面的代码(建议最好不要复制这里的代码,而是自己从头敲一遍):
#include <stdio.h>
int main(void)
{
printf("Hello world!\n")
printf(用printf函数输出字符串");
reutrn 0;
}
还可以再试试下面的两段代码:
#include <stdio.h>
int main(void)
{
printf("Hello world!\n\n");
printf("Hello world!");
return 0;
}
#include <stdio.h>
int main(void)
{
printf("Hello world!\nHello world!\nHello world!\n");
return 0;
}
我就不贴出来结果了,自己对比一下源代码和运行结果,就应该能发现'\n'在的代码中的作用就是将光标移动到下一行的开始位置继续输出剩余内容。上面两段你代码应该没什么难度。
来看一下下面这个有点变态的程序:
#include <stdio.h>
int main(void)
{
printf("n\nnn\nnnn\nnnnn\nnnnnn\n");
return 0;
}
执行结果如下图:
注意红色方框圈出来的部分,表示五个换行符('\n'),其余的字符‘n’都是输出内容了,这段程序主要是想说明编译器是如何识别换行符和普通的字符'n'的——编译器是靠反斜线来区分的,如果printf函数双引号中出现了一个反斜线(‘\’),那编译器就会看下一个字符是不是‘n’,如果是的话,那么编译器就知道在这里要换行了。
小结一下回车换行符('\n')相关内容:
(1)回车换行符用在printf函数中,用于对输出内容的换行进行控制,一个'\n'换一行,两个'\n'换两行。
(2)回车换行符可以出现在printf函数的双引号中的任意位置,其作用都是换行。
Part_2.3 printf函数的练习
1.用printf函数输出如下内容:
*
**
***
****
*****
如果理解了上面那个输出一对字母n的程序,那这个程序应该不是问题吧,答案如下,给出两种解:
#include <stdio.h>
int main(void)
{
printf("*\n**\n***\n****\n*****\n");
return 0;
}
#include <stdio.h>
int main(void)
{
printf("*\n");
printf("**\n");
printf("***\n");
printf("****\n");
printf("*****\n");
return 0;
}