琐碎知识

好多细节知识已经忘了,需要写出来汇总一下了:

1.输出两位小数

#include<iostream>
#include<iomanip> //setprecision() 
using namespace std;

int main()
{
    float a=1.66666;
    printf("%.2f\n", a);
    cout<<setprecision(3)<<a<<endl;
    system("pause");
    return 0;
}

2.四舍五入法

#include<iostream>
#include<iomanip> 
using namespace std;
int main()
{    
     double a=1.121111156789;    
     a = (int)(a * 100 +0.5)/100.0; //先类型转换再执行除法     
     cout<<a<<endl;    
     system("pause");    
     return 0;
}

 

3.int型数组排序

#include<iostream>
using namespace std;

int cmp(const void *a, const void *b)
{
    return *(int *)a - *(int *)b;
}

int main()
{
    int a[10];
    int i;
    for(i=0;i<10;i++)
    {
       cin>>a[i];
    }
    
    qsort(a, 10, sizeof(a[0]), cmp);
    
    for(i=0;i<10;i++)
    {
         cout<<a[i]<<" ";
    }
    cout<<endl;
    system("pause");
    return 0;
}


4.结构体一级排序

#include<iostream>
#include<iomanip> 
using namespace std;

struct dist{
       int x;
       double dist;
}s[10];

int cmp(const void *a, const void *b)
{
    return(*(dist *)a).dist > (*(dist *)b).dist ? 1 : -1;
}

int main()
{
    int i;
    for(i=0;i<10;i++)
    {
        cin>>s[i].x>>s[i].dist;
    }
    
    qsort(s, 10, sizeof(s[0]), cmp);
    
    for(i=0;i<10;i++)
    {
        cout<<s[i].dist<<" ";
    }
    cout<<endl;
    system("pause");
    return 0;
}


5.辗转相除法求最大公约数

int gcd(int a, int b)
{
    if(a%b== 0)
        return b;
    else
        return gcd(b, a%b);
}


6.筛法求素数(未优化)

#include<iostream>
#include<cmath>
using namespace std;
int N=1000001;
bool* prime=new bool[N];
int main()
{
      int i, j;
    for(i=2;i<N;i++)
    {
        prime[i]=true;
    } 
  
    for(i=2;i<=N;i++)
    {
       for(j=2;i*j<=N;j++)
       {
              prime[i*j]=false;
       }
    }
    
    for(i=2;i<100;i++)
    {
        if(prime[i])
          cout<<i<<endl;
    } 
    system("pause");
    return 0;
}

7.并查集

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

int father[50002];
int find(int x)
{
    if(father[x] != x)
        father[x] = find(father[x]);
    return father[x];
} 

int main()
{
    int a, b, m, n, p;
    cin>>n>>m>>p;
    for(int i=1;i<=n;i++)
        father[i] = i;
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d",&a,&b);
        a=find(a);
        b=find(b);
        father[a]=b;
    }
    for(int i=1;i<=p;i++)
    {
        scanf("%d%d",&a,&b);
        a=find(a);
        b=find(b);
        if(a==b)
             printf("Yes");
        else 
             printf("No");
    }
    system("pause");
    return 0;
}





 




posted on 2012-04-18 22:00  java课程设计例子  阅读(159)  评论(0编辑  收藏  举报