用C语言 输入一个字符串,摘除字符串中不能组成数字的字符,保留第一个出现的小数点(多个小数点的情况)并判断新字符串是整数还是浮点数,取出字符串中的每个数字进行相加,在最后输出新字符串和加和的值
时间: 2024-03-05 20:50:35 浏览: 244
好的,我可以为您解答这个问题。
您可以使用 C 语言中的字符数组和循环语句来实现这个功能。具体步骤如下:
1. 首先定义一个字符数组来存储输入的字符串,并使用 scanf 函数读入字符串。
```c
char str[100];
scanf("%s", str);
```
2. 然后遍历字符串中的每个字符,判断是否为数字或小数点。如果是数字或小数点,则将其加入到一个新的字符数组中。
```c
char newStr[100];
int count = 0;
int pointCount = 0;
for (int i = 0; str[i] != '\0'; i++) {
if (isdigit(str[i])) {
newStr[count++] = str[i];
} else if (str[i] == '.' && pointCount == 0) {
newStr[count++] = str[i];
pointCount++;
}
}
newStr[count] = '\0';
```
在这段代码中,count 记录新字符串的长度,pointCount 记录小数点出现的次数。如果字符是数字,则将其加入新字符串中;如果是小数点且小数点还没有出现过,则将其加入新字符串中,并将 pointCount 加 1。
3. 判断新字符串是整数还是浮点数。如果新字符串中有小数点,则为浮点数,否则为整数。
```c
if (pointCount > 0) {
printf("新字符串是浮点数: %s\n", newStr);
} else {
printf("新字符串是整数: %s\n", newStr);
}
```
4. 取出新字符串中的每个数字进行相加,并输出结果。
```c
int sum = 0;
for (int i = 0; newStr[i] != '\0'; i++) {
if (isdigit(newStr[i])) {
sum += newStr[i] - '0';
}
}
printf("新字符串中数字的和为:%d\n", sum);
```
完整代码如下:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[100];
scanf("%s", str);
char newStr[100];
int count = 0;
int pointCount = 0;
for (int i = 0; str[i] != '\0'; i++) {
if (isdigit(str[i])) {
newStr[count++] = str[i];
} else if (str[i] == '.' && pointCount == 0) {
newStr[count++] = str[i];
pointCount++;
}
}
newStr[count] = '\0';
if (pointCount > 0) {
printf("新字符串是浮点数: %s\n", newStr);
} else {
printf("新字符串是整数: %s\n", newStr);
}
int sum = 0;
for (int i = 0; newStr[i] != '\0'; i++) {
if (isdigit(newStr[i])) {
sum += newStr[i] - '0';
}
}
printf("新字符串中数字的和为:%d\n", sum);
return 0;
}
```
希望能够帮助到您!
阅读全文