c语言【问题描述】输入一行字符串,含有数字和非数字字符以及空格等,如: df23adfd56 2343?23dgjop535 如果将其中所有连续出现的数字视为一个整数,要求统计在该字符串中共有多少个整数,并将这些数依次输出。 【输入文件】从当前目录下的trans.in文件中取得输入。 该文件内只有一行,含有数字和其它任意字符。该行最长含80个字符。 【输出文件】将输出打印到当前目录下的trans.out文件中。 输出文件第一行为字符串包含的整数个数,第二行依次为各个整数,各整数之间用一个空格分隔。在第二行末也要输出一个回车符。 【输入样例】 df23adfd56 2343?23dgjop535 【输出样例】5 23 56 2343 23 535 【样例说明】在字符串df23adfd56 2343?23dgjop535中有5个整数分别是 23 56 2343 23 535 【评分标准】结果正确则该测试点得满分,否则该测试点得0分。上传c语言源程序为trans.c。
时间: 2024-02-11 07:09:36 浏览: 169
MidasCore_1.8.3_183000_c2e03049465008667d1c5a9adfd990e1.apk
好的,这是一个关于字符串处理和数字转换的问题。我可以帮你解决这个问题。以下是C语言代码实现:
```c
#include <stdio.h>
#include <ctype.h>
/* 判断一个字符是否为数字 */
int is_digit(char c) {
return c >= '0' && c <= '9';
}
/* 将字符串中的数字转换为整数 */
int str_to_int(char* str) {
int result = 0;
while (is_digit(*str)) {
result = result * 10 + (*str - '0');
str++;
}
return result;
}
int main() {
char str[81]; // 存储输入的字符串
int nums[81]; // 存储提取出来的整数
int count = 0; // 统计整数个数
fgets(str, 81, stdin); // 读取输入的字符串
for (int i = 0; str[i] != '\0'; i++) {
if (is_digit(str[i])) {
nums[count++] = str_to_int(str + i); // 将数字转换为整数并存储
while (is_digit(str[i])) {
i++; // 跳过已经处理过的数字
}
}
}
printf("%d\n", count); // 输出整数个数
for (int i = 0; i < count; i++) {
printf("%d ", nums[i]); // 输出提取出来的整数
}
printf("\n"); // 输出一个回车符
return 0;
}
```
你可以将上面的代码保存为`trans.c`文件,然后编译运行即可。输入数据从当前目录下的`trans.in`文件中读取,输出结果保存在当前目录下的`trans.out`文件中。
阅读全文