小渣渣我用了另外一种方式。流操作。还是原来的思路还是原来一样的简单粗暴。
题目: fafau_1543
1a0z520bbb
求出上面一串字符中数字的和。采用流操作。
代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
#include <sstream>
#include <cctype>
#include <cstring>
using namespace std;
int main()
{
char s[10000];
int T = 0;
while (gets(s))// gets 输入包括‘\n’
{
stringstream st;//<sstream>库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作
int len = strlen(s)-1;
for (int i = 0; i < len; i++)
{
if (isalpha(s[i]))//判断是否为字母
s[i] = ' ';//把字母设置成空格,相当于对这个字符串”还原“,都还原后,进行正常的读入double里面。
}
st << s;
double t;
double sum = 0;
while (st >> t)
{
sum += t;
}
printf("Case %d: %.5lf\n", ++T, sum);
}
return 0;
}
hdu-1106
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<sstream>
#include<cstring>
#include<algorithm>
using namespace std;
const int MX = 1000 + 5;
char str[MX];
int num[MX];
int main()
{
while (gets(str))
{
stringstream ss;
int len = strlen(str);
for (int i = 0; i < len;++i)
if (str[i] == '5')
str[i] = ' ';
ss << str;
int id = 0;
int tmp;
while (ss >> tmp)
{
num[id++] = tmp;
}
sort(num, num + id);
cout << num[0];
for (int i = 1; i < id; ++i)
cout << " " << num[i];
cout << endl;
}
return 0;
}