实验7-3-6 字符串转换成十进制整数
时间: 2023-04-24 19:06:48 浏览: 307
实验7-3-6是一个关于字符串转换成十进制整数的实验。在这个实验中,我们需要将一个字符串表示的数字转换成对应的十进制整数。这个过程需要注意一些细节,比如字符串中可能包含正负号、小数点等符号,需要进行特殊处理。同时,还需要考虑字符串中可能存在非数字字符的情况,需要进行错误处理。最终,我们需要将转换后的十进制整数输出。
相关问题
【ID:432】【14分】F. 实验7-3-6 字符串转换成十进制整数 题目描述 输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符"-",则代表该数是负数。 输入 输入在一行中给出一个以#结束的非空字符串。 输出 在一行中输出转换后的十进制数。题目保证输出在长整型范围内。用·c语言回答
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
int main() {
char s[1000];
scanf("%s", s);
int len = strlen(s);
int start = -1;
for (int i = 0; i < len; i++) {
if (s[i] == '-') {
start = i;
break;
} else if (isxdigit(s[i])) {
start = i;
break;
}
}
if (start == -1) {
printf("0\n");
return 0;
}
long long ans = 0;
for (int i = start; i < len; i++) {
if (!isxdigit(s[i])) {
break;
}
ans = ans * 16 + (isdigit(s[i]) ? s[i] - '0' : tolower(s[i]) - 'a' + 10);
}
if (s[start] == '-') {
ans = -ans;
}
printf("%lld\n", ans);
return 0;
}
```
通过本次实验,编程实现将一个十进制的正 整数分别转换为二进制、八进制和十六进制数。 栈的存储结构及实现
在编程中,将十进制整数转换为二进制、八进制和十六进制通常涉及到数值运算和字符串表示。这里我们可以借助栈的数据结构来辅助这个过程,虽然它并不是必需的,但它可以提供一种递归或逐步提取余数的方法。
首先,我们需要了解栈的基本操作:
1. **压入** (Push): 把元素添加到栈顶。
2. **弹出** (Pop): 删除并返回栈顶元素。
3. **查看栈顶** (Peek): 查看栈顶元素但不删除。
下面是一个简单的Python示例,利用栈来模拟上述转换过程:
```python
class Stack:
def __init__(self):
self.stack = []
def push(self, value):
self.stack.append(value)
def pop(self):
if not self.is_empty():
return self.stack.pop()
def is_empty(self):
return len(self.stack) == 0
def decimal_to_other_bases(decimal_num, base=16):
# 创建一个空栈
stack = Stack()
while decimal_num > 0:
remainder = decimal_num % base
stack.push(str(remainder))
decimal_num //= base
result = "".join(reversed(stack.stack)) # 从栈底开始拼接结果
return result, base
# 示例
decimal_input = 42
binary_result, binary_base = decimal_to_other_bases(decimal_input)
octal_result, octal_base = decimal_to_other_bases(decimal_input, 8)
hexadecimal_result, hexadecimal_base = decimal_to_other_bases(decimal_input, 16)
print(f"Decimal {decimal_input} in base {binary_base}: {binary_result}")
print(f"Decimal {decimal_input} in base {octal_base}: {octal_result}")
print(f"Decimal {decimal_input} in base {hexadecimal_base}: {hexadecimal_result}")
阅读全文