【qt图片特效源码】【getconstructors源码】【redistemplate源码】clock源码

时间:2024-12-23 02:54:35 来源:源码反编 编辑:javax源码

1.简单好玩的编程代码?
2.python代码大全简单?
3.用MFC编写一个指针型时钟程序,时钟还具有闹钟和倒计时功能,求能在mfc里执行的整个文件
4.pythontime.clock()和time.perf_counter()的区别?

clock源码

简单好玩的编程代码?

       ç‚«é…·çš„编程代码

       ç‚«é…·çš„编程代码是@echooffmodeconcols=lines=colorsetlocalenabledelayedexpansionsetcode=abcdefsetm=1setv=1。

       ç¼–定程序,简称编程,是指让计算机代为解决某个问题。对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。

       ç¼–程就是为了借助于计算机来达到某一目的或解决某个问题,而使用某种程序设计语言编写程序代码,并最终得到结果的过程。计算机虽然功能十分强大,可以上网、玩游戏、管理公司人事关系等等。但是没有程序,它就等于是一堆废铁,不会理会我们对它下达的“命令”。

       ç¼–程语言介绍

       ä½¿ç”¨æ±‡ç¼–语言编写计算机程序,程序员仍然需要十分熟悉计算机系统的硬件结构,所以从程序设计本身上来看仍然是低效率的、烦琐的。但正是由于汇编语言与计算机硬件系统关系密切,在某些特定的场合,如对时空效率要求很高的系统核心程序以及实时控制程序等,迄今为止汇编语言仍然是十分有效的程序设计工具。

       ä½¿ç”¨é«˜çº§è¯­è¨€ç¼–写程序的优点是,编程相对简单、直观、易理解、不容易出错。高级语言是独立于计算机的,因而用高级语言编写的计算机程序通用性好,具有较好的移植性。

       åœ¨è®¡ç®—机应用的初期,程序员使用机器的指令系统来编写计算机应用程序,这种程序称为机器语言程序。

       æ±‚行简单C语言程序代码,基础的就好

       #includestdio.h

       #includestdlib.h

       #defineNUM

       /*runthisprogramusingtheconsolepauseroraddyourowngetch,system("pause")orinputloop*/

       //冒泡排序算法

       //基本思想:比较相邻的两个数,如果前者比后者大,则进行交换。每一轮排序结束,选出一个未排序中最大的数放到数组后面。

       voidbubbleSort(int*arr,intn){

       inti,j;

       for(i=0;in-1;i++)

       for(j=0;jn-i-1;j++){

       //如果前面的数比后面大,进行交换

       if(arr[j]arr[j+1]){

       inttemp=arr[j];

       arr[j]=arr[j+1];

       arr[j+1]=temp;

       }

       }

       }

       //最差时间复杂度为O(n^2),平均时间复杂度为O(n^2)。稳定性:稳定。辅助空间O(1)。

       //升级版冒泡排序法:通过从低到高选出最大的数放到后面,再从高到低选出最小的数放到前面,

       //如此反复,直到左边界和右边界重合。当数组中有已排序好的数时,这种排序比传统冒泡排序性能稍好。

       //升级版冒泡排序算法

       voidbubbleSort_1(int*arr,intn){

       //设置数组左右边界

       intleft=0,right=n-1;

       //当左右边界未重合时,进行排序

       while(left=right){

       inti,j;

       //从左到右遍历选出最大的数放到数组右边

       for(i=left;iright;i++){

       if(arr[i]arr[i+1]){

       inttemp=arr[i];

       arr[i]=arr[i+1];

       arr[i+1]=temp;

       }

       }

       right--;

       //从右到左遍历选出最小的数放到数组左边

       for(j=right;jleft;j--){

       if(arr[j+1]arr[j]){

       inttemp=arr[j];

       arr[j]=arr[j+1];

       arr[j+1]=temp;

       }

       }

       left++;

       }

       }

       intmain(intargc,char*argv[]){

       intarr[NUM],i,j,temp;

       printf("请输入个数:\n");

       for(i=0;iNUM;i++){

       printf("请输入第(%d)个数:",i+1);

       scanf("%d",arr[i]);

       }

       printf("\n输入如下排列:\n");

       for(i=0;iNUM;i++){

       printf("%4d",arr[i]);

       }/

*

       for(i=0;iNUM;i++){

       for(j=i+1;jNUM;j++){

       if(arr[i]arr[j]){

       temp=arr[i];

       arr[i]=arr[j];

       arr[j]=temp;

       }

       }

       }*/

       bubbleSort_1(arr,NUM);

       /*printf("\n从小到大如下排列:\n");

       for(i=0;iNUM;i++){

       printf("%4d",arr[i]);

       }*/

       printf("\n从大到小如下排列:\n");

       for(i=NUM-1;i=0;i--){

       printf("%4d",arr[i]);

       }

       return0;

       }

