C 语言编程 6.19 有一天富豪遇到一个陌生人,富豪每天给陌生人1分,此后每一天给的钱翻倍。陌生人每天给富豪10万。求30天后的陌生人一共给富豪多少钱,富豪一共给陌生人多少钱。

本文通过C语言程序模拟了一个简单的财富交换过程,其中一个人每天给另一个人一分钱,并反过来收到一份额额逐渐翻倍的回报。该程序展示了如何使用循环结构进行数值累积计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>

int main()
{
	float i = 100000, j = 0.01,  sum = 0.0 , sum1 = 0.0  ; /* i 给 j 10 万,j 给 i 1分 每天×2 */

	int t ;
	
	for ( t = 1 ; t <= 30 ; t++ )
	{
		sum = sum + i ;
		
		sum1 = sum1 + j ;

		j = j * 2 ;  // 0.01 0.02 0.04 0.08 0.16 //		
	}

	printf("陌生人一共给富豪%.1f元\n\n富豪一共给陌生人%.1f元\n\n",sum,sum1) ;

	return 0 ;
}

总结:

难点在于变量类型的定义。

<think>我们需要使用ESP32连接到网络,获取公网IP,然后通过企业微信机器人发送消息。 步骤: 1. ESP32连接WiFi。 2. 使用一个HTTP请获取公网IP(可以使用一些提供IP查询的网站,如ipinfo.io/ip)。 3. 构建企业微信机器人的Webhook URL(需要知道企业微信机器人的key)。 4. 发送HTTP POST请到企业微信机器人的Webhook URL,消息内容包含获取到的IP。 注意:企业微信机器人的消息格式为JSON,支持文本消息。 企业微信机器人文档:https://work.weixin.qq.com/api/doc/90000/90136/91770 文本消息格式: { "msgtype": "text", "text": { "content": "消息内容", "mentioned_list":["@all"], // 可选,@所有人 "mentioned_mobile_list":["手机号"] // 可选,@指定手机号 } } 我们将编写一个函数,该函数完成以下任务: - 连接WiFi(如果尚未连接) - 获取公网IP - 发送到企业微信机器人 由于ESP32通常使用Arduino框架,我们将使用Arduino的WiFi库和HTTPClient库。 代码步骤: 1. 引入必要的库:WiFi.h, HTTPClient.h, ArduinoJson.h(用于构建JSON,也可以手动构建简单的JSON) 2. 定义WiFi的SSID和密码。 3. 定义获取公网IP的URL(例如:http://ipinfo.io/ip 或 http://ifconfig.me/ip 等) 4. 定义企业微信机器人的Webhook URL,其中包含你的key。 注意:由于获取IP的网站返回的是纯文本,所以我们不需要解析JSON,直接读取返回内容即可。 但是,企业微信机器人需要发送JSON格式,我们可以手动构建JSON字符串,也可以使用ArduinoJson库(推荐)。 由于我们只需要发送简单的文本,手动构建也可以。 我们假设已经连接WiFi,如果没有连接则连接。 函数设计: 函数名:send_public_ip_to_wechat 参数:无 返回值:void 步骤: 1. 连接WiFi(如果未连接) 2. 获取公网IP:向ipinfo.io发送GET请,读取返回的IP字符串(注意去除多余字符)。 3. 构建企业微信机器人的消息JSON。 4. 发送POST请。 注意:企业微信机器人要Content-Type为application/json。 代码示例:</think>以下是一个完整的ESP32程序,用于获取公网IP并通过企业微信机器人发送。代码使用Arduino框架,包含WiFi连接、IP获取和HTTP请功能: ```cpp #include <WiFi.h> #include <HTTPClient.h> #include <ArduinoJson.h> // 配置参数 const char* ssid = "YOUR_WIFI_SSID"; // 替换为你的WiFi名称 const char* password = "YOUR_WIFI_PASS"; // 替换为你的WiFi密码 const char* webhook_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_ROBOT_KEY"; // 替换为你的机器人Webhook key void setup() { Serial.begin(115200); connectToWiFi(); } void loop() { String publicIP = getPublicIP(); if (publicIP != "") { sendToWeChatRobot(publicIP); } delay(3600000); // 每小时发送一次 } // 连接WiFi void connectToWiFi() { WiFi.begin(ssid, password); Serial.print("Connecting to WiFi"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nConnected! Local IP: " + WiFi.localIP().toString()); } // 获取公网IP String getPublicIP() { HTTPClient http; http.begin("http://ifconfig.me/ip"); // 使用公共IP查询服务 int httpCode = http.GET(); if (httpCode == HTTP_CODE_OK) { String ip = http.getString(); ip.trim(); // 去除多余空白字符 Serial.println("Public IP: " + ip); http.end(); return ip; } else { Serial.printf("IP获取失败, 错误代码: %d\n", httpCode); http.end(); return ""; } } // 发送到企业微信机器人 void sendToWeChatRobot(String ip) { HTTPClient http; http.begin(webhook_url); http.addHeader("Content-Type", "application/json"); // 构建JSON消息 DynamicJsonDocument doc(256); doc["msgtype"] = "text"; JsonObject text = doc.createNestedObject("text"); text["content"] = "ESP32公网IP地址: " + ip; text["mentioned_list"] = SerializedArray("[]"); // 可选@特定成员 String payload; serializeJson(doc, payload); int httpCode = http.POST(payload); if (httpCode == HTTP_CODE_OK) { Serial.println("消息发送成功"); } else { Serial.printf("消息发送失败, 错误代码: %d\n", httpCode); Serial.println(http.getString()); } http.end(); } ``` ### 代码解释: 1. **WiFi连接**: - 使用`WiFi.begin()`连接本地WiFi网络 - 循环等待直到连接成功(`WL_CONNECTED`状态) 2. **公网IP获取**: - 通过HTTP GET请访问公共IP服务`ifconfig.me/ip` - 返回的纯文本IP地址经过`trim()`处理去除多余字符 3. **企业微信消息发送**: - 使用`DynamicJsonDocument`构建符合企业微信要的JSON格式 - 消息类型为`text`,内容包含获取到的IP地址 - 通过HTTP POST发送到Webhook URL 4. **执行周期**: - 每小时发送一次(`delay(3600000)`) - 成功/失败信息通过串口监视器输出 ### 使用前准备: 1. 在[企业微信管理后台](https://work.weixin.qq.com/)创建机器人,获取Webhook URL中的KEY 2. 安装必要的Arduino库: ```bash pio lib install "bblanchon/ArduinoJson@^6.19.4" pio lib install "HTTPClient" ``` 3. 替换代码中的以下信息: - `YOUR_WIFI_SSID` 和 `YOUR_WIFI_PASS` - `YOUR_ROBOT_KEY`(从Webhook URL中获取) ### 故障排查: - IP获取失败:尝试备用服务`http://api.ipify.org/` - 发送失败:检查企业微信机器人是否启用,KEY是否正确 - JSON格式错误:使用[企业微信JSON验证工具](https://work.weixin.qq.com/tool/fake-message) ### 增强建议: - 添加HTTPS支持(需安装WiFiClientSecure) - 实现IP变化检测(存储上次IP进行对比) - 添加看门狗定时器防止程序卡死
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值