首页 > 编程语言 >22级五年制C语言入门教程-(2)基本程序结构

22级五年制C语言入门教程-(2)基本程序结构

时间:2024-09-11 16:14:33浏览次数:12  
标签:函数 22 代码 程序结构 五年制 C语言 注释 printf main

1.简单的C语言程序结构

要建造房屋,首先需要打地基、搬砖搭建框架(这大概就是为什么叫搬砖的原因)。学习计算机语言的时候也一样,应该从基本的结构开始学起。下面,我们看一段简单的源代码,这段代码希望大家动手对着敲一遍,自己动手完完全全敲一次。我想对于刚学编程的人,即使对着敲,也是极其容易出现错误的。当看到编译器很多的错误时候,也别慌。其中最大的两个原因,一个是使用了中文字符,比如中文的分号以及括号,二是拼写单词错误。我们在编程的时候,需要全部使用英文符号。比如,程序中的分号以及括号。

//myfirst.c   -- 显示消息
#include <stdio.h>

int main()
{
    printf("Hello\n");
    printf("程序员基础知识!");

    return 0;
}

运行编译程序(快捷键“ctrl+F5”)后得到的输出:
Hello
程序员基础知识!

下面我们将这段代码分析一下,可以从以下几个部分来看:

  • 1)注释,代码的注释,是对代码的说明。编译器会忽略注释,毕竟机器也不想看你的注释QAQ。
  • 2)预处理器编译指令#include,以及包含的头文件。
  • 3)函数头:int main()。C语言程序由函数构成,一个程序可以有多个函数,但是有且只有一个主函数,也就是main()函数。
  • 4)函数体,花括号“{}”括起来的部分,包括各种指令组成的语句在内。
  • 5)结束main()函数的return语句。

2.注释

C语言有两种注释方式:

  • 1)“//”
    这个其实是C++风格注释,通常用于注释单行文本或代码,它们放在一起组成多行注释
    以 // 开始,到行尾结束。单行注释,这种注释可以单独占一行,也可以和代码位于同一行。
  • 2)“/* */”
    这个是C风格注释,通常用于注释大块文本或小片代码,也能用它们注释单行。
    以 /* 开始,到 */ 结束。因此可以跨越多行。

C 风格注释可出现在 C++ 风格注释内:

//  printf("Hello World!");   /* 输出Hello World! */

C++ 风格注释可出现在 C 风格注释内:

/*
    printf("Hello\n");    //输出Hello,并且换行
    printf("程序员基础知识!");    //输出程序员基础知识!
*/

两者可以同时存在,并不冲突:

printf("Hello World!");
/* 与 C 风格注释不冲突 */
// 与 C++ 风格注释不冲突

注释主要是为了更好的读懂代码,使人能明确的看出代码的功能。写注释是一个编程的好习惯,而且在以后的团队开发或者代码维护有相当重要的作用。看别人没用注释甚至不规范的代码,肯定让你头疼。在实际工作中经常遇到自己代码写完,过一段时间测试出了bug或者改了需求之类,你还要再看自己代码,有注释就不会忘记了。

3.预处理器和头文件

  • 1)预处理器
    预处理器在程序编译之前对源文件进行处理,采用以“#”为行首作为指示,include是预处理指令的一种。
    预处理指令包括:include 、define 、undef 、if 、 ifdef 、 ifndef 、 else 、 elif 、 endif 、 line 、 error 、 pragma等。我们现在先了解#include,又叫文件包含预处理指令,每个指令占据一行。
  • 2)头文件
    头文件,包含在文件最开始的地方。头文件使用.h为扩展名,头文件提供通用文件操作支持以及提供输入/输出的函数。在这段代码中,主要是提供printf()函数。如果没有这个头文件,我们使用printf()函数将会报错。

4.main()函数

通常,C语言程序中必须包含一个名为main()的函数。main()函数由系统调用执行,main()函数是程序执行的入口函数。运行C语言代码时,从main()函数开始。main()函数由两部分组成,函数头int main()部分和函数体用花括号“{}”括起来的部分。main()函数的定义以函数头int main()开始,函数体的作用是指出计算机做什么指令操作。每条完整的指令称为语句,语句以分号“;”结束,所以在C语言程序中不能省略分号。main()中的最后是返回语句return 0,用来结束该函数,0代表程序正常退出。

int main()的其它写法,可以省略int就写成main()。这是因为在C语言中,省略返回类型则默认为int(C++中逐步淘汰了这种用法)。所以我们就别偷懒了,还是别用这种写法了。还有写成int main(void)和void main()的,我都不推荐,大家还是用int main()最好了。下面是我手画(字丑请自行忽略)的main()结构图:

 

5.printf()函数输出字符串

printf()函数的作用是格式化输出。我们来看这段代码:printf("Hello\n"); 双引号括起来的部分是要打印的消息。里面的一系列字符(Hello)叫做字符串。“\n”是指示换行的,被看成一个字符,所以叫做换行符,作用是取新的一行开始。下面的printf("程序员基础知识!"); 语句,就会另取一行打印输出了。

