码迷,mamicode.com
首页 > 其他好文 > 详细

2.12

时间:2020-02-13 00:21:28      阅读:137      评论:0      收藏:0      [点我收藏+]

标签: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 }
View Code

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]);
    }
}
View Code

 

2.12

标签:ace   str   click   string转换   else   i++   知识   index   numbers   

原文地址:https://www.cnblogs.com/minqqq/p/12301735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!