随便给我一个编程代码带意思谢谢

       main()?

       { ?

       inti,j,k;?

       printf("\n");?

       for(i=1;i5;i++)/*以下为三重循环*/

       for(j=1;j5;j++)

       for(k=1;k5;k++)

       {

       if(i!=ki!=jj!=k)/*确保i、j、k三位互不相同*/

       printf("%d,%d,%d\n",i,j,k);

       }?

       }

       1、代码解释:以上这段代码是用C语言写出来的代码,他所解决的问题是:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少??可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去?掉不满足条件的排列。

       2、C语言介绍:C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

       3、C语言的优点:简洁紧凑、灵活方便。运算符丰富。数据结构丰富。C是结构式语言。C语法限制不太严格、程序设计自由度大,一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而C语言允许程序编写者有较大的自由度。C语言程序生成代码质量高,程序执行效率高,一般只比汇编程序生成的目标代码效率低へ%。

       4、其他编程语言介绍:Python(英国发音:/?pa?θ?n/美国发音:/?pa?θɑ?n/),是一种面向对象的解释型计算机程序设计语言,由荷兰人GuidovanRossum于年发明,第一个公开发行版发行于年。Python是纯粹的自由软件,?源代码和解释器CPython遵循GPL(GNU?GeneralPublicLicense)协议。Python语法简洁清晰,特色之一是强制用空白符(whitespace)作为语句缩进。

python有趣的编程代码

       class?Point:

       row=0

       col=0

       def?__init__(self,?row,?col):

       self.row=row

       self.col=col

       def?copy(self):

       return?Point(row=self.row,?col=self.col)

       #初始框架

       import?pygame

       import?random

       #初始化

       pygame.init()

       W=

       H=

       ROW=

       COL=

       size=(W,H)

       window=pygame.display.set_mode(size)

       pygame.display.set_caption('贪吃蛇')

       bg_color=(,,)

       snake_color=(,,)

       head=Point(row=int(ROW/2),?col=int(COL/2))

       head_color=(0,,)

       snakes=[

       Point(row=head.row,?col=head.col+1),

       Point(row=head.row,?col=head.col+2),

       Point(row=head.row,?col=head.col+3)

       ]

       #生成食物

       def?gen_food():

       while?1:

       pos=Point(row=random.randint(0,ROW-1),?col=random.randint(0,COL-1))

       #

       is_coll=False

       #是否跟蛇碰上了

       if?head.row==pos.row?and?head.col==pos.col:

       is_coll=True

       #蛇身子

       for?snake?in?snakes:

       if?snake.row==pos.row?and?snake.col==pos.col:

       is_coll=True

       break

       if?not?is_coll:

       break

       return?pos

       #定义坐标

       food=gen_food()

       food_color=(,,0)

       direct='left'?#left,right,up,down

       #

       def?rect(point,?color):

       cell_width=W/COL

       cell_height=H/ROW

       left=point.col*cell_width

       top=point.row*cell_height

       pygame.draw.rect(

       window,?color,

       (left,?top,?cell_width,?cell_height)

       )

       pass

       #游戏循环

       quit=True

       clock=pygame.time.Clock()

       while?quit:

       #处理事件

       for?event?in?pygame.event.get():

       if?event.type==pygame.QUIT:

       quit=False

       elif?event.type==pygame.KEYDOWN:

       if?event.key==?or?event.key==:

       if?direct=='left'?or?direct=='right':

       direct='up'

       elif?event.key==?or?event.key==:

       if?direct?==?'left'?or?direct?==?'right':

       direct='down'

       elif?event.key==?or?event.key==:

       if?direct?==?'up'?or?direct?==?'down':

       direct='left'

       elif?event.key==?or?event.key==:

       if?direct?==?'up'?or?direct?==?'down':

       direct='right'

       #吃东西

       eat=(head.row==food.row?and?head.col==food.col)

       #重新产生食物

       if?eat:

       food?=?gen_food()

       #处理身子

       #1.把原来的头,插入到snakes的头上

       snakes.insert(0,?head.copy())

       #2.把snakes的最后一个删掉

       if?not?eat:

       snakes.pop()

       #移动

       if?direct=='left':

       head.col-=1

       elif?direct=='right':

       head.col+=1

       elif?direct=='up':

       head.row-=1

       elif?direct=='down':

       head.row+=1

       #检测

       dead=False

       #1.撞墙

       if?head.col0?or?head.row0?or?head.col=COL?or?head.row=ROW:

       dead=True

       #2.撞自己

       for?snake?in?snakes:

       if?head.col==snake.col?and?head.row==snake.row:

       dead=True

       break

       if?dead:

       print('死了')

       quit=False

       #渲染——画出来

       #背景

       pygame.draw.rect(window,?bg_color,?(0,0,W,H))

       #蛇头

       for?snake?in?snakes:

       rect(snake,?snake_color)

       rect(head,?head_color)

       rect(food,?food_color)

       #

       pygame.display.flip()

       #设置帧频(速度)

       clock.tick(8)

       #收尾工作

       è¿™æ˜¯ä¸€ä¸ªç®€æ˜“版贪吃蛇的代码,虽然结构简单,但是该有的功能都是完整的,可玩性也不错