6.空白

空格、制表符、回车都可以称为空白。空白可以分隔语句的各个部分,让编译器能识别语句中的某些元素在哪里开始和结束。比如语句:int main(),如果你将其写成intmain(),那么程序将报错。有些字符之间不需要用空白分开,比如括号和逗号。

只包含空格的行,编译器会忽略它。为了增强代码可读性,可以根据需要适当增加一些空格。

7.总结

总结一下,本节内容主要介绍了C语言程序的一般格式,具体包括注释、预处理器和头文件、main()函数、printf()函数输出字符串。

8.练习

2-1 假设main()函数包含代码:printf("程序员基础知识!"); 编译器报错“printf”: 找不到标识符,是什么原因?
2-2 return 0;表示成功结束,那么return -1;表示什么?
2-3 编写一个C语言程序,第一行显示“hero:盖伦”,第二行显示“attack:300”,并对代码做一些简单的注释,比如在旁边注释,英雄:盖伦。

标签:函数,22,代码,程序结构,五年制,C语言,注释,printf,main
From: https://www.cnblogs.com/yilangUAV/p/18408413

相关文章

  • 22级五年制C语言入门教程-(3)基本数据类型
    1.数据类型在C语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。C语言数据类型可以分为四种:1.基本类型:它们是算术类型,包括两种类型:整数类型和浮点类型。2.枚举类型:它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。3.void类型:类型......
  • 22级五年制C语言入门教程-(4)常量和变量
    1.常量和变量的概念程序执行过程中其值不能发生改变的量叫做常量,其值能发生改变的量叫做变量。常量可以直接使用,而变量则必须先定义后才能使用,否则编译器会报错。2.常量和变量的命名规范在介绍常量和变量的命名规范之前,我们先了解一下什么是标识符和关键字。2.1标识符标识符......
  • VS2022 17.12.0 Preview2版本对Copilot的功能增强
    前提条件,使用最新版的17.12.0Preview2,并且有有效的CopilotAI订阅,那么可以体验这些新鲜好用的功能增强了CopilotAI对IEnumerableVisualizer的可编辑表达式功能我们可以通过AI实现一些复杂的条件筛查,并且可以即时验证结果是否符合预期,对于开发和调试提供了极大的便利性......
  • 122. 买卖股票的最佳时机 II
    给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润 。 示例1:输入:prices=[7,1,5,3,6,4]输......
  • Windows Server 2022 rdp
    继续水一篇:2022废弃了xddm转而使用wddm,rdp的渲染有比较大的变化。高版本的unreal又需要2022支持,被迫走上魔改windows以提升2022rdp环境下抓屏帧数的道路。测试代码来自https://github.com/robmikh/Win32CaptureSample,只手动添加了输出fps逻辑。patchwindows后能在[60,90]......
  • HyperAI超神经 x Apache Pulsar | 9 月 22 日,北京 Pulsar Meetup 不见不散!
    PulsarMeetup北京2024PulsarMeetup北京2024活动将于2024年9月22日(周日)由谙流科技和小红书联合举办。诚邀Pulsar和各大社区的小伙伴、广大技术爱好者、架构师和企业代表参与。主办单位:AscentStream谙流科技、小红书活动时间:2024年9月22日14:00-18:00活......
  • NOIP2022 游记
    NOIP2022游记突然想起来两年前的一篇游记没写,现在好像也已经很难再回忆起什么了,但我的OI生涯中也就这两场比赛,总得留下点什么来让日后回味这段充满热血的时光。Background坐标sc弱校,文化课不顶尖,但在年级上还算比较强,停课之前大概能维持在年级前\(25\)的样子。不是那种......
  • CEOI2022
    Day1T1Abracadabra题意:给你一个\(1\simn\)的排列\(p\),保证\(n\)为偶数,我们对它进行足够多次数的洗牌操作,定义一次洗牌为:考虑取出\(p_{1\sim\frac{n}{2}}\)作为序列\(A\),取出\(p_{\frac{n}{2}+1\simn}\)作为序列\(B\),将\(A\)和\(B\)归并后重新放回\(......
  • Recovery Catalog Schema Upgrade Fails With ORA-02298 On Constraint ROUT_F3
    OracleDatabase-EnterpriseEdition-Version19.16.0.0.0andlaterRecoveryCatalogschemaupgradetoversion19.16 failsWithORA-02298onconstraintROUT_F3RMAN>upgradecatalogrecoverycatalogispartiallyupgradedto19.16.00.00errorcreatingu......
  • 【算法题】22.括号生成-力扣(LeetCode)
    【算法题】22.括号生成-力扣(LeetCode)1.题目下方是力扣官方题目的地址22.括号生成数字n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。示例1:输入:n=3输出:["((()))","(()())","(())()","()(())","()()()"]示例2:输入:n=1......