【C语言程序设计】顺序结构程序设计

news2024/12/23 14:16:21

目录

前言

一、程序阅读

二、程序改错

三、程序设计


🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。

💡本文由Filotimo__✍️原创,首发于CSDN📚。

📣如需转载,请事先与我联系以获得授权⚠️。

🎁欢迎大家给我点赞👍、收藏⭐️,并在留言区📝与我互动,这些都是我前进的动力!

🌟我的格言:森林草木都有自己认为对的角度🌟。

前言

C 语言具有五种基本语句:

1. 程序流程控制语句:用于根据条件来控制程序的执行流程。主要包括if语句、switch语句和循环语句(如while、do-while、for等)。这些语句允许程序在满足特定条件时执行不同的操作。

2. 函数调用语句:通过调用函数来执行特定的操作。函数调用语句需要提供函数名和相应的参数,可以将函数的返回值赋给变量或者直接使用函数的返回值。

3. 表达式语句:通过表达式完成某种计算操作并产生结果。这种语句的形式简单,通常以分号结尾。例如,a = b + c; 将表达式 b + c 的结果赋给变量 a。

4. 空语句:也称为空语句或者空操作语句,它是一条什么都不做的语句,只有一个分号。空语句通常用于程序结构的占位或者在某些循环中不需要执行任何操作的情况下。

5. 复合语句:由一对花括号括起来的语句序列,也称为代码块或语句块。复合语句可以包含多个语句,并且可以嵌套使用。复合语句的主要用途是创建局部作用域并将相关语句组织在一起。

以下是顺序结构程序设计的五个步骤:

1. 分析出程序的输入量和输出量:根据问题的需求,确定程序需要接受哪些数据作为输入,以及需要输出哪些数据作为结果。例如,一个计算圆的周长和面积的程序,其输入量可能是圆的半径,而输出量可能是周长和面积。

2. 确定输入和输出的变量:命名、类型和格式:为了方便程序的理解和编写,需要为输入和输出的变量命名,并指定其类型和格式。例如,对于上面的计算圆的程序,可以使用“r”表示圆的半径,使用“c”和“a”分别表示圆的周长和面积。

3. 确定输入和输出的算法:为了计算输入数据的结果并输出,需要明确计算的算法和逻辑。例如,计算圆的面积和周长的算法分别为A = πr²和C = 2πr,其中“π”为圆周率,可以使用预定义的常量或变量存储。

4. 模块化编程:将程序拆分为多个独立的模块,每个模块负责执行特定的任务。这有助于简化程序的复杂度,提高程序的可维护性和可重用性。例如,可以使用一个函数计算圆的面积,另一个函数计算圆的周长,主函数则负责接受输入数据和输出结果。

5. 调试程序:在编写完成程序之后,需要测试和调试程序,以确保程序的正确性和稳定性。可以使用调试工具或日志记录等方法,发现和解决程序中的错误和异常,确保程序能够运行如预期。


一、程序阅读

在阅读并理解程序思路的基础上,练习强制类型转换运算符的使用,补充注释内容,并上机运行程序,验证运行结果与自己分析的结果是否相符。

#include <stdio.h>
int main()
{
    int d; 
    
    // 将3除以2,得到1,因为是整数除法
    // 强制转换为 double 类型,得到 1.0
    // 注意,此处并不是将分子和分母都转换为 double 类型再相除
    // 而是先进行整数除法,再将结果转换为 double 类型
    double result1 = (double)(3/2);
    
    // 将 result1 加上 0.5,得到 1.5
    // 因为 0.5 是 double 类型,所以 result1 也会自动转换为 double 类型进行运算
    double result2 = result1 + 0.5;
    
    // 将 1.99 强制转换为 int 类型,得到 1
    int result3 = (int)1.99;
    
    // 将 2 乘以 result3,得到 2
    // 因为 result3 是 int 类型,所以运算结果也会是 int 类型
    int result4 = 2 * result3;
    
    // 将 result2、result4 相加,得到 3.5
    // 因为 result2 是 double 类型,result4 是 int 类型,所以运算结果会是 double 类型
    double result5 = result2 + result4;
    
    // 强制转换将 result5 转换为 int 类型,得到 3
    // 强制转换会舍弃小数部分,只保留整数部分
    d = (int)result5;
    
    printf("d=%d\n", d); 
    return 0; 
}

运行结果:

二、程序改错

程序中有4处错误,上机调试程序,修改有错误的语句行,并输出正确的运行结果。

第1句: #include<stdio.h>

第2句:int main()

第3句:{ float x=2,y ;

第4句: y=3;

第5句: z=2x +y;

第6句: printf("%d\n",y);

第7句: printf("%f\n,z");

第8句: return 0;}

