标签:ace str click string转换 else i++ 知识 index numbers
知识点:c++中将string转换为int 于double的函数(原来还有这种好东西)
转化为int,有两种方式:
string s = "123";
int c = atoi(s.c_str());
或者
int c = stoi(s);
将string转化为double,也是两种方式。
string s = "123.5";
double c = atof(s.c_str())//这个蛮好用的
或者
double c = stod(s);
1054 求平均值
这题 那个string s换成 char *s就过了,可能涉及到了缓冲区的问题吧 不是很清楚
最后一个测试点好坑 123.也算正确???
条件判断多的想哭,头发又掉了不少呜呜呜
1 #include<bits/stdc++.h> 2 using namespace std; 3 int juige(char *s) 4 { 5 if(s[0]==‘-‘||(s[0]>=‘0‘&&s[0]<=‘9‘))//第一位只能为数字或者负号 6 { 7 if(s[0]==‘0‘) 8 { 9 if(s[1]!=‘\0‘&&s[1]!=‘.‘) return 0;//零后面只能是小数点 10 } 11 if(s[0]==‘-‘) 12 { 13 if(!((s[1]>‘0‘&&s[1]<=‘9‘)||(s[1]==‘0‘&&s[2]==‘.‘))) return 0; 14 } 15 int index=-1,cnt=0;//记录小数点位置和数量 16 for(int i=1;i<strlen(s);i++)//从第二位向后 17 { 18 if(!(s[i]<=‘9‘&&s[i]>=‘0‘||s[i]==‘.‘)) return 0;// 19 if(s[i]==‘.‘) 20 { 21 cnt++; 22 index=i; 23 } 24 } 25 //小数点多于1个,或者不在后3位 26 if(cnt>1||(cnt==1&&index!=strlen(s)-3&&index!=strlen(s)-2&&index!=strlen(s)-1)) return 0; 27 else//合法 确定范围 28 { 29 double temp=atof(s); 30 if(temp>1000||temp<-1000) 31 { 32 return 0; 33 } 34 } 35 return 1; 36 } 37 else return 0; 38 } 39 int main() 40 { 41 int n; 42 cin>>n; 43 int cnt=0; 44 double sum=0; 45 for(int i=0;i<n;i++) 46 { 47 char s[100]; 48 memset(s,0,sizeof(s)); 49 cin>>s; 50 if(juige(s)) 51 { 52 cnt++; 53 sum+=atof(s); 54 } 55 else 56 { 57 printf("ERROR: %s is not a legal number\n",s); 58 } 59 } 60 if(cnt==0) 61 { 62 cout<<"The average of 0 numbers is Undefined\n"; 63 } 64 else if(cnt==1) 65 { 66 printf("The average of 1 number is %.2lf\n",sum); 67 } 68 else 69 { 70 printf("The average of %d numbers is %.2lf\n",cnt,sum/cnt); 71 } 72 }
1065 单身狗
这题重要的是开一个二维数组,一个存对象一个存是否出现。
重要的是实现 如果出现的人他的对象也出现了,那他们就没落单
数组刚开始开小了
if(cp[cp[v[i]][0]][1]==0)//对象未出现或没对象
#include<bits/stdc++.h> #include<vector> using namespace std; int cp[100005][2];//对象和是否出现 int main() { int q; vector<int>v; cin>>q; for(int i=0;i<q;i++) { int x, y; cin>>x;cin>>y; cp[x][0]=y,cp[y][0]=x; } int n; cin>>n; for(int i=0;i<n;i++) { int a; cin>>a; cp[a][1]=1;//出现过 v.push_back(a); } int cnt=0; for(int i=0;i<n;i++) { if(cp[cp[v[i]][0]][1]==0)//对象未出现或没对象 { cnt++; } else v[i]=-999; } cout<<cnt<<‘\n‘; sort(v.begin(),v.end()); int x=n-cnt; for(int i=x;i<n;i++) { if(i!=x) cout<<‘ ‘; printf("%05d",v[i]); } }
标签:ace str click string转换 else i++ 知识 index numbers
原文地址:https://www.cnblogs.com/minqqq/p/12301735.html