c语言编程烟花代码简单

       c语言编程烟花代码简单如下:

       #include"stdlib.h"

       #include"graphics.h"

       #include"stdio.h"

       #include"math.h"

       #include"conio.h"

       #definePI?3.

       main()

       {

       intgdriver=DETECT,gmode,errorcode;

       inta[],b[],x,y,c,r,i,j,t;

       doublerad=0.0;

       /*initializegraphicsandlocalvariables*/

       initgraph(gdriver,gmode,"");

       /*readresultofinitialization*/

       errorcode=graphresult();

       if(errorcode!=grOk)?/*anerroroccurred*/

       {

       printf("Graphicserror:%s/n",grapherrormsg(errorcode));

       printf("Pleaseanykeytohalt:");

       getch();

       exit(1);?/*terminatewithanerrorcode*/

       }

       randomize();

       for(;!kbhit();)

       {

       x=rand()%+;/*随机中心坐标*/

       y=rand()%+;

       for(r=0;r=8;r++?)/*烟花的大小设定*/

       {

       for(i=0,rad=0.0;rad2*PI;rad+=0.)?/*设定坐标*/

       {

       a[i++]=x+(int)r**cos(rad);

       b[i]=y+(int)r**sin(rad);

       }

       t=i;

       for(i=1;it;i++)

       {

       c=rand()%+1;/*各点的颜色随机*/

       setcolor(c);/*功能:将当前图形屏幕的当前笔画颜色置为color.*/

       circle(a[i],b[i],1);/*a[i],b[i]为圆心1为半径画圆*/

       }

       delay();

       delay();

       cleardevice();

       å‡½æ•°å:cleardevice?

       åŠŸ?能:清除图形屏幕?

       ç”¨?法:voidfarcleardevice(void);

       }

       }

       getch();

       closegraph();

       å‡½æ•°å:closegraph

       åŠŸ?能:关闭图形系统

       ç”¨?法:voidfarclosegraph(void);

       }

       åˆå§‹åŒ–烟花参数

       voidInit(inti)

       {

       //分别为:烟花中心到图片边缘的最远距离、烟花中心到图片左上角的距离(x、y)两个分量

       intr[]={ ,,,,,,,,,,,,};

       intx[]={ ,,,,,,,,,,,,};

       inty[]={ ,,,,,,,,,,,,};

       /****初始化烟花*****/

       Fire[i].x=0;//烟花中心坐标

       Fire[i].y=0;

       Fire[i].width=;//图片宽

       Fire[i].height=;//图片高

       Fire[i].max_r=r[i];//最大半径

       Fire[i].cen_x=x[i];//中心距左上角距离

       Fire[i].cen_y=y[i];

       Fire[i].show=false;//是否绽放

       Fire[i].dt=5;//绽放时间间隔

       Fire[i].t1=timeGetTime();

       Fire[i].r=0;//从0开始绽放

       /****初始化烟花弹*****/

       Jet[i].x=-;//烟花弹左上角坐标

       Jet[i].y=-;

       Jet[i].hx=-;//烟花弹发射最高点坐标

       Jet[i].hy=-;

       Jet[i].height=0;//发射高度

       Jet[i].t1=timeGetTime();

       Jet[i].dt=rand()%;//发射速度时间间隔

       Jet[i].n=0;//烟花弹闪烁图片下标

       Jet[i].shoot=false;//是否发射

       }

python代码大全简单?

       python有趣的编程代码

       class?Point:

row=0

col=0

def?__init__(self,?row,?col):

       self.row=row

       self.col=col

def?copy(self):

       return?Point(row=self.row,?col=self.col)

       #初始框架

       import?pygame

       import?random

       #初始化

       pygame.init()

       W=

       H=

       ROW=

       COL=

       size=(W,H)

       window=pygame.display.set_mode(size)

       pygame.display.set_caption('贪吃蛇')

       bg_color=(,,)

       snake_color=(,,)

       head=Point(row=int(ROW/2),?col=int(COL/2))

       head_color=(0,,)

       snakes=[

Point(row=head.row,?col=head.col+1),

Point(row=head.row,?col=head.col+2),

Point(row=head.row,?col=head.col+3)

       ]

       #生成食物

       def?gen_food():

while?1:

       pos=Point(row=random.randint(0,ROW-1),?col=random.randint(0,COL-1))

       #

       is_coll=False

       #是否跟蛇碰上了

       if?head.row==pos.row?and?head.col==pos.col:

