C语言题目:求具有abcd=(ab+cd)^2性质的四位数

题目描述

3025这个数具有一种独特的性质:将它平分为二段,即30和25,使之相加后求平方,即(30+25)2,恰好等于3025本身。请求出具有这样性质的全部四位数

输入格式

输出格式

满足题意的数全部四位数(从小到大输出,且数之间用空格分开)

样例输入

复制代码

样例输出

复制代码
2025 3025 9801

代码流程及分析

1. 引入头文件

代码首先引入了stdio.hmath.h头文件。stdio.h用于标准输入输出,math.h提供了数学函数,如pow,用于计算幂。

2. 主函数定义

main函数是程序的入口点,它没有接收任何参数,也没有返回值。

3. 定义变量

main函数内部,定义了四个整型变量:abmn

4. 遍历1000到9999之间的数

使用一个for循环从1000遍历到9999:

  • int i = 1000;初始化循环变量i
  • 循环条件i < 10000;确保i在1000到9999之间。

5. 提取千位和百位数字

在循环体内:

  • m = i / 1000;通过整除1000提取千位数字。
  • n = i % 1000 / 100;通过取余1000再除以100提取百位数字。

6. 构造回文数的前半部分

  • a = m * 10 + n;构造一个两位数,其中m是千位数字,n是百位数字。

7. 构造回文数的后半部分

  • b = i - a * 100;计算个位和十位数字,即原数i减去前两位数a乘以100。

8. 检查是否为平方数

  • if (pow((a + b), 2) == i)使用pow函数计算(a + b)的平方,并检查是否等于原数i。如果是,说明找到了一个回文平方数。

9. 输出结果

如果找到一个回文平方数,则使用printf("%d ", i);输出这个数。

10. 程序结束

main函数返回0,表示程序正常结束。

源代码

复制代码
#include <stdio.h>
#include <math.h>
int main(void)
{
	int a, b;
	int m, n;
	for (int i = 1000; i < 10000; i++)
	{
		m = i / 1000;
		n = i % 1000 / 100;
		a = m * 10 + n;
		b = i - a * 100;
		if (pow((a + b), 2) == i)
		{
			printf("%d ", i);
		}
	}
	return 0;
}
相关推荐
rannn_11141 分钟前
【力扣hot100】链表专题|21、2、19、24、92、25
java·数据结构·算法·leetcode·链表·开发
SNAKEpc121381 小时前
OpenGL(十五)- 着色器语言GLSL
c语言·c++·线性代数·算法·矩阵·图形渲染·着色器
AI服务老曹1 小时前
AI视频分析API完整流程:设备、算法与告警接口接入指南
人工智能·算法·音视频
鹿角片ljp1 小时前
LeetCode 21. 合并两个有序链表
算法·leetcode·链表
Rabitebla1 小时前
C++11 新特性详解(一):列表初始化、initializer_list 与右值引用
java·开发语言·数据结构·c++·算法·leetcode·list
XMAIPC_Robot1 小时前
RK3588+STM32:高性能机器人运动控制解决方案,兼顾实时性与AI算力
人工智能·stm32·嵌入式硬件·算法·fpga开发·机器人·arm+fpga
天吾cc1 小时前
RTT-MQTT
网络·单片机·嵌入式硬件·算法
vivo互联网技术1 小时前
MagicBokeh:单步统一生成式框架实现真实感长焦虚化渲染 | CVPR 2026 Oral
人工智能·算法
lucas_AI2 小时前
Grok 4.6:追平 GPT-5.6 Sol 的半价旗舰,但别只看跑分
人工智能·算法
MC皮蛋侠客2 小时前
TDengine C++ 系列(11):性能模型与调优——从测量到优化
c++·php·tdengine