C诺克如何用顺序结构实现?

99ANYc3cd6
预计阅读时长 19 分钟
位置: 首页 C语言 正文

《C语言程序设计》实验报告

实验名称 C语言顺序结构程序设计 实验日期 2025年10月26日
学生姓名 张三 学 号 20250101001
班 级 计算机科学与技术1班 指导教师 李四

实验目的

  1. 熟悉C语言开发环境:掌握Visual Studio Code / Dev-C++ / Visual Studio等集成开发环境的基本操作,包括新建、编辑、编译、连接和运行C语言程序。
  2. 掌握C语言程序的基本结构:理解C语言程序由一个或多个函数构成,并且main函数是程序执行的入口点。
  3. 掌握顺序结构程序的设计方法:学习编写只包含表达式语句、函数调用语句的简单程序,理解程序的执行流程是从上到下、依次执行的。
  4. 掌握基本数据类型与运算符:熟练使用int, float, double, char等基本数据类型,以及算术运算符(, , , , )、赋值运算符()和复合赋值运算符(, -=等)。
  5. 掌握标准输入/输出函数的使用:熟练使用printf()函数进行格式化输出,使用scanf()函数进行格式化输入。
  6. 掌握格式化输入/输出中的格式控制符:能够正确使用%d, %f, %lf, %c, %s等格式控制符,并理解其与数据类型的对应关系。

实验环境

  • 硬件环境:Intel Core i5-10400F CPU, 16GB RAM
  • 软件环境
    • 操作系统:Windows 11 家庭中文版
    • 集成开发环境:Visual Studio Code 1.85.1
    • 编译器:MinGW-w64 (GCC 11.2.0)
    • 插件:C/C++ Extension Pack by Microsoft

实验内容

本次实验主要完成以下两个顺序结构程序的设计与实现:

c语言顺序结构程序实验报告
(图片来源网络,侵删)
  1. 简单的算术运算与输出

    • 定义两个整型变量ab,并为其赋初值(a=10, b=5)。
    • 计算并输出这两个变量的和、差、积、商(注意整除和浮点除的区别)以及余数。
    • 要求输出格式清晰,有必要的文字说明。
  2. 从键盘输入数据并计算

    • 定义一个浮点型变量radius(半径)和一个双精度浮点型变量height(高)。
    • 使用scanf()函数从键盘接收用户输入的半径和高。
    • 计算并输出以该半径为底面半径、高为高的圆柱体的体积表面积
    • 圆柱体体积公式:V = π * r² * h
    • 圆柱体表面积公式:S = 2 * π * r² + 2 * π * r * h
    • π (Pi) 的值可以使用宏定义#define PI 3.14159来表示。
    • 要求输出结果保留两位小数。

实验原理

  1. 顺序结构:顺序结构是程序设计中最基本、最简单的结构,它的特点是按照代码书写的顺序,自上而下、一条一条地执行语句,在本次实验中,所有任务都只包含顺序结构,没有分支(if-else)和循环(for, while)。

  2. 数据类型:C语言是强类型语言,每个变量在使用前必须声明其数据类型。

    c语言顺序结构程序实验报告
    (图片来源网络,侵删)
    • int:用于存储整数,如10, -5, 0
    • float:用于存储单精度浮点数(小数),通常占4个字节,精度较低。
    • double:用于存储双精度浮点数,通常占8个字节,精度比float高,是浮点数运算的首选。
    • char:用于存储单个字符,如'A', '1'
  3. 标准输入/输出函数

    • printf():格式化输出函数,其函数原型为int printf(const char *format, ...);format字符串中可以包含普通字符和格式说明符(如%d, %f),普通字符会原样输出,格式说明符会被后续对应参数的值替换。
    • scanf():格式化输入函数,其函数原型为int scanf(const char *format, ...);,它从标准输入(通常是键盘)读取数据,并根据格式说明符将数据存入到指定的变量地址中。特别注意scanf的变量参数前必须加上取地址符&
  4. 算术运算符

    • , , :加、减、乘,用法与数学一致。
    • 除法运算,如果两个操作数都是整数,则执行整数除法,结果会舍弃小数部分;如果至少有一个操作数是浮点数,则执行浮点数除法。
    • 取模运算(求余数)。此运算符的两个操作数必须是整数

实验步骤

  1. 启动开发环境:打开Visual Studio Code,安装并配置好C/C++插件及编译器。
  2. 创建源文件:新建一个名为experiment1.c的C源文件。
  3. 编写任务一代码
    • 在文件开头包含标准输入输出头文件:#include <stdio.h>
    • main函数中,声明并初始化两个整型变量ab
    • 使用printf()函数,按照指定格式输出ab的和、差、积、商、余数。
  4. 编译与运行任务一:保存文件,在终端使用gcc命令编译程序(如gcc experiment1.c -o task1),然后运行生成的可执行文件(如./task1),观察输出结果是否正确。
  5. 编写任务二代码
    • experiment1.c中继续编写,或在文件中添加新的main函数(建议新建文件task2.c)。
    • 包含头文件#include <stdio.h>
    • 使用#define定义一个常量PI
    • main函数中,声明radiusfloat类型)和heightdouble类型)。
    • 使用printf()提示用户输入,并使用scanf()读取用户输入的值到radiusheight
    • 根据圆柱体体积和表面积公式,计算volumesurface_area
    • 使用printf(),格式化输出计算结果,并保留两位小数。
  6. 编译与运行任务二:保存文件,编译并运行程序,输入不同的测试数据(如r=3.0, h=5.0),验证计算结果的正确性。

