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
时间: 2024-02-24 20:56:04 浏览: 116
这是一个编程问题,需要使用C语言进行解决。以下是一个参考的解决方案:
```c
#include <stdio.h>
int main() {
FILE *fin = fopen("trans.in", "r");
FILE *fout = fopen("trans.out", "w");
char str[81];
fgets(str, 81, fin);
int count = 0;
int num = 0;
for (int i = 0; str[i] != '\0'; i++) {
if (str[i] >= '0' && str[i] <= '9') {
num = num * 10 + str[i] - '0';
} else {
if (num != 0) {
count++;
fprintf(fout, "%d ", num);
num = 0;
}
}
}
if (num != 0) {
count++;
fprintf(fout, "%d\n", num);
} else {
fprintf(fout, "\n");
}
fprintf(fout, "%d", count);
fclose(fin);
fclose(fout);
return 0;
}
```
该程序首先打开了输入文件`trans.in`和输出文件`trans.out`,然后读入一行字符串。接着,程序遍历字符串中的每一个字符,如果该字符是数字,则将其加入到当前数字中;如果该字符不是数字,则将当前数字输出,并计数器加一。最后,程序输出数字的个数和所有数字。
需要注意的是,我们需要在最后一个数字输出后判断一下,如果这个数字不是0,则计数器需要加一。同时,在输出数字的时候,我们需要在每个数字后面加一个空格,并在最后一个数字后面加一个回车符。
阅读全文