思维导图:
2024/6/20补充
说实在的这本书根本没有说该如何使用软件理论化过强或许是他被喷的主要原因:接下来你们可以参考鹏哥C语言的教程开始我们的第一个C程序
1.4 最简单的C语言程序
为了使用C语言编写程序,必须了解C语言,并且能熟练地使用C语言。本书将由浅入深地介绍怎样阅读C语言程序和使用C语言编写程序。
1.4.1 最简单的C语言程序举例
下面介绍几个最简单的C语言程序。
【例1.1】要求在屏幕上输出以下一行信息
This is a C program.
解题思路
在主函数中用printf函数原样输出以上文字。
编写程序
#include <stdio.h> // 这是编译预处理指令
int main() // 定义主函数
{
printf ("This is a C program.\n"); // 输出所指定的一行信息
return 0; // 函数执行完毕时返回函数值0
} // 函数结束的标志
运行结果
This is a C program.
Press any key to continue-
以上运行结果是在Visual C++ 6.0环境下运行程序时屏幕上得到的显示。第一行是程序运行后输出的结果,第二行是Visual C++ 6.0系统在输出完运行结果后自动输出的一行信息,告诉用户“如果想继续进行下一步,请按任意键”。当用户按任意键后,屏幕上不再显示运行结果,而返回程序窗口,以便进行下一步工作(如修改程序)。
程序分析
-
函数和返回值:
main
是函数的名字,表示“主函数”,main
前面的int
表示此函数的类型是int
类型(整型)。在执行主函数后会得到一个值(即函数值),其值为整型。程序中return 0;
的作用是:当main
函数执行结束前将整数0作为函数值返回到调用函数处。每一个C语言程序都必须有一个main
函数。函数体由花括号{}
括起来。 -
输出语句: 本例中主函数内有两个语句,程序第4行是一个输出语句,
printf
是C编译系统提供的函数库中的输出函数。printf
函数中双引号内的字符串"This is a C program."
按原样输出。\n
是换行符,即在输出"This is a C program."
后,显示屏上的光标位置移到下一行的开头。这个光标位置称为输出的当前位置,即下一个输出的字符出现在此位置上。每个语句最后都有一个分号,表示语句结束。 -
包含头文件: 在使用函数库中的输入输出函数时,编译系统要求程序提供有关此函数的信息(例如对输入输出函数的声明和宏的定义、全局量的定义等),程序第1行
#include <stdio.h>
的作用就是用来提供这些信息的。stdio.h
是系统提供的一个文件名,stdio
是standard input & output的缩写,文件后缀.h
的意思是头文件(header file),因为这些文件都是放在程序各文件模块的开头的。输入输出函数的相关信息已事先放在stdio.h
文件中。现在,用#include
指令把这些信息调入供使用。如果没有此#include
指令,就不可能执行printf
函数。 -
注释: 在以上程序各行的右侧,如果有
//
,则表示从此处到本行结束是“注释”,用来对程序有关部分进行必要的说明。在写C程序时应当多用注释,以方便自己和别人理解程序各部分的作用。在程序进行预编译处理时将每个注释替换为一个空格,因此在编译时注释部分不产生目标代码,注释对运行不起作用。注释只是给人看的,而不是让计算机执行的。
【例1.2】求两个整数之和
本例演示了如何计算两个整数的和,并在屏幕上显示结果。
解题思路
程序设置3个变量:a
和 b
用来存放两个整数,sum
用来存放它们的和。我们使用赋值运算符 =
来将 a + b
的结果赋值给 sum
。
编写程序
#include <stdio.h> // 这是编译预处理指令
int main() // 定义主函数
{
int a, b, sum; // 定义a, b, sum为整型变量
a = 123; // 对变量a赋值
b = 456; // 对变量b赋值
sum = a + b; // 进行a+b的运算,并把结果存放在变量sum中
printf("sum is %d\n", sum); // 输出结果
return 0; // 函数执行完毕时返回函数值0
} // 函数结束
运行结果
sum is 579
程序执行后会在屏幕上输出计算的结果,然后换行,程序执行结束。
程序分析
本程序的主要任务是计算两个整数 a
和 b
之和。程序开始时通过声明部分定义了三个整型(int
)变量:a
、b
、和 sum
。接下来,a
和 b
被分别赋值为 123
和 456
,然后 sum
保存了 a
和 b
的和。在第8行,程序通过 printf
函数输出结果,这个 printf
函数的圆括号内有两个参数。第一个参数是包含要输出的文本和格式指定符(%d
)的字符串,其中 %d
指定了输出格式为十进制整数。printf
函数在执行时会将 %d
替换为变量 sum
的值,即两个数的和。因此,输出的结果是 "sum is 579",随后通过 \n
换行符来换行,标志着程序的正常结束。
通过这个例子,我们不仅看到了变量声明和基本的算术运算,还学习了如何使用格式化输出来展示程序的运行结果。这些都是学习C语言编程时的基础知识点。
【例1.2】求两个整数之和
本例演示了如何计算两个整数的和,并在屏幕上显示结果。
解题思路
程序设置3个变量:a
和 b
用来存放两个整数,sum
用来存放它们的和。我们使用赋值运算符 =
来将 a + b
的结果赋值给 sum
。
编写程序
#include <stdio.h> // 这是编译预处理指令
int main() // 定义主函数
{
int a, b, sum; // 定义a, b, sum为整型变量
a = 123; // 对变量a赋值
b = 456; // 对变量b赋值
sum = a + b; // 进行a+b的运算,并把结果存放在变量sum中
printf("sum is %d\n", sum); // 输出结果
return 0; // 函数执行完毕时返回函数值0
} // 函数结束
运行结果
解题思路
在解决这个问题之前,让我们首先了解基本的编程组件。编写一个程序以计算两个整数之和,我们需要明确几个核心要素:变量的定义、赋值语句的使用、以及结果的输出。
-
变量定义:在程序的开始,我们通过声明变量为整型(int),为存放整数和它们的和提供了空间。这里,变量
a
和b
用于存放两个整数,而变量sum
用于存放这两个整数的和。 -
赋值语句:接下来,我们通过赋值语句将特定的值赋给
a
和b
。在本例中,a
被赋值为123,b
被赋值为456。这个步骤是程序的关键,它为计算过程提供了输入。 -
计算和输出:通过一个简单的加法表达式
a+b
,我们将两个数的和赋值给sum
。随后,使用printf
函数,我们将计算结果输出到屏幕。在输出格式字符串中,%d
是一个占位符,用于指定输出格式——在这个例子中,它被替换成了变量sum
的值。
程序分析
程序的结构呈现出清晰的逻辑顺序,从变量的定义开始,到最终的结果输出,每一步都紧密相连,共同完成了一个简单任务的执行。通过对这个过程的分析,我们不仅学会了如何在程序中实现基础算法,还了解了编程语言如C语言中函数和变量的基本用法。
此外,printf
函数的使用也展示了格式化输出的概念,即如何以特定的格式向用户展示结果。这是编程中一个重要的概念,它使得程序的输出更加灵活和用户友好。
总结
通过分析这个简单的例子,我们可以看到,即使是最基础的程序,也蕴含着编程思维的基石:如何使用变量存储数据,如何通过赋值和算术操作处理数据,以及如何输出结果以供用户查看。这些概念构成了编程的基本框架,无论是面对简单还是复杂的问题,这些基础都是必不可少的。
【例1.3】求两个整数中的较大者
本节示例演示如何定义一个函数来找出两个整数中的较大者,并在主函数中调用此函数显示结果。
解题思路
通过定义一个 max
函数来实现求两个整数中较大者的功能。在 main
函数中调用 max
函数并输出其返回值。
编写程序
#include <stdio.h>
int max(int x, int y); // 对被调用函数max的声明
int main()
{
int a, b, c;
scanf("%d,%d", &a, &b);
c = max(a, b);
printf("max=%d\n", c);
return 0;
}
int max(int x, int y)
{
int z;
if(x > y) z = x;
else z = y;
return(z);
}
程序分析
本文旨在探讨一个经典的编程问题:如何在两个整数中找到较大者。此问题虽然简单,但却是学习编程和算法思维的绝佳起点。通过解决这一问题,我们可以深入理解函数的概念、参数的传递、以及条件判断的使用,这些都是编程中的基础知识点。
解题思路
解决这个问题的关键在于使用一个函数来比较两个整数的大小,并返回较大的那个整数。这里,我们创建了一个名为max
的函数,它接受两个整型参数,比较这两个参数,然后返回较大的值。在主函数main
中,我们调用这个max
函数,并将结果输出。
程序结构
程序的结构主要分为两部分:主函数main
和辅助函数max
。
-
主函数(main):主函数是程序的入口点。在这里,我们定义了三个整型变量
a
,b
,和c
,用于存储输入的两个整数及其比较结果。通过scanf
函数读取用户输入的两个整数,并将这两个整数作为实参传递给max
函数。max
函数的返回值赋给变量c
,最后,我们输出c
的值,即两个整数中的较大者。 -
辅助函数(max):
max
函数接受两个整型参数x
和y
,并返回它们中的较大值。在函数内部,我们使用了一个简单的if-else
语句来比较x
和y
的值。根据比较结果,函数返回x
或y
中的较大值。
函数声明
在C语言中,如果一个函数在被调用前未被定义,那么就需要在调用前声明这个函数。这就是为什么我们在主函数main
的开始处看到了max
函数的声明。这个声明告诉编译器max
函数的存在,其接受两个int
类型的参数,并返回一个int
类型的值。
程序分析
通过这个程序,我们可以看到函数调用、参数传递和返回值的基本概念。max
函数的设计展示了如何将一个具体的任务封装成一个独立的功能模块,这样的封装不仅使得代码更加易于理解和维护,还能在其他场景下重复使用该功能。
此外,通过if-else
语句的使用,我们见识到了基本的条件判断逻辑。这是编程中一个非常重要的概念,几乎所有的程序都会用到条件判断。
1.4.2 C语言程序的结构(这一部分其实就是在告诉我们读者一个标准的C程序的结构该如何去写程序)
通过初步接触C语言编程,我们已经看到了C语言程序的基本构成。从简单的输出一行文字到计算两个整数的和,再到求两个整数中的较大者,这些例子逐步展示了C语言程序的基础结构和功能。现在,我们将深入探讨C语言程序的结构,理解其组成部分及其作用。
C语言程序的基本结构
C语言程序的结构具有以下几个特点:
1. 程序的组成
- 一个C语言程序可以由一个或多个源程序文件组成。小型程序可能仅包括一个源文件,如例1.1和例1.2。例1.3虽然包含两个函数,但同样属于单一源文件。
2. 源文件的结构
一个源程序文件主要包含三个部分:
预处理指令
- 如
#include<stdio.h>
,它们在编译前由预处理器处理,如将头文件的内容插入到程序中。
全局声明
- 在函数外部进行的变量声明,这些变量在整个文件中都是有效的。全局变量可以被文件中的所有函数访问,而局部变量仅在声明它们的函数内有效。
函数定义
- 定义程序中的各个函数,指定它们的功能。程序中几乎所有的工作都由这些函数完成。
3. 函数的重要性
- 函数是C程序的核心,每个函数实现特定的功能。良好设计的程序会包含多个功能明确的函数。
4. 函数结构
每个函数包含两部分:
函数首部
- 定义了函数的名字、类型、属性和参数等。
函数体
- 包含声明部分和执行部分,指定了函数内进行的操作。
5. 程序的执行入口
- 程序总是从
main
函数开始执行,无论main
函数在文件中的位置如何。
6. 程序操作的实现
- 程序中的操作,如赋值、输入输出,都是通过C语句在函数内完成的。
7. 书写格式的灵活性
- C语言允许在一行内写多个语句,或将一个语句分布在多行上,但通常为了清晰,建议每行写一个语句。
8. 分号的必要性
- 每个声明和语句的末尾必须有分号,它是C语句的重要组成部分。
9. 输入输出的实现
- C语言本身不包含输入输出语句,这些操作通过库函数如
scanf
和printf
完成,实现了对输入输出的“函数化”。
10. 注释的重要性
- 加入必要的注释可以增加程序的可读性,是编写良好的源代码的重要部分。
结论
C语言的这些结构特点不仅使得程序易于管理和调试,而且通过模块化设计,实现了代码的重用。理解这些基本概念是学习C语言的关键步骤,为深入掌握C语言编程打下坚实的基础。随着对这些概念的深入理解,你将能够编写更复杂、更有效率的C程序。