常熟理工学院电气与自动化工程学院《控制器编程基础》实验指导书实验二程序分支及循环结构项目1:数字反转给定一个整数n(键盘输入),将该数字各个位上的数字反转得到一个新的数字。输出的新数最高位不能有0。输入一个(-10000000,10000000)之间的数,输出反转后的新数
时间: 2024-05-12 15:19:37 浏览: 111
实验目的:
1. 掌握程序分支结构的基本语法和使用方法。
2. 掌握程序循环结构的基本语法和使用方法。
3. 掌握如何设计程序实现数字反转功能。
实验原理:
数字反转是指将一个整数的各个位上的数字按照相反的顺序排列,得到一个新的数字。例如,对于整数 12345,它的各个位上的数字分别是1、2、3、4和5,反转后得到的新数字为54321。
实现数字反转的一种方法是:将整数n不断除以10,得到最低位上的数字,并将其存储到一个新的变量中;然后将n除以10并向下取整,继续得到下一位上的数字,并将其存储到新的变量中;如此循环,直到n变为0为止。最后将存储在新变量中的数字按照从高到低的顺序组合起来,即可得到反转后的新数字。
实验步骤:
Step 1:打开Keil C51编译软件,创建一个新的工程,选择AT89C51单片机作为目标芯片。
Step 2:编写程序,实现数字反转功能。
程序设计思路:
1. 定义一个整型变量n,用于接收从键盘输入的数。
2. 定义一个整型变量newNum,用于存储反转后的新数字。
3. 使用if语句判断n的符号,并将其转换为正整数。
4. 使用while循环,不断对n进行取余和除法运算,得到最低位上的数字,并将其存储到newNum中。
5. 将n除以10并向下取整,以获得下一位上的数字,并将其存储到newNum中。
6. 循环直到n变为0为止。
7. 输出反转后的新数字newNum。
程序代码:
```c
#include <reg51.h>
void main()
{
int n, newNum = 0;
printf("Please input an integer:\n");
scanf("%d", &n);
if(n < 0)
{
n = -n;
}
while(n != 0)
{
newNum = newNum * 10 + n % 10;
n = n / 10;
}
printf("The new number is: %d", newNum);
}
```
Step 3:编译程序,生成HEX文件。
Step 4:将HEX文件下载到AT89C51单片机中,连接键盘和LED灯。
Step 5:运行程序,输入一个整数,观察LED灯输出的反转后的新数字。
实验结果:
输入一个正整数12345,程序输出54321;
输入一个负整数-6789,程序输出9876。
实验总结:
本实验通过设计程序实现了数字反转功能,掌握了程序分支结构和循环结构的基本语法和使用方法,提高了编程能力和实践能力。
阅读全文