C语言设计一个算法,NET 为三位数,E 不等于 0,N 不等于 0,(ET)2 =NET;
时间: 2024-11-18 20:16:54 浏览: 13
单片机C语言Proteus仿真实例TIMER0控制四只LED滚动闪烁
在C语言中,我们可以设计一个简单的算法来解决这个问题。这个算法需要检查给定的十进制数`NET`是否满足条件`(ET)2 = NET`,其中`E`, `T`代表数字`ET`转换成二进制后的两个部分(例如,如果`ET=47`,那么`E=4`,`T=7`)。以下是使用循环和条件判断实现的步骤:
```c
#include <stdio.h>
#include <math.h> // 引入math库,用于取整
// 函数声明
int convertToBinary(int num);
int main() {
int E, T, NET;
printf("请输入三位数NET (E不是0且N不是0): ");
scanf("%d", &NET);
// 检查输入是否合法
if (NET < 10 || NET > 999 || (NET % 10 == 0 || NET / 10 == 0)) {
printf("错误: 输入的NET不是一个有效的三位数.\n");
return 1;
}
// 分离出E和T
E = NET / 100;
T = NET % 10;
// 将E和T转换为二进制并连接起来
int ET_binary = convertToBinary(E) * 10 + convertToBinary(T);
// 比较原始的NET和ET的二进制结果
if (ET_binary == NET) {
printf("(ET)2 = NET 成立, 其中 E=%d, T=%d\n", E, T);
} else {
printf("(ET)2 = NET 不成立.\n");
}
return 0;
}
// 转换函数,将整数转换为二进制
int convertToBinary(int num) {
int binary[8] = {0}; // 存储8位二进制数
int index = 0;
while (num > 0) {
binary[index++] = num % 2;
num /= 2;
}
// 返回反转的二进制数组(从低位到高位)
for (int i = index - 1; i >= 0; i--) {
binary[i] = binary[i];
}
return binary[0] * pow(10, index - 1) + binary[1] * pow(10, index - 2) + ... + binary[index - 1]; // 只保留最高两位
}
```
阅读全文