驻马店市网站建设_网站建设公司_测试工程师_seo优化
2025/12/23 6:26:55 网站建设 项目流程

本课介绍了C语言程序的基本组成部分。一个完整的C程序包含main()函数、预处理指令、变量定义、函数原型、程序语句、函数定义和注释等元素。通过示例程序bigyear.c,展示了如何计算指定年数后的年份,并详细解析了程序各部分的用途。重点讲解了#include和#define指令的作用、变量定义方法、函数原型与定义的区别、printf()和scanf()等常用语句的使用,以及单行和多行注释的写法。课程还提供了程序运行步骤、常见问题解答和复习要点,帮助初学者掌握C程序的基本结构。

第2课:C语言的组成部分

2.1 简短C程序示例

程序清单2.1:bigyear.c - 计算某人在指定年数后的年份

// 该程序计算某人在经过指定年数后的年份#include<stdio.h>#defineTARGET_AGE20intyear1,year2;intcalcYear(intyear1);intmain(void){// 询问用户的出生年份printf("What year was the subject born? ");printf("Enter as a 4-digit year (YYYY): ");scanf(" %d",&year1);// 计算指定年数后的年份,并显示该年份year2=calcYear(year1);printf("Someone born in %d will be %d in %d.",year1,TARGET_AGE,year2);return0;}// 该函数计算将来年份intcalcYear(intyear1){return(year1+TARGET_AGE);}

输出示例:

What year was the subject born? Enter as a 4-digit year (YYYY): 2000 Someone born in 2000 will be 20 in 2020.

2.2 程序的组成部分

2.2.1 main()函数

  • 位于程序的第9~23行
  • 每个可执行的C程序必不可少的部分
  • 基本结构:int main(void) { ... }
  • 程序从main()的第一条语句开始执行,到最后一条语句结束
  • 根据ANSI标准,main()中必须有return语句

2.2.2 #include和#define指令

  • #include <stdio.h>:命令编译器在编译时添加stdio.h文件的内容
  • #define TARGET_AGE 20:定义符号常量,编译器会将程序中所有的TARGET_AGE替换为20
  • 包含文件(头文件)扩展名为.h,由编译器提供

2.2.3 变量定义

  • 第5行:int year1, year2;
  • 变量是赋给内存位置的名称,用于存储信息
  • 在C语言中,必须先定义变量才能使用

2.2.4 函数原型

  • 第7行:int calcYear(int year1);
  • 告知编译器程序中使用的函数名称和参数
  • 不同于函数定义,它不包含函数的实际语句

2.2.5 程序语句

  1. printf()语句(第12、13、19、20行)

    • 在屏幕上显示信息的库函数
  2. scanf()语句(第14行)

    • 读取键盘输入的数据并赋给变量
  3. 函数调用语句(第17行)

    • 调用calcYear()函数并传递参数
  4. return语句(第22、28行)

    • 第28行:函数返回计算结果
    • 第22行:程序结束前返回0给操作系统

2.2.6 函数定义

  • 第26~29行定义了calcYear()函数
  • 两种函数类型:
    • 库函数:如printf()、scanf(),由编译器提供
    • 用户自定义函数:如calcYear(),由程序员创建

2.2.7 程序注释

两种注释风格:

  1. 多行注释/* 注释内容 */

    • 可以跨越多行
    • 不能嵌套使用
  2. 单行注释// 注释内容

    • 只能用于单行
    • 从//开始到行尾的内容都被忽略

2.2.8 使用花括号

  • 用花括号{}将代码块括起来
  • 如:main()函数体、calcYear()函数体
  • 花括号内的一条或多条语句称为块(block)

2.3 运行程序步骤

  1. 确保工作目录正确
  2. 打开编辑器
  3. 正确输入源代码(不要输入行号)
  4. 保存程序文件
  5. 编译并链接程序
  6. 如有错误,返回编辑器修改

2.4 小结

  • 每个C程序必须有main()函数
  • 程序的实际工作由语句完成
  • 注释对程序执行没有影响,只用于提高代码可读性
  • C程序使用库函数和用户自定义函数

2.5 常见问题解答

Q:注释对程序有何影响?
A:注释是给程序员看的,编译器完全忽略所有注释,因此注释不会影响可执行程序的性能。

Q:如何找到可用的库函数?
A:许多编译器提供在线文档,按字母顺序列出库函数。附录C也列出了常用函数。

2.6 复习要点

概念理解

  1. 块(block):用花括号括起来的一组语句
  2. 函数:执行特定任务的一段程序代码
  3. 函数类型
    • 库函数:编译器提供
    • 用户自定义函数:程序员创建
  4. 包含文件:也称为头文件(.h文件)

