2.12

知识点: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.也算正确???

条件判断多的想哭,头发又掉了不少呜呜呜

2.12

 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]!=''&&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 numbern",s);
58         }
59     }
60     if(cnt==0)
61     {
62         cout<<"The average of 0 numbers is Undefinedn";
63     }
64     else if(cnt==1)
65     {
66         printf("The average of 1 number is %.2lfn",sum);
67     }
68     else
69     {
70         printf("The average of %d numbers is %.2lfn",cnt,sum/cnt);
71     }
72 }

View Code

1065 单身狗

这题重要的是开一个二维数组,一个存对象一个存是否出现。

重要的是实现 如果出现的人他的对象也出现了,那他们就没落单

数组刚开始开小了

if(cp[cp[v[i]][0]][1]==0)//对象未出现或没对象

2.12

#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

 

原文链接: https://www.cnblogs.com/minqqq/p/12301735.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    2.12

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/328899

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午4:54
下一篇 2023年3月1日 下午4:55

相关推荐