修正后的代码:

#include <stdio.h>

int main()
{
    float x = 2, y;
    y = 3;
    float z = 2 * x + y;
    printf("%f\n", y);
    printf("%f\n", z);
    return 0;
}

修改后的程序中,修复了以下错误:

1.第3句:修复了变量声明中缺少分号的错误,在 float x=2,y ; 语句中添加了分号。

2.第5句:修复了乘法运算符的错误,将 2x 更正为 2 * x

3.第6句:修复了错误的格式化字符串,变量 y 是浮点型,应该使用 %f 进行格式化输出。

4.第7句:修复了字符串格式化错误,在 printf 语句中,将 z 作为 %f 的参数并用逗号分隔,修正为 "%f\n"

运行结果:

三、程序设计

编写程序,将China译成密码,译码规律是:用原来字母后面的第5个字母代替原来的字母。

实现代码:

#include <stdio.h>
#include <string.h>

int main()
{
    char str[100] = "China";
    int len = strlen(str);
    
    for (int i = 0; i < len; i++) {
        if ('A' <= str[i] && str[i] <= 'Z') {
            // 对于大写字母,将字母后移5个位置,并取模,保证在字母表范围内
            str[i] = (str[i] - 'A' + 5) % 26 + 'A';
        }
        else if ('a' <= str[i] && str[i] <= 'z') {
            // 对于小写字母,同理
            str[i] = (str[i] - 'a' + 5) % 26 + 'a';
        }
    }
    
    printf("加密后的密文为: %s\n", str);
    return 0;
}

运行结果:


总结

通过学习顺序结构程序设计,我们可以了解到程序的执行顺序是从上到下依次执行的,这为我们编写简单而有效的程序提供了基础。掌握顺序结构程序设计的基本思想和技巧对于学习和理解其他复杂的程序控制结构(如条件语句和循环语句)至关重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1303342.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简单的 u-popup 弹出框

uniapp中的popup组件可以用于弹出简单的提示框、操作框、菜单等。它可以通过position属性控制弹出框的位置&#xff0c;不同的position值会使得弹出框呈现不同的弹出形式 目录 一、实现思路 二、实现步骤 ①view部分展示 ②JavaScript 内容 ③css中样式展示 三、效果展示 …

计算机网络:网络层上(数据平面)

文章目录 前言一、概述1.网络服务模型2.连接建立 二、路由器组成路由器结构概况输入端口的功能交换结构输出端口 三、IP&#xff08;Internet Protocol&#xff09;IPV4IPV6 四、通用转发和SDN总结 前言 网络层分两部分讲解&#xff0c;本篇文章讲解数据平面的内容&#xff1a…

Spring Boot监听redis过期的key

Redis支持过期监听&#xff0c;可以实现监听过期数据&#xff0c;实现过程如下 1、pom依赖 <!-- Redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></depend…

计算机网络(三)

&#xff08;十一&#xff09;路由算法 A、路由算法分类 动态路由和静态路由 静态路由&#xff1a;人工配制&#xff0c;路由信息更新慢&#xff0c;优先级高。这种在实际网络中要投入成本大&#xff0c;准确但是可行性弱。 动态路由&#xff1a;路由更新快&#xff0c;自动…

【MySQL】:数据类型

数据类型 一.数值类型1.整数1.tinyint2.bit类型 2.浮点类型1.float2.decimal 二.字符串类型1.char类型2.varchar类型3.char和varchar的区别4.日期和时间类型5.enum和set 三.集合查询 一.数值类型 1.整数 1.tinyint 正常插入 越界插入 如果我们向mysql特定的类型中插入不合法的…

使用BeautifulSoup 4和Pillow合并网页图片到一个PDF:一种高效的方式来处理网页图像

背景 ​ 网页上的培训材料&#xff0c;内容全是PPT页面图片。直接通过浏览器打印&#xff0c;会存在只打印第一页&#xff0c;并且把浏览器上无效信息也打印出来情况。但目标是希望将页面图片全部打印为pdf形式。 实现方案 利用网页“另存为”&#xff0c;将页面内所有图片资…

力扣题:数字与字符串间转换-12.12

