科大讯飞笔试C++第二题
就讨厌这种题,不难就费时间,
思路:判断每个“,”之间是不是全是数字,还有有几个小数点,小数点不能位于首尾,基本上就KO了吧
#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
using namespace std;
int main() {
string str;
cin >> str;
int n = str.size();
vector<char>v1;
int flag = 1;
int d = 0;//记录有几个小数点
int num = 0;//记录结果
for (int i = 0; i <=n; i++) {
if (str[i] == ','|| i==n) {
int m = v1.size();
if (flag && m>= 2) {
int sum = v1.front()-'0' + v1[m - 1]-'0';
if (sum > 8)
num++;
if (i == n)
break;
}
v1.clear();
d = 0;
flag = 1;
if(str[i+1]=='.')flag = 0;
continue;
}
if (str[i] == '.') {
d++;
}
if(str[i]=='.'||(str[i] <= '9' && str[i] >= '0' && flag)) {
if (d <= 1) {
v1.push_back(str[i]);
}
else {
v1.clear();
flag = 0;
d = 0;
}
}
else {
flag = 0;
v1.clear();
d = 0;
}
}
cout << "result:" << num << endl;
system("pause");
}
#笔试题目##科大讯飞##include<cstdio>
#include<string>
#include<vector>
using namespace std;
int main() {
string str;
cin >> str;
int n = str.size();
vector<char>v1;
int flag = 1;
int d = 0;//记录有几个小数点
int num = 0;//记录结果
for (int i = 0; i <=n; i++) {
if (str[i] == ','|| i==n) {
int m = v1.size();
if (flag && m>= 2) {
int sum = v1.front()-'0' + v1[m - 1]-'0';
if (sum > 8)
num++;
if (i == n)
break;
}
v1.clear();
d = 0;
flag = 1;
if(str[i+1]=='.')flag = 0;
continue;
}
if (str[i] == '.') {
d++;
}
if(str[i]=='.'||(str[i] <= '9' && str[i] >= '0' && flag)) {
if (d <= 1) {
v1.push_back(str[i]);
}
else {
v1.clear();
flag = 0;
d = 0;
}
}
else {
flag = 0;
v1.clear();
d = 0;
}
}
cout << "result:" << num << endl;
system("pause");
}