纯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();
}

原文地址:https://www.cnblogs.com/Frank-dev-blog/p/9570796.html

时间: 2024-10-13 00:50:55

纯C语言跑分(详细注释)的相关文章

普通青年的状态机,纯C语言

我们第一次接触到状态机,是在数字电路课程里.计数器.串行奇偶检校.检验三个1连续出现的报错电路 等,都需要状态机作为模型.实现这些功能的电路,与状态机的状态转换图.状态转换表都是等价的. 后来,我们再接触状态机,是在编译原理课程里.状态机用于描述与正则表达式匹配的字符串. 再后来,我们在GUI界面设计中,需要设置一些控件在某些条件下 禁用,某些条件下使能,某些条件下打个对号.这也可以用状态机模型来控制. 1. 不要写成 消息响应/事件处理 状态机和消息响应都是 双层 switch-case 结构

纯CSS实现侧边栏/分栏高度自动相等

by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=694 一.为何要分栏高度一致? 分栏高度一致的目的是更加美观.举两个例子吧. ① 对于分栏布局,我们或许会用边框(border)进行分隔,就如鄙人博客的分栏: 此时最担心的问题就是高度不一致,尤其是无边框属性的分栏高度超过有边框属性的分栏,结果就会: 虽然我们可以使用min-height或是边框重叠技术进行适当修复,但是

LINUX系统下跑分测试脚本:unixbench.sh

linux 系统跑分测试脚本:     一.下载脚本:        wget http://teddysun.com/wp-content/uploads/unixbench.sh 二.更改权限:        chmod +x unixbench.sh 三.运行测试:        sudo bash ./unixbench.sh 等待结果... 测试时间可能会比较长,请耐性等待! 注释:由于网上找了很多方法都没有成功,这个方法亲测可行,以此博文作为记录,并且分享给有需要的小伙伴! 原文地址

降水量与蒸发量统计报表详细注释

//降水量与蒸发量统计报表详细注释 <template> <div id="main" :style="{width:'1000px',height:'500px' }"></div> </template> <!--1 为ECharts准备一个具备大小(宽高)的Dom--> <!-- <div id="mainBar" style="height:500px;bo

unixbench性能测试跑分工具

UnixBench是一个类unix系(Unix,BSD,Linux)统下的性能测试工具,一个开源工具,被广泛用与测试linux系统主机的性能 所谓跑分工具,不仅各项的测试有得分,最后跑完也会有一个综合的得分,这个分数是怎么来了? 其实,这个值是测试系统的测试结果与一个基线系统测试结果比较得到的指数值. 源于1995 年,基线系统是“George”,一个工作站:SPARCstation 20‐61,128MB RAM,Solaris2.3,此系统的指数值被设定为10,所以,如果一个系统的最后结果分

geek青年的状态机,查表,纯C语言实现

1. 问题的提出,抽象 建一,不止是他,不少人跟我讨论过这样的问题:如何才能保证在需求变更.扩充的情况下,程序的主体部分不动呢? 这是一个非常深刻和艰难的问题.在进入实质讨论之前,我们还得先明确什么是"主体",就是我们不希望动的那一部分是什么.事实上,没有什么"主体",这是被我们主观划分的,代码中有一部分是不动的,另一部分是动的.而追求永恒(一劳永逸?) ,是我们的天性吧. 我们希望实现一段程序,换一些东西,游戏就由 双截龙 变成了 超级玛丽,再换一点东西,就变成了

弧形屏幕 三星GALAXY S6 Edge跑分曝光

在即将到来的MWC中,最受期待的机型之一是三星GALAXY S6,而与其同时,还将推出弧形屏幕衍生版三星GALAXY S6 Edge. 三星GALAXY S6 Edge跑分曝光(图片来自Phonearena) 据悉,该产品型号为“SM-G925P”,已经亮相GeekBench跑分库,其单核成绩为1492分.多核成绩为5077分.该机搭载的是Android5.0.2版本操作系统,运行1.5GHz三星八核Exynos7420处理器,比此前曝光的三星GALAXY S6的2.1GHz主频略低一些.另外,

Qt5_简易画板_详细注释

代码下载链接:  http://pan.baidu.com/s/1hsc41Ek 密码: 5hdg 显示效果如下: 代码附有详细注释(代码如下) 1 /*** 2 * 先新建QMainWindow, 项目名称: DrawWidget 基类选择: QMainWindow, 3 * 类名默认, 然后在DrawWidget项目名上新建c++class文件, 选择基类: QWidget 4 */ 5 //先完成绘图区的实现 6 //如下为: drawwidget.h 7 #ifndef DRAWWIDG

codevs 2924 数独挑战 x(三种做法+超详细注释~)

2924 数独挑战 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 钻石 Diamond 题目描述 Description “芬兰数学家因卡拉,花费3个月时间设计出了世界上迄今难度最大的数独游戏,而且它只有一个答案.因卡拉说只有思考能力最快.头脑最聪明的人才能破解这个游戏.”这是英国<每日邮报>2012年6月30日的一篇报道.这个号称“世界最难数独”的“超级游戏”,却被扬州一位69岁的农民花三天时间解了出来. 看到这个新闻后,我激动不已,证明我们OI的实力的机会来了,我们虽然不是