纯C语言跑分(详细注释)

#include <stdio.h>
#include <time.h>//clock()所属头文件
const int N_qsort=10000;//快排的数据规模
const int M=20000,N=50000;//整点、浮点运算的规模
const int N_pi=100000000;//计算圆周率的运算规模
double s_int,s_float,s_pi,s_sort;
void int_comp(void);//整点运算
void float_comp(void);//浮点运算
void pi_comp(void);//泰勒级数推论式计算圆周率
void Qsort(int a[],int low,int high);//快排算法
void qsort(void);//调用快排算法的函数
void panduan();
void PAUSE();


int main(){

            printf("------\n性能测试开始\n");
            int_comp();//整点运算
            float_comp();//浮点运算
            pi_comp();//泰勒级数推论式计算圆周率
            qsort();//快速排序
            printf("------\n测试结束\n");
            printf("整点运算得分:%lf\n",s_int);
            printf("泰勒级数推论式计算圆周率运算得分:%lf\n",s_pi);
            printf("排序运算得分:%lf\n",s_sort);
            printf("总得分:%lf\n",s_int+s_float+s_pi+s_sort);
            panduan();
            PAUSE();
}

void int_comp(void){//整点加法
     printf("整点运算测试中(运算次数为:%lf)\n",(double)M*N);
     clock_t start,end;
     int i,j;
     start=clock();
     for(i=0;i<M;i++)
         for(j=0;j<N;j++);
     end=clock();
     double duration=(double)(end-start)/CLOCKS_PER_SEC;
     double score=(M*N)/duration;
     /*注:score本身即为运算速度,数量级一般在亿,为方便起见,本程序的分数均采用运算速度除以一万后的结果!除特殊说明,后面类同!*/
     s_int=score/10000;
     //printf("整点运算测试完毕!分数:%lf\n",s_int);
}

void float_comp(void){//浮点加法
     printf("浮点运算测试中(运算次数为:%lf)\n",(double)M*N);
     clock_t start,end;
     float i,j;
     start=clock();
     for(i=0;i<M;i++)
     for(j=0;j<N;j++);
     end=clock();
     double duration=(double)(end-start)/CLOCKS_PER_SEC;
     double score=(M*N)/duration;
     s_float=score/10000;
     //printf("浮点运算测试完毕!分数:%lf\n",s_float);
}

void pi_comp(void){
     printf("泰勒级数推论式计算圆周率中(运算次数为:%d)\n",N_pi);
     int m,i=1;
     double s=0;
     clock_t start,end;
     start=clock();
     for(m=1;m<N_pi;m+=2){
        s+=i*(1.0/m);
        i=-i;
     }
     end=clock();
     double duration=(double)(end-start)/CLOCKS_PER_SEC;
     double score=N_pi/duration;
     //下面一行可输出计算出来的圆周率
     printf("pi=%lf\n",4*s);
     s_pi=score/10000;
     //printf("泰勒级数推论式计算圆周率完毕!分数:%lf\n",s_pi);
}
void Qsort(int a[],int low,int high){//快排算法
     if(low>=high) return;
     int first=low;
     int last=high;
     int key=a[first];
     while(first<last){
         while(first<last&&a[last]>=key) --last;
         a[first]=a[last];
         while(first<last&&a[first]<=key) ++first;
         a[last]=a[first];
     }
     a[first]=key;
     Qsort(a,low,first-1);
     Qsort(a,first+1,high);
}
void qsort(void){//调用快排算法的函数
     int a[N_qsort],i;
     for(i=N_qsort;i>0;i--) a[N_qsort-1]=i;
     printf("排序运算中(对%d个数进行快速排序)\n",N_qsort);//采用最坏时间方案
     clock_t start,end;
     start=clock();
     Qsort(a,0,N_qsort-1);
     end=clock();
     double duration=(double)(end-start)/CLOCKS_PER_SEC;
     double score=(N_qsort*N_qsort)/duration;
     s_sort=score/10000;
//printf("排序运算测试完毕!分数:%lf\n",s_sort);
}
void panduan(){
    float i=s_int+s_float+s_pi+s_sort;
    printf("根据分数,授予您的爱机<");
    if (i>0&&i<20000){
        printf("渣渣");
    }
    else if (i>20000&&i<30000){
        printf("低端");
    }
    else if (i>30000&&i<40000){
        printf("中端");
    }
    else if (i>40000&&i<50000){
        printf("高端");
    }
    else if (i>50000&&i<60000){
        printf("超高端");
    }
    else if (i>60000){
        printf("机皇");
    }
    printf(">称号\n");
}
void PAUSE(){
    clean_stdin();
}

猜你喜欢

转载自www.cnblogs.com/Frank-dev-blog/p/9570796.html