实验代码与结果

1 任务一代码

#include <stdio.h>
int main() {
    // 任务一:简单的算术运算与输出
    int a = 10;
    int b = 5;
    printf("任务一:算术运算\n");
    printf("a = %d, b = %d\n", a, b);
    printf("----------------------------\n");
    printf("和: %d + %d = %d\n", a, b, a + b);
    printf("差: %d - %d = %d\n", a, b, a - b);
    printf("积: %d * %d = %d\n", a, b, a * b);
    // 注意:整数除法会截断小数部分
    printf("商(整数): %d / %d = %d\n", a, b, a / b);
    printf("余数: %d %% %d = %d\n", a, b, a % b); // %% 用来输出一个 %
    return 0;
}

2 任务一运行结果

算术运算
a = 10, b = 5
----------------------------
和: 10 + 5 = 15
差: 10 - 5 = 5
积: 10 * 5 = 50
商(整数): 10 / 5 = 2
余数: 10 % 5 = 0

3 任务二代码

#include <stdio.h>
#define PI 3.14159
int main() {
    // 任务二:从键盘输入数据并计算圆柱体体积和表面积
    float radius;
    double height, volume, surface_area;
    printf("任务二:圆柱体计算\n");
    printf("请输入圆柱体的底面半径: ");
    scanf("%f", &radius);
    printf("请输入圆柱体的高: ");
    scanf("%lf", &height);
    // 计算体积和表面积
    volume = PI * radius * radius * height;
    surface_area = 2 * PI * radius * radius + 2 * PI * radius * height;
    printf("----------------------------\n");
    printf("计算结果:\n");
    // %.2f 表示输出浮点数,保留两位小数
    printf("圆柱体体积: %.2f\n", volume);
    printf("圆柱体表面积: %.2f\n", surface_area);
    return 0;
}

4 任务二运行结果示例

输入:

圆柱体计算
请输入圆柱体的底面半径: 3.0
请输入圆柱体的高: 5.0

输出:

c语言顺序结构程序实验报告
(图片来源网络,侵删)
----------------------------
计算结果:
圆柱体体积: 141.37
圆柱体表面积: 150.80

实验总结与分析

通过本次实验,我成功地完成了两个顺序结构C语言程序的编写、编译和运行,达到了预期的实验目的。

  1. 收获与体会

    • 环境熟悉:我熟练掌握了在VS Code环境下编写、编译和运行C程序的全过程,学会了如何通过终端查看编译错误和运行结果。
    • 基础语法巩固:对C语言的基本数据类型、变量声明、初始化以及赋值运算有了更深刻的理解,特别是通过任务一,我直观地看到了整数除法和取模运算的区别,以及printf中的特殊用法。
    • I/O函数掌握:学会了printfscanf这两个核心函数的用法,我认识到格式控制符(如%d, %f, %lf)的正确使用至关重要,它与变量的数据类型必须一一对应,否则会导致程序错误或数据输出不正确,在scanf中读取double类型变量时,必须使用%lf,而不是%f
    • 编程思想:深刻体会到了顺序结构“从上到下,依次执行”的特点,程序的逻辑完全由代码的排列顺序决定,这为后续学习更复杂的控制结构打下了坚实的基础。
  2. 遇到的问题与解决方案

    • 问题1:在编写任务二时,我最初在scanf中读取heightdouble类型)时,错误地使用了%f格式控制符,编译程序时没有报错,但运行后输入的值总是不正确,导致计算结果偏差巨大。
    • 解决方案:通过查阅教材和资料,我了解到%f用于float类型,而%lf用于double类型,虽然在一些旧的编译器中%f可能也能用于double,但这并非标准做法,且可能导致精度问题,修正为scanf("%lf", &height);后,程序运行正常。
    • 问题2:在输出时,我希望结果保留两位小数,但一开始不知道如何实现。
    • 解决方案:学习了printf的格式化输出功能,发现可以在%f%lf后面加上.N的形式来控制精度,例如%.2f表示输出浮点数并保留两位小数,这使输出结果更加规范和易读。
  3. 反思与展望: 顺序结构虽然简单,但它是构建复杂程序的基石,本次实验让我认识到,编写清晰、规范的代码(如添加有意义的注释、使用有意义的变量名、格式化输出)和掌握基础语法细节同等重要,在接下来的学习中,我将重点练习分支结构和循环结构,并继续巩固输入输出和变量使用的规范性,为编写更复杂的C语言应用程序做好准备。

-- 展开阅读全文 --
头像
dede文章页如何调用频道信息?
« 上一篇 03-12
dede如何调取文章内容?
下一篇 » 03-12

相关文章

取消
微信二维码
支付宝二维码

目录[+]