用C语言 输入一个字符串,摘除字符串中不能组成数字的字符,保留第一个出现的小数点(多个小数点的情况)并判断新字符串是整数还是浮点数,分别取出新字符串的整数部分和浮点数部分进行相加,在最后输出新字符串和加和的值
时间: 2024-03-05 11:50:04 浏览: 61
好的,以下是一个 C 语言的示例代码来实现您的需求:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
bool is_digit(char c) {
return (c >= '0' && c <= '9');
}
bool is_dot(char c) {
return (c == '.');
}
bool is_valid_char(char c) {
return (is_digit(c) || is_dot(c));
}
void extract_number(char *s) {
char digits[strlen(s) + 1];
int dot_count = 0;
int k = 0;
for (int i = 0; i < strlen(s); i++) {
if (is_digit(s[i])) {
digits[k++] = s[i];
} else if (is_dot(s[i])) {
if (dot_count == 0) {
digits[k++] = s[i];
dot_count++;
}
} else {
if (isdigit(s[i])) {
digits[k++] = s[i];
}
}
}
digits[k] = '\0';
char *endptr;
double sum = strtod(digits, &endptr);
if (*endptr != '\0') {
printf("无法转换为数字!\n");
return;
}
int integer_part = (int) sum;
double decimal_part = sum - integer_part;
printf("新字符串为:%s\n", digits);
printf("整数部分为:%d\n", integer_part);
printf("浮点数部分为:%f\n", decimal_part);
printf("加和的值为:%f\n", sum);
}
int main() {
char s[100];
printf("请输入字符串:");
scanf("%s", s);
extract_number(s);
return 0;
}
```
这个 C 语言程序首先会读入一个字符串,然后摘除不能组成数字的字符,并保留第一个出现的小数点。接着它会尝试将新字符串转换为浮点数,如果转换失败则输出错误信息,否则计算出新字符串的整数部分和浮点数部分,并输出加和的值。希望这个代码能够帮到您!
阅读全文