C语言实现:找四位反序数与对称数问题
需积分: 6 137 浏览量
更新于2024-07-20
收藏 147KB DOC 举报
这篇资源主要包含了两个C语言编程题目,分别是求解四位数的反序数问题和寻找汽车里程表上对称数的问题。
对于第一个问题,“21.4位反序数”,题目要求找到一个四位数N,它的9倍等于其反序数。通过分析,我们可以设置N的四位数分别为i、j、k、l(0到9之间),然后建立等式(i*103+j*102+10*k+l)*9=(l*103+k*102+10*j+i)。为了找到这样的数,可以使用穷举法遍历所有可能的四位数,用C语言实现如下:
```c
#include<stdio.h>
int main() {
int i;
for (i = 1002; i < 1111; i++) { // 穷举四位数可能的值
if (i % 10 * 1000 + i / 10 % 10 * 100 + i / 100 % 10 * 10 + i / 1000 == i * 9) { // 判断反序数是否是原整数的9倍
printf("The number satisfied stats condition is: %d\n", i);
}
}
}
```
运行这段代码,结果会输出满足条件的四位数1089。
第二个问题是“求车速”。给定一个对称数(例如95859),两小时后里程表上的新对称数需满足同样条件。我们可以设新对称数为i,初始值为95860,然后递增i并检查是否对称。如果找到满足条件的对称数,就输出该数及车速。C语言实现如下:
```c
#include<stdio.h>
int main() {
int t, a[5]; // 数组a存放分解的数字位
long int k, i;
for (i = 95860;; i++) { // 以95860为初值,循环试探
for (t = 0, k = 100000; k >= 10; t++) { // 从高到低分解所取i值的每位数
a[t] = (i % k) / (k / 10); // 字,依次存放于a[0]~a[5]中
k /= 10;
}
if ((a[0] == a[4]) && (a[1] == a[3])) {
printf("The new symmetrical number kilometers is: %d%d%d%d%d\n", a[0], a[1], a[2], a[3], a[4]);
printf("The velocity");
// 这里计算车速的部分缺失,假设车辆行驶了x公里,时间是2小时,则速度为x/2 km/h
// 需要根据实际距离计算速度
break;
}
}
}
```
这个程序会找到新的对称数,并输出,但计算车速的部分未给出,需要补充计算实际行驶的距离才能得出车速。
这两个问题都涉及到基本的数学逻辑和C语言编程技巧,包括循环、条件判断、数组操作等。解决这些问题有助于提升编程思维和算法理解能力。
2023-11-05 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
2024-01-28 上传
2010-01-23 上传
2015-09-21 上传
2015-08-21 上传
2011-07-18 上传
Bernardasdf
- 粉丝: 0
- 资源: 1
最新资源
- 一步步教你安装VMware虚拟机
- Java正则表达式详解
- Symbian OS C++ for Mobile Phones Volume 3.pdf
- he elements of statistical learning data mining ,inference and prediction
- C语言矩阵求逆(源代码)
- C#编码命名规则,规范C#项目的命名
- 西电汤子瀛操作系统答案
- C#文件下载以及相关问题的处理
- c#WinForm生成安装程序
- 表单信息提交到指定邮箱
- oralce 基础学习资料
- Flex 3 CookBook 简体中文
- How Tomcat Works
- Struts+2+Design+and+Programming+A+Tutorial.pdf
- learning opencv computer vision with the opencv_library
- pureMVC中文版文档