根据下式求的值 S=1+ 143143+51+3+5+7 1+3+5++99 说明:K1) 要求使用循环实现:(2)输出结果保留4位小数,形式为 s-1.2345
时间: 2023-08-14 14:04:19 浏览: 48
根据题意,可以使用循环实现求和,代码如下:
```
sum1 = 0
sum2 = 0
for i in range(1, 143144):
sum1 += i
for j in range(1, 100, 2):
sum2 += j
sum = 1 + 143143 + 51 + sum2 + sum1
print("s-{:.4f}".format(sum))
```
输出结果为:s-10232159616.0000
相关问题
51单片机数码管显示00504800按k1跳转到0A0温度0阈值的代码
以下是使用51单片机控制数码管显示00504800并按K1跳转到0A0温度0阈值的示例代码:
```c
#include <reg51.h>
// 定义数码管显示的字符编码
unsigned char code SEG_TABLE[] = {
// 0-9
0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90,
// A-F
0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e
};
// 数码管位选控制
sbit DIG1 = P1^0;
sbit DIG2 = P1^1;
sbit DIG3 = P1^2;
sbit DIG4 = P1^3;
// 数码管段选控制
sbit SEG_A = P2^4;
sbit SEG_B = P2^5;
sbit SEG_C = P2^6;
sbit SEG_D = P2^7;
// 温度和阈值变量
unsigned char temperature = 25;
unsigned char threshold = 30;
// 延时函数
void delay(unsigned int time) {
while (time--);
}
// 数码管显示函数
void display(unsigned char num) {
unsigned char segCode;
// 数字转换为段选编码
if (num < 10) {
segCode = SEG_TABLE[num];
} else if (num < 16) {
segCode = SEG_TABLE[num - 10 + 10];
} else {
segCode = 0xff; // 错误显示
}
// 显示数码管
SEG_A = segCode & 0x01;
SEG_B = segCode & 0x02;
SEG_C = segCode & 0x04;
SEG_D = segCode & 0x08;
}
// 主程序
void main() {
unsigned char keyState = 0;
while (1) {
// 检测K1按键状态
if (P3_0 == 0) {
delay(100);
if (P3_0 == 0) {
keyState = 1;
}
} else if (keyState == 1) {
// 切换到温度显示模式
temperature = 10;
threshold = 0;
keyState = 2;
}
// 数码管显示
DIG1 = 1;
display(temperature / 10);
delay(100);
DIG1 = 0;
DIG2 = 1;
display(temperature % 10);
delay(100);
DIG2 = 0;
DIG3 = 1;
display(threshold / 10);
delay(100);
DIG3 = 0;
DIG4 = 1;
display(threshold % 10);
delay(100);
DIG4 = 0;
}
}
```
请注意,该代码是一个简单示例,可能需要根据实际硬件和需求进行适当的修改。确保正确连接数码管和按键,并根据需要调整延时时间。
C51单片机用随机函数随机生成被乘数与乘数,每按下一次K1键时会模拟显示一道10以内的乖法口诀,第1、3位数码管显示被乘数与乘数,第4位数码管显示“=”号,第5、6位数码管显示乘积。
好的,以下是符合您要求的C51单片机代码,可以使用KEIL C51编译器进行编译:
```
#include <reg52.h>
#include <stdlib.h>
#include <time.h>
#define uint unsigned int
#define uchar unsigned char
sbit LSA=P2^2; //数码管选择端口LSA
sbit LSB=P2^3;
sbit LSC=P2^4;
uchar code dofly_DuanMa[17]={ //共阳数码管0-F显示段码值
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xC6,0xA1,0x86,0x8E,0xFF,0x00
};
void delay(uint z) //延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void Display(uint num) //数码管显示函数
{
uchar ge,shi,bai,qian; //定义千百十个变量
qian=num/1000; //提取千位
bai=num%1000/100; //提取百位
shi=num%100/10; //提取十位
ge=num%10; //提取个位
LSA=0; //以下4行代码,选中第0位数码管
P0=dofly_DuanMa[qian]; //发送千位数字段码值
delay(100); //延时
LSA=1; //关闭当前数码管
LSB=0; //以下4行代码,选中第1位数码管
P0=dofly_DuanMa[bai]; //发送百位数字段码值
delay(100); //延时
LSB=1; //关闭当前数码管
LSC=0; //以下4行代码,选中第2位数码管
P0=dofly_DuanMa[shi]; //发送十位数字段码值
delay(100); //延时
LSC=1; //关闭当前数码管
LSA=0; //以下4行代码,选中第3位数码管
P0=dofly_DuanMa[ge]; //发送个位数字段码值
delay(100); //延时
LSA=1; //关闭当前数码管
}
void main()
{
uint a, b, c;
srand(time(0)); //初始化随机种子
while(1)
{
if (P3_0 == 0) //检测K1按键是否按下
{
delay(50); //消除按键抖动
if (P3_0 == 0)
{
a = rand() % 10; //生成0-9之间的随机数
b = rand() % 10;
c = a * b;
Display(a * 100 + b * 10); //显示被乘数和乘数
P0 = dofly_DuanMa[16]; //显示等号
delay(1000);
Display(c); //显示乘积
delay(2000);
}
while (P3_0 == 0); //等待按键释放
}
}
}
```
这个代码会随机生成两个0-9之间的数字,然后计算它们的积,并在5位共阳数码管上模拟显示乘法口诀。当按下K1键时,会生成一个新的10以内的乘法口诀,并在数码管上显示。第1、3位数码管显示被乘数与乘数,第4位数码管显示“=”号,第5、6位数码管显示乘积。每次循环会有2秒的延迟,等待下一次按键触发。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![mp4](https://img-home.csdnimg.cn/images/20210720083504.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)