顺序结构
顺序结构
基本概念
顺序结构是最基本的程序结构,程序按照语句的先后顺序依次执行。它是程序中最简单的流程控制,没有任何判断和跳转。
顺序结构代码的核心特点是:
-
按照语句的先后顺序执行
-
每个语句都会被执行一次
例题
接下来会有三个典型的顺序结构的例题,涉及到了常见的顺序结构的程序编写思路,请你仔细读完参考代码的思路和实现方法后,自己尝试编写对应题目的代码。
例题 1:反向输出一个四位数
题意
给定一个四位数,将其各个数位反转后输出输出。例如,1234 反转后即为 4321。
思路分析
我们发现,任意一个十进制的数字都可以:
-
通过对
取模运算得到其个位数,即数字
的个位为
。
-
通过对
取整扔掉个位数,即数字
去掉个位数后为
。
如果我们不断重复上述两步,直到数字 变为
,那么我们就可以得到数字
的每一位了。如果我们把各个数位用变量存储下来,再按照要求反向输出,那么我们就可以得到最终的答案啦。
代码实现
#include <bits/stdc++.h>
using namespace std;
int main() {
int n; //定义变量n用来输入那个四位数
cin >> n; //输入n
int ge, shi, bai, qian; //定义变量ge,shi,bai,qian分别表示个位,十位,百位,千位
ge = n % 10; //对10取模得到个位数
n /= 10; //把此时的个位抛弃掉,得到三位数
shi = n % 10;//对10取模得到个位数
n /= 10; //把此时的个位抛弃掉,得到两位数
bai = n % 10;//对10取模得到个位数
n /= 10; //把此时的个位抛弃掉,得到一位数
qian = n % 10;//对10取模得到个位数
cout << ge << shi << bai << qian; //反向输出
return 0;//结束程序
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt(); //定义变量n用来输入那个四位数
int ge, shi, bai, qian; //定义变量ge,shi,bai,qian分别表示个位,十位,百位,千位
ge = n % 10; //对10取模得到个位数
n /= 10; //把此时的个位抛弃掉,得到三位数
shi = n % 10; //对10取模得到个位数
n /= 10; //把此时的个位抛弃掉,得到两位数
bai = n % 10; //对10取模得到个位数
n /= 10; //把此时的个位抛弃掉,得到一位数
qian = n % 10;//对10取模得到个位数
System.out.print(ge);
System.out.print(shi);
System.out.print(bai);
System.out.print(qian); //反向输出
scanner.close();
}
}
n = int(input()) #定义变量n用来输入那个四位数
ge = n % 10 #对10取模得到个位数
n //= 10 #把此时的个位抛弃掉,得到三位数
shi = n % 10 #对10取模得到个位数
n //= 10 #把此时的个位抛弃掉,得到两位数
bai = n % 10 #对10取模得到个位数
n //= 10 #把此时的个位抛弃掉,得到一位数
qian = n % 10 #对10取模得到个位数
print(ge, end="")
print(shi, end="")
print(bai, end="")
print(qian, end="") #反向输出
例题 2:温标转化
题意
给定一个开尔文温度,将其转换为华氏温度并输出。
思路分析
根据题目给出的转换公式,我们需要先将开尔文温度转换为摄氏温度,再将摄氏温度转换为华氏温度。具体步骤如下:
- 摄氏温度 = 开尔文温度 - 273.15
- 华氏温度 = 摄氏温度 × 1.8 + 32
按照这两个公式,我们只需要读入开尔文温度,然后进行相应的计算得到摄氏温度,最后计算出华氏温度并输出即可。
代码实现
#include <bits/stdc++.h>
using namespace std;
int main(){
double K; //定义变量K用来输入开尔文温度
cin >> K; //输入K
double C = K - 273.15; //将开尔文温度转换为摄氏温度
double F = C * 1.8 + 32; //将摄氏温度转换为华氏温度
cout << F; //输出华氏温度
return 0; //结束程序
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double K = scanner.nextDouble(); //定义变量K用来输入开尔文温度
double C = K - 273.15; //将开尔文温度转换为摄氏温度
double F = C * 1.8 + 32; //将摄氏温度转换为华氏温度
System.out.print(F); //输出华氏温度
scanner.close();
}
}
K = float(input()) #定义变量K用来输入开尔文温度
C = K - 273.15 #将开尔文温度转换为摄氏温度
F = C * 1.8 + 32 #将摄氏温度转换为华氏温度
print(F, end="") #输出华氏温度
例题 3:绕距
题意
给定两点的坐标,计算它们之间的绕距,即欧几里得距离与曼哈顿距离之差的绝对值。
思路分析
根据题目描述,绕距是欧几里得距离与曼哈顿距离之差的绝对值。我们需要分别计算这两种距离,然后求出它们的差的绝对值。
-
欧几里得距离(直线距离):
-
曼哈顿距离(沿着横平竖直的街道距离):
计算步骤如下:
- 读入两点的坐标
和
- 计算欧几里得距离
- 计算曼哈顿距离
- 计算两种距离之差的绝对值,即绕距
- 输出结果
代码实现
#include <bits/stdc++.h>
using namespace std;
int main(){
int x1, y1, x2, y2; //定义变量表示两点的坐标
cin >> x1 >> y1; //输入第一个点的坐标
cin >> x2 >> y2; //输入第二个点的坐标
//计算欧几里得距离
double euclidean = sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
//计算曼哈顿距离
double manhattan = abs(x1 - x2) + abs(y1 - y2);
//计算绕距
double result = abs(euclidean - manhattan);
cout << result; //输出绕距
return 0; //结束程序
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int x1 = scanner.nextInt(); //输入第一个点的横坐标
int y1 = scanner.nextInt(); //输入第一个点的纵坐标
int x2 = scanner.nextInt(); //输入第二个点的横坐标
int y2 = scanner.nextInt(); //输入第二个点的纵坐标
//计算欧几里得距离
double euclidean = Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));
//计算曼哈顿距离
double manhattan = Math.abs(x1 - x2) + Math.abs(y1 - y2);
//计算绕距
double result = Math.abs(euclidean - manhattan);
System.out.print(result); //输出绕距
scanner.close();
}
}
import math
# 输入两点的坐标
x1, y1 = map(int, input().split()) # 输入第一个点的坐标
x2, y2 = map(int, input().split()) # 输入第二个点的坐标
# 计算欧几里得距离
euclidean = math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2)
# 计算曼哈顿距离
manhattan = abs(x1 - x2) + abs(y1 - y2)
# 计算绕距
result = abs(euclidean - manhattan)
print(result, end="") # 输出绕距
课后习题
牛客代码笔记-牛栋 文章被收录于专栏
汗牛充栋,学海无涯。<br/> 内含算法知识点讲解,以及牛客题库精选例题。<br/> 学习算法,从牛栋开始。