is_coll=True

       #蛇身子

       for?snake?in?snakes:

if?snake.row==pos.row?and?snake.col==pos.col:

       is_coll=True

       break

       if?not?is_coll:

break

return?pos

       #定义坐标

       food=gen_food()

       food_color=(,,0)

       direct='left'#left,right,up,down

       #

       def?rect(point,?color):

cell_width=W/COL

cell_height=H/ROW

left=point.col*cell_width

top=point.row*cell_height

pygame.draw.rect(

       window,?color,

       (left,?top,?cell_width,?cell_height)

)

pass

       #游戏循环

       quit=True

       clock=pygame.time.Clock()

       while?quit:

#处理事件

for?event?in?pygame.event.get():

       if?event.type==pygame.QUIT:

quit=False

       elif?event.type==pygame.KEYDOWN:

if?event.key==?or?event.key==:

       if?direct=='left'?or?direct=='right':

direct='up'

elif?event.key==?or?event.key==:

       if?direct?==?'left'?or?direct?==?'right':

direct='down'

elif?event.key==?or?event.key==:

       if?direct?==?'up'?or?direct?==?'down':

direct='left'

elif?event.key==?or?event.key==:

       if?direct?==?'up'?or?direct?==?'down':

direct='right'

#吃东西

eat=(head.row==food.row?and?head.col==food.col)

#重新产生食物

if?eat:

       food?=?gen_food()

#处理身子

#1.把原来的头,插入到snakes的头上

snakes.insert(0,?head.copy())

#2.把snakes的最后一个删掉

if?not?eat:

       snakes.pop()

#移动

if?direct=='left':

       head.col-=1

elif?direct=='right':

       head.col+=1

elif?direct=='up':

       head.row-=1

elif?direct=='down':

       head.row+=1

#检测

dead=False

#1.撞墙

if?head.col0?or?head.row0?or?head.col=COL?or?head.row=ROW:

       dead=True

#2.撞自己

for?snake?in?snakes:

       if?head.col==snake.col?and?head.row==snake.row:

dead=True

break

if?dead:

       print('死了')

       quit=False

#渲染——画出来

#背景

pygame.draw.rect(window,?bg_color,?(0,0,W,H))

#蛇头

for?snake?in?snakes:

       rect(snake,?snake_color)

rect(head,?head_color)

rect(food,?food_color)

#

pygame.display.flip()

#设置帧频(速度)

clock.tick(8)

       #收尾工作

       è¿™æ˜¯ä¸€ä¸ªç®€æ˜“版贪吃蛇的代码,虽然结构简单,但是该有的功能都是完整的,可玩性也不错

求python数据标准化代码?

       ä½¿ç”¨python标准化数据的代码如下:

       fromsklearnimportpreprocessing

       importnumpyasnp

       X=np.array([[1.,-1.,2.],[2.,0.,0.],[0.,1.,-1.]])

       X_scaled=preprocessing.scale(X)

       print(X_scaled)

python圣诞树代码简单

       ```python#Python圣诞树代码foriinrange(1,6):forjinrange(1,i+1):print('*',end='')print('\n')```

       æ‹“展:如果想改变树的形状,可以在代码中添加更多的控制参数,如在每一行中添加不同的空格数,使得树的形状不一样。同时可以通过添加HTML标签,使用CSS样式来改变圣诞树的颜色、背景和文字等等。

       ä¸ªæžç®€python代码,拿走即用

       Hello,大家好,我是程序汪小成~

       è™½ç„¶python是一个易入门的语言,但是很多人依然还是会问到底怎么样学Python才最快,答案当然是实战各种小项目,只有自己去想与写,才记得住规则。本文写的是个极简任务,初学者可以尝试着自己实现;本文同样也是段代码,Python开发者也可以看看是不是有没想到的用法。

       ä»¥ä¸‹æ–¹æ³•å¯ä»¥æ£€æŸ¥ç»™å®šåˆ—表是不是存在重复元素,它会使用set()函数来移除所有重复元素。

       ç»™å®šå…·ä½“的大小,定义一个函数以按照这个大小切割列表。

       è¿™ä¸ªæ–¹æ³•å¯ä»¥å°†å¸ƒå°”型的值去掉,例如(False,None,0,“”),它使用filter()函数。

       æˆ‘们常用For循环来遍历某个列表,同样我们也能枚举列表的索引与值。

       å¦‚下代码段可以将打包好的成对列表解开成两组不同的元组。

       è¯¥æ–¹æ³•å°†é€šè¿‡é€’归的方式将列表的嵌套展开为单个列表。

       è¯¥æ–¹æ³•å°†è¿”回第一个列表的元素,且不在第二个列表内。如果同时要反馈第二个列表独有的元素,还需要加一句set_b.difference(set_a)。

       å¦‚下代码块可以用来计算执行特定代码所花费的时间。

       è¯¥ç®—法会打乱列表元素的顺序,它主要会通过Fisher-Yates算法对新列表进行排序:

       ä¸éœ€è¦é¢å¤–的操作就能交换两个变量的值。

       ä»¥ä¸Šï¼Œæ˜¯æˆ‘简单列举的十个python极简代码,拿走即用,希望对你有所帮助!

