zoukankan      html  css  js  c++  java
  • 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.也算正确???

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

     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 number
    ",s);
    58         }
    59     }
    60     if(cnt==0)
    61     {
    62         cout<<"The average of 0 numbers is Undefined
    ";
    63     }
    64     else if(cnt==1)
    65     {
    66         printf("The average of 1 number is %.2lf
    ",sum);
    67     }
    68     else
    69     {
    70         printf("The average of %d numbers is %.2lf
    ",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<<'
    ';
        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
  • 相关阅读:
    PHP+MYSQL单例模式的滑铁卢
    碰到一个安装SQl2008 Express Edition出错的怪异情况
    用虚拟并口解决向USB条码打印机发送ZPL指令的解决方案
    让excanvas支持动态创建的canvas标签(附演示文件)
    sql 检索语句
    c++ string 类基本用法样例
    Sqlite c/c++ api 学习
    最常见的20种VC++编译错误信息
    C#动态调用C++编写的DLL函数
    C++中将BYTE转16进制字符串
  • 原文地址:https://www.cnblogs.com/minqqq/p/12301735.html
Copyright © 2011-2022 走看看