编程实践

  1. 添加注释的方法
    • 使用/* */进行多行注释
    • 使用//进行单行注释
  2. 注释的重要性:提高代码可读性,方便后期维护

注意事项

  1. 注释不能嵌套
  2. 注释可以超过一行
  3. 养成良好的注释习惯很重要
  4. 计算机只会"照本宣科",要确保代码准确无误

通过本课的学习,你应该能够识别C程序的基本组成部分,并理解各部分的作用。在后续课程中,我们将深入探讨每个部分的详细用法。

抱歉,练习题被遗漏了。以下是完整的练习题部分:

2.6 课后研习

2.6.1 问答题

1. 在C语言中,用花括号括起来的一组语句叫作什么?
答:块(block)

2. 每个C程序都必不可少的部分是什么?
答:main()函数

3. 如何在程序中添加注释?为什么要添加注释?
答:有两种添加注释的方法:

  • 多行注释:使用/* 注释内容 */
  • 单行注释:使用// 注释内容
    添加注释可以提高代码的可读性,方便自己和他人理解和维护代码。

4. 什么是函数?
答:函数是一段执行特定任务的程序代码,通过函数名可以调用执行其中的代码。

5. C语言提供了哪两种类型的函数?它们有什么区别?
答:

  • 库函数:由C编译器软件包提供
  • 用户自定义函数:由程序员创建
    区别在于来源不同,但使用方法类似。

6. #include指令有什么用途?
答:命令C编译器在编译时将指定包含文件的内容添加到程序中。

7. 注释是否可以嵌套?
答:标准C语言不允许注释嵌套,某些编译器可能支持但不应使用以保证代码可移植性。

8. 注释是否能超过一行?
答:可以,多行注释/* */可以跨越多行。

9. 包含文件的另一个名称是?
答:头文件

10. 什么是包含文件?
答:包含文件(头文件)是独立的磁盘文件,内含程序或编译器要使用的信息,扩展名为.h。

2.6.2 练习题

1. 写一个最短小的C程序

intmain(void){return0;}

2. 分析下面的程序,指出各行属于什么类型

分析以下程序:

#include<stdio.h>// 1. 预处理指令#definePI3.14159// 2. 宏定义intradius;// 3. 变量定义doublearea;// 4. 变量定义doublecalculateArea(intr);// 5. 函数原型intmain(void){// 6. main函数开始// 获取半径 // 7. 注释printf("Enter radius: ");// 8. 语句(函数调用)scanf("%d",&radius);// 9. 语句(函数调用)area=calculateArea(radius);// 10. 语句(函数调用+赋值)printf("Area: %.2f\n",area);// 11. 语句(函数调用)return0;// 12. 语句(返回语句)}// 13. main函数结束// 计算面积的函数 // 14. 注释doublecalculateArea(intr){// 15. 函数定义开始returnPI*r*r;// 16. 语句(返回语句)}// 17. 函数定义结束

3. 写一个程序的注释示例

/* * 程序:学生成绩管理系统 * 作者:张三 * 日期:2024年1月15日 * 功能:管理学生成绩,包括录入、查询、统计等功能 */#include<stdio.h>// 定义最大学生数量#defineMAX_STUDENTS100// 学生结构体structStudent{intid;// 学号charname[50];// 姓名floatscore;// 成绩};// 函数声明voidinputStudent(structStudent*s);// 输入学生信息voiddisplayStudent(structStudents);// 显示学生信息intmain(void){structStudentstu;// 定义一个学生变量// 输入学生信息inputStudent(&stu);// 显示学生信息displayStudent(stu);return0;}// 函数定义:输入学生信息voidinputStudent(structStudent*s){printf("请输入学号: ");scanf("%d",&s->id);printf("请输入姓名: ");scanf("%s",s->name);// 注意:这里假设姓名不包含空格printf("请输入成绩: ");scanf("%f",&s->score);}// 函数定义:显示学生信息voiddisplayStudent(structStudents){printf("\n=== 学生信息 ===\n");printf("学号: %d\n",s.id);printf("姓名: %s\n",s.name);printf("成绩: %.2f\n",s.score);printf("================\n");}

4. 训练输入、编译并运行程序

请尝试以下步骤:

  1. 使用编辑器输入上面的学生成绩管理程序
  2. 保存为student.c
  3. 编译程序:gcc student.c -o student
  4. 运行程序:./student(Linux/Mac)或student.exe(Windows)
  5. 按照提示输入学生信息,观察输出结果

附加练习:

  • 修改程序,使其可以管理多个学生的信息
  • 添加计算平均成绩的功能
  • 添加查找最高分学生的功能

注意:

  • 在输入代码时不要输入行号
  • 确保所有标点符号都是英文的(特别是分号、引号、括号)
  • 注意区分大小写
  • 编译时要确保语法正确,注意错误提示信息

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询