python新手代码有哪些?

       python新手代码有如下:

       defnot_empty(s)。

       returnsandlen(s。strip())0。

       #returnsands。strip()。

       #如果直接单写s。strip()那么s如果是None,会报错,因为None没有strip方法。

       #如果s是None,那么Noneand任何值都是False,直接返回false。

       #如果s非None,那么判定s。trip()是否为空。

       ç›¸å…³ç®€ä»‹ã€‚

       Python解释器易于扩展,可以使用C或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。

       å¹´æœˆï¼Œè¯­è¨€æµè¡ŒæŒ‡æ•°çš„编译器Tiobe将Python加冕为最受欢迎的编程语言,年来首次将其置于Java、C和JavaScript之上。

质数表代码?

       è´¨æ•°è¡¨ä»£ç æ˜¯æŒ‡ç”¨ç¼–程语言生成一系列质数的代码。质数是指只能被自身和1整除的自然数,如2,3,5,7等。

       ä¸åŒçš„编程语言有不同的实现方法,我可以给你一些参考。以下是一些网上搜索到的质数表代码示例:

       C语言:

       #includestdio.hintmain(){ ?inti,j;?printf("2\n");?for(i=3;i=;i+=2)//从3开始遍历奇数

{ for(j=3;ji;j++)//判断是否能被小于它的奇数整除

       { ?if(i%j==0)//如果能整除,则跳出循环

       break;

       }if(j==i)//如果循环正常结束,则说明是质数,打印出来

printf("%d\n",i);

}?return0;

       }

       Python:

       #!/usr/bin/python#-*-coding:UTF-8-*-

       #输出指定范围内的素数

       #用户输入数据lower=int(input("输入区间最小值:"))

       upper=int(input("输入区间最大值:"))

       fornuminrange(lower,upper+1):?#素数大于1

ifnum1:foriinrange(2,num):?if(num%i)==0:break

       else:?print(num)