力扣题-12.12 [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;539. 最小时间差 解题思想&#xff1a;将字符串的时间形式换成数字形式的时间&#xff0c;然后计算差值即可&#xff0c;最重要的是最小的值加上一天的时间加入到数组最后&#xff08…

cache教程 5.分布式节点的通信

0.对原教程的一些见解 其回顾完请求流程就是抽象了两个接口&#xff0c;PeerPicker和PeerGetter。这样操作&#xff0c;读者阅读时可能很难快速明白其含义&#xff0c;不好理解为什么就创建出两个接口&#xff0c;感觉会比较疑惑。原教程的评论中也有讨论这点。 本教程就先不创…

docker mysql8 设置不区分大小写

docker安装Mysql8.0的坑之lower_case_table_names_docker mysql lower_case_table_names-CSDN博客https://blog.csdn.net/p793049488/article/details/108365929 docker run ‐di ‐‐nametensquare_mysql ‐p 33306:3306 ‐e MYSQL_ROOT_PASSWORD123456 mysql

node.js express JWT token生成与校验

目录 JWT header&#xff08;标头&#xff09; payload&#xff08;有效负载&#xff09; signature&#xff08;签名&#xff09; 访问令牌&#xff08;token&#xff09; express jwt生成、验证 生成jwt 验证jwt JWT JWT 是轻量级的数据交换格式&#xff0c;相对于传…

微服务-理论 分布式事务

一、分布式事务理论模型 分布式事务问题也叫分布式数据一致性问题&#xff0c;简单来说就是如何在分布式场景中保证多个节点数据的一致性。分布式事务产生的核心原因在于存储资源的分布性&#xff0c;比如多个数据库&#xff0c;或者MySQL和Redis两种不同存储设备的数据一致性…

R语言,table()函数实现统计每个元素出现的频数+并将最终统计频数结果转换成dataframe数据框形式

在 R中&#xff0c;要统计dataframe数据框中每个元素出现的频数&#xff0c;可以使用table()函数。以下是一个示例&#xff1a; 目录 一、创建数据 二、统计第一列每个元素出现的频数 三、统计第二列每个元素出现的频数 四、将频数结果转换为数据框&#xff0c;并改列名 一…

【OPNEGIS】Geoserver原地升级jetty,解决Apache HTTP/2拒绝服务漏洞 (CVE-2023-44487)

Geoserver是我们常用的地图服务器&#xff0c;在开源系统中的应用比较广泛。在实际环境中&#xff0c;我们可能会选用官方的二进制安装包进行部署&#xff0c;这样只要服务器上有java环境就可以运行&#xff0c;方便在现场进行部署。 1.问题来源 这次由于甲方一月一次的漏洞扫…

开源框架Apache NiFi调研

开源框架Apache NiFi调研 NiFi背景介绍一、什么是NiFi1.1 Apache NiFi特点&#xff1a;流管理、易用性、安全性、可扩展的体系结构和灵活的伸缩模型。1.2 Apache NiFi特性1.2 Apache NiFi核心概念1.3架构 二、NiFi的诞生&#xff0c;要致力于解决的问题有哪些&#xff1f;三、为…

day01、什么是数据库系统?

数据库系统介绍 1.实例化与抽象化数据库系统2.从用户角度看数据库管理系统的功能2.1 数据库定义功能2.2 数据库操纵2.3 数据库控制2.4 数据库维护功能2.5 数据库语言与高级语言 3.从系统&#xff1a;数据库管理系统应具有什么功能 来源于战德臣的B站网课 1.实例化与抽象化数据库…

React Native android环境搭建,使用夜神模拟器进行开发(适用于0.73+版本)

前言 本文基于&#xff1a;“react-native” : “^0.73.0” 1.安装 Node Node.js&#xff0c;下载时选择 > 18 版本 2.下载并安装 JDK Java SE Development Kit (JDK)&#xff0c;下载时选择 17 版本 安装 验证是否安装成功 打开命令提示符输入 javac -version 回车 3.…

【打印机如何设置只打印黑色】

目录 1. Window X 打开&#xff0c;选择“设置” 2. 选择“打印机和扫描仪” 3. 选择对应的“打印机” 4. 选择“打印首选项” 5. 选择“页设置”&#xff0c;并选择“打印选项” 6. 用于打印的墨水&#xff0c;改为“仅黑色” 7. 点击“确定”&#xff0c;关闭即可 1. Wi…

智慧储能数字孪生:能源未来的智慧引擎

随着社会对清洁能源的需求不断增加&#xff0c;智能储能技术成为能源转型的关键驱动力。在这一领域中&#xff0c;数字孪生技术的应用为智慧储能带来了全新的可能性。数字孪生是指数字化、实时、可视化的模拟系统&#xff0c;通过复制现实世界中的对象或过程&#xff0c;为智能…

基于查表法的水流量算法设计与实现

写在前面 本文分享的是一种基于查表法的水流量的算法方案设计与实现&#xff0c;算法简单易懂&#xff0c;主要面向初学者&#xff0c;有两个目的&#xff1a;一是给初学者一些算法设计的思路引导&#xff1b;二是引导初学者学习怎样用C语言编程实现。 一、设计需求 基于“19…

nodejs微信小程序+python+PHP个性化服装搭配系统APP-计算机毕业设计推荐 android

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…