用MFC编写一个指针型时钟程序,时钟还具有闹钟和倒计时功能,求能在mfc里执行的整个文件

       一、程序窗口设计步骤

       (1)用AppWizard生成一个名为Clock的qt图片特效源码单文档(SDI)程序框架。为了简化应用程序,在第四步时去掉Docking toolbar和Initial status bar选择项(不删除也可),其他各选项均可用缺省设置。

       (2)编辑项目的菜单资源,在主框架窗口的主菜单(IDR_MAINFRAME)中添加一个名为“时钟控制”的下拉菜单。在“时钟控制”菜单中添加三个菜单选项“启动时钟”、“停止时钟”和“时间设置”。并在菜单属性项中设定“启动时钟”菜单的ID标号为ID_START,“停止时钟”菜单的ID标号为ID_STOP,“时间设置”菜单的ID标号为ID_SETTIME。为了简化菜单,getconstructors源码可删除系统原有的“文件”、“编辑”菜单项。

       (3)利用ClassWizard为视图类添加菜单命令处理函数。进入ClassWizard的Message Maps选项卡,选择Class Name项为CClockView类,在Object IDs列表框中分别选择新添加的菜单选项的ID,在Messages列表框中选择COMMAND,按下Add Function按钮添加成员函数。ClassWizard会为“启动时钟”、“停止时钟”和“时间设置”菜单选项添加相应的消息响应函数OnStart ( )、OnStop ( )和OnSettime ( )。

       (4)利用ClassWizard为视图类添加定时器和鼠标消息处理函数。进入ClassWizard的Message Maps选项卡,选择Class Name项为 CClockView类,在Messages列表框中分别选择定时器消息WM_TIMER和鼠标消息WM_LBUTIONDOWN,按下Add Function按钮添加成员函数。redistemplate源码ClassWizard会添加相应的定时器和鼠标消息响应函数OnTimer和OnLButtonDown。

       (5)使用Developer Studio菜单的Insert / Resource…选项调出Insert Source对话框,为项目添加新的对话框资源。在对话框属性中,修改对话框名为“时间设定”。在对话框中增加用来输入年、月、日、时、分、秒的编辑框控件。

        通过控件属性,将年、月、日、时、animetaste源码分、秒等编辑控件的ID改为IDC_YEAR、IDC_MONTH、IDC_DAY、IDC_HOUR、IDC_MINUTE和IDC_SECOND。

       (6)利用ClassWizard自动建立对话框类。进入ClassWizard后,弹出一个对话框询问是否要为该对话框模板建立类。按下“OK”按钮,会弹出New Class对话框,在Name栏填写对话框类的名称CSetTimeDlg后按“OK”按钮,即可为对话框创建一个对应的类。

       (7) 利用ClassWizard为对话框类添加与各控件对应的数据成员。选择MemberVariables选项卡,确保Class Name项为对话框CSetTimeDlg类,sharpdevelop 源码然后在选项卡下方的窗口中选择各控件的ID并按下“Add Variable…”按钮,为其添加对应成员变量。

       控制ID

       变量类型

       变量名

       变量范围

       IDC_YEAR

       int

       m_Year

       0~

       IDC_MONTH

       int

       m_Month

       1~

       IDC_DAY

       int

       m_Day

       1~

       IDC_HOUR

       int

       m_Hour

       0~

       IDC_MINUTE

       int

       m_Minute

       0~

       IDC_SECOND

       int

       m_Second

       0~

       最后一列为变量取值范围。

       (8)编辑工程的图标资源,在Resource View选项窗口中修改Icon结点所包含的主框架图标(IDR_MAINFRAME)。此步非必须。

       (9)完成以上工作后,即可修改程序框架,添加必要的代码。

       二、主要源代码:

       按以下步骤向视图类(CClockView)添加下列数据成员及成员函数。

       (1) 添加表示年、月、日、时、分、秒的变量。

        int year;

        int month;

        int day;

        int hour;

        int minute;

        int second;

       (2) 添加秒表的计数变量。

        int watch;

       (3) 添加时钟的画笔及画刷变量。

       CPen m_HouPen, m_MinPen, m_SecPen; // 各种针的画笔

       CBrush m_MarkBrush; // 表盘标记的画刷

       (4) 添加时钟控制变量。

       CPoint m_Center; // 表的中心

       double m_Radius; // 表的半径

       CPoint m_Hour [2], m_OldHour [2]; // 时针当前及前一次位置

       CPoint m_Minute [2], m_OldMin [2]; // 分针当前及前一次位置

       CPoint m_Second [2], m_OldSec [2]; // 秒针当前及前一次位置

       (5) 添加秒表的两个按钮位置变量。

       CRect m_WatchStart;

       CRect m_WatchStop;

       (6) 添加两个函数,计算时钟各指针位置。

       void SetClock (int hour, int minute, int second);

       CPoint GetPoint (int nLenth, int nValue);

       (7) 在视图类构造函数中增加初始化语句,之前加上头文件

       #include<ctime>

       CClockView::CClockView()

       {

       // 设定时间

       char time[];

       SYSTEMTIME st;

       GetLocalTime(&st);

       day = st.wDay;

       hour = st.wHour;

       minute = st.wMinute;

       month = st.wMonth;

       second = st.wSecond;

       year = st.wYear;

       // 设定画笔/画刷

       m_HouPen. CreatePen (PS_SOLID, 5, RGB (, 0, 0) ); // 时针画笔

       m_MinPen. CreatePen (PS_SOLID, 3, RGB (0, 0, ) ); // 分针画笔

       m_SecPen. CreatePen (PS_SOLID, 1, RGB (0, 0, 0) ); // 秒针画笔

       m_MarkBrush. CreateSolidBrush (RGB (, , 0) );

       // 设定表心位置

       m_Center. x = ;

       m_Center. y = ;

       // 设定时钟半径

       m_Radius = ;

       // 计算指针位置

        SetClock (hour, minute, second);

        // 设定秒表计数器及按钮位置

       watch = 0;

       m_WatchStart = CRect (, , , ); // 启动钮

       m_WatchStop = CRect (, , , ); // 停止钮

       }

       编写指针位置计算函数SetClock和GetPoint。首先在ClockView. cpp文件头部添加下面两行代码,以便进行数学计算。

       #include "math.h"

       #define PI 3.

       然后添加下列代码:

       //计算各个指针位置的函数

       void CClockView::SetClock(int hour, int minute, int second)

       {

       hour=hour*5;

       hour=hour+minute/;

       // 保存时针原位置

       m_OldHour [0] = m_Hour[0];

       m_OldHour [1] = m_Hour[1];

       // 计算时针当前位置

       m_Hour[0]= GetPoint(int(m_Radius/2),hour);

       m_Hour[1]= GetPoint(7,hour + );

       // 保存分针原位置

       m_OldMin[0]= m_Minute[0];

       m_OldMin[1]= m_Minute[1];

       // 计算分针当前位置

       m_Minute[0]=GetPoint(int(m_Radius*7/), minute);

       m_Minute[1]=GetPoint(, minute+);

       // 保存秒针原位置

       m_OldSec [0] = m_Second [0];

       m_OldSec [1] = m_Second [1];

       // 计算秒针当前位置

       m_Second [0]= GetPoint (int(m_Radius * 8/), second);

       m_Second [1] = GetPoint (, second + );

       }

       // 计算以表心为原点的指针的端点位置

       CPoint CClockView ::GetPoint (int nLenth, int nValue)

       {

       CPoint p;

       double angle = nValue* PI /-PI/2;

       p.x = m_Center.x + (int) (nLenth * cos(angle));

       p.y = m_Center.y + (int) (nLenth * sin(angle));

       return p;

       }

       绘制表盘上的标记、时针、分针和秒针,并显示数字时钟及秒表,在OnDraw函数中添加下面代码:

       void CClockView::OnDraw(CDC* pDC)

       {

       CClockDoc* pDoc = GetDocument();

       ASSERT_VALID(pDoc);

       // 绘制表盘上的标记

       pDC->SelectObject(m_MarkBrush);

       int k=0;

       for(int i=0;i<;i++)

       {

       CPoint pt=GetPoint(,i);

       if (i%5==0)

       {

       //显示表盘上的数字

       CString str[]={ "","1","2","3","4","5","6","7","8","9","",""};

        pDC->TextOut(pt.x-5,pt.y-5,str[k]);

       k++;

       }else

       {

       //显示数字之间的圆圈

       pDC->Ellipse(pt.x-2,pt.y-2,pt.x+2,pt.y+2);

       }

       }

       // 画时针

       pDC->SelectObject (m_HouPen);

       if (m_OldHour[0]!= m_Hour[0])

       {

       // 用白色覆盖原位置时针

       pDC->SetROP2(R2_WHITE);

       pDC->MoveTo(m_OldHour [0] );

       pDC->LineTo(m_OldHour [1] );

       pDC->SetROP2(R2_COPYPEN);

       //时针绘制

       pDC->MoveTo(m_Hour[0]);

       pDC->LineTo(m_Hour[1]);

       }

       else

       {

       // 时针绘制

       pDC->MoveTo(m_Hour[0]);

       pDC->LineTo(m_Hour[1]);

       }

       // 画分针

       pDC->SelectObject (m_MinPen);

       if (m_OldMin[0]!=m_Minute[0])

       {

       // 用白色覆盖原位置分针

       pDC->SetROP2(R2_WHITE);

       pDC->MoveTo(m_OldMin[0]);

       pDC->LineTo(m_OldMin[1]);

       pDC->SetROP2(R2_COPYPEN);

       // 分针绘制

       pDC->MoveTo(m_Minute[0]);

       pDC->LineTo(m_Minute[1]);

       }

       else

       {

       // 分针绘制

       pDC->MoveTo(m_Minute[0]);

       pDC->LineTo(m_Minute[1]);

       }

       // 用白色覆盖原位置秒针

       pDC->SelectObject(m_SecPen);

       pDC->SetROP2(R2_WHITE);

       pDC->MoveTo(m_OldSec[0]);

       pDC->LineTo(m_OldSec[1]);

       pDC->SetROP2(R2_COPYPEN);

       // 秒针绘制

       pDC->MoveTo(m_Second[0]);

       pDC->LineTo(m_Second[1]);

       // 数字时钟显示

       pDC->SelectStockObject(WHITE_BRUSH);

       pDC->Rectangle(,,,);

       pDC->TextOut(,,"当前时间");

       CString m_Date,m_Time;

       m_Date.Format ("% 4d年%4d月%4d日",year,month,day);

       pDC->TextOut(,,m_Date);

       m_Time.Format("%4d点%4d分%4d秒",hour,minute,second);

       pDC->TextOut(,,m_Time);

       // 秒表显示

       pDC->Rectangle(,,,);

       pDC->TextOut(,,"秒 表");

       int minSec= watch%;

       int Sec=(watch/)%;

       int Min=(watch/)/;

       m_Time.Format("% d: % d: % d",Min,Sec,minSec);

       pDC->TextOut(,,m_Time);

       pDC->Rectangle(&m_WatchStart);

       pDC->Rectangle(&m_WatchStop);

       pDC->TextOut(m_WatchStart.left + ,m_WatchStart.top + 5,"启动");

       pDC->TextOut(m_WatchStop.left + ,m_WatchStop.top + 5,"停止");

       }

       请注意将表示时间的整数转换为CString字符串类型的方法以及秒表的显示方法。另外,watch计数器以1/秒为计数单位,每达到则秒数加1。

       按照下列步骤增加时钟控制代码:

       修改Onstart和OnStop函数,设置时钟运动消息。按比正常时钟快倍的假定,ms产生一个消息。本程序采用和正常时间同步,即ms产生一个消息, 其代码为:

       void CClockView::OnStart()

       {

       SetTimer (1, , NULL);

       }

       void CClockView::OnStop()

       {

       KillTimer (1);

       }

       修改OnTimer函数,正确计算并处理年、月、日、时、分、秒等变量的联动变化 ,其代码为:

       void CClockView::OnTimer(UINT nIDEvent)

       {

       if (nIDEvent == 1)

       {

       second++; // 秒增加

       if (second>)

       {

       second=0;

       minute++; // 分增加

       }

       if (minute>)

       {

       minute= 0;

       hour++; // 小时增加

       }

       if (hour>)

       {

       hour=0;

       day++; // 日增加

       }

       switch(month)

       {

       case 1: // 大月

       case 3:

       case 5:

       case 7:

       case 8:

       case :

       case :

       if (day>)

       {

       day= 1;

       month++; // 月增加

       }

       break;

       case 4: // 小月

       case 6:

       case 9:

       case :

       if (day>)

       {

       day=1;

       month++; // 月增加

       }

       break;

       case 2:

       if (year%4 ==0 && day>) // 润二月

       {

       day=1;

       month++; // 月增加

       }

       if (year%4!=0 && day>) // 二月

       {

       day=1;

       month++;

       }

       break;

       }

       if (month > )

       {

       // 年增加

       year++;

       month=1;

       }

       SetClock (hour, minute, second);

       Invalidate (false);

       }

       // 秒表定时器消息处理

       if (nIDEvent == 2)

       {

       watch++;

       Invalidate (false);

       }

       CView::OnTimer(nIDEvent);

       }

       添加时间设置对话框代码。

       首先在ClockView. cpp文件头部添加下列语句:

       #include “SetTimeDlg. h”

       在时间设定对话框类的构造函数中,做如下修改,将初始日期设为当前时间,之前要加上头文件

       #include<ctime>

       CSetTimeDlg::CSetTimeDlg(CWnd* pParent /*=NULL*/)

       : CDialog(CSetTimeDlg::IDD, pParent)

       {

       //||AFX_DATA_INIT(CSetTimeDlg)

       char time[];

       SYSTEMTIME st;

       GetLocalTime(&st);

       m_Day = st.wDay;

       m_Hour = st.wHour;

       m_Minute = st.wMinute;

       m_Month = st.wMonth;

       m_Second = st.wSecond;

       m_Year = st.wYear;// ||AFX_DATA_INIT

       }

       最后,在OnSettime函数中添加代码如下:

       void CClockView::OnSettime()

       {

       CSetTimeDlg SetDlg;

       if (SetDlg.DoModal ()==IDOK)

       {

       year=SetDlg.m_Year;

       month= SetDlg.m_Month;

       day= SetDlg.m_Day;

       hour=SetDlg.m_Hour;

       minute=SetDlg.m_Minute;

       second=SetDlg.m_Second;

       }

       // 计算各指针位置

       SetClock (hour,minute,second);

       Invalidate (true);

       }

       按以下步骤设计秒表控制程序:

       在OnLButtonDown函数中增加下列内容,以便响应单击秒表启动、停止框所发出的消息:

       void CClockView::OnLButtonDown(UINT nFlags, CPoint point)

       {

       if (m_WatchStart.PtInRect(point))

       {

       watch=0;

       SetTimer(2,,NULL);

       }

       if (m_WatchStop.PtInRect(point))

       {

       KillTimer (2);

       }

       CView::OnLButtonDown(nFlags, point);

       }

       编译,连接,运行程序。

       运行结果:

pythontime.clock()和time.perf_counter()的区别?

       本文旨在解析 Python 时间模块中的 time.clock() 和 time.perf_counter() 两个函数的区别。

       首先,time.clock() 函数的使用在 Python 3.6 版本中是可以的,这与官方文档中提到的“Deprecated since version 3.3”描述相符。虽然该函数在较新版本中被标记为废弃,但并未禁止使用。

       其次,时间教程中提到 clock 不计算 sleep 时间的原因,与使用 perf_counter 或 process_time 函数作为替代品相呼应。这两种函数在某些意义上具有同等意义,有助于解决 clock 函数可能带来的平台间差异性问题。

       深入探究 Python time 模块源代码,我们可以发现 clock 的实现依赖于 time_clock 函数,而 perf_counter 的实现则与之相似。在不同的操作系统平台上,这两种实现方式也会有所不同。

       值得注意的是,time.clock() 的返回结果在不同平台上表现不一,这可能导致用户困惑。相比之下,使用 perf_counter 或 process_time 函数能提供更为明确且一致的结果。这些函数在某些关键特性上具有互补性,如在处理 sleep 时间时的表现。

       综合上述分析,time.clock() 和 time.perf_counter() 的主要区别在于它们的实现、返回结果的平台依赖性以及在特定操作(如处理 sleep 时间)上的表现。选择合适的函数取决于具体需求,以确保程序的稳定性和跨平台兼容性。

copyright © 2016 powered by 皮皮网   sitemap