用c语言模拟一个数字时钟,要求延时一秒运行

用c语言模拟一个数字时钟,要求延时一秒运行,第1张

1、用sleep延时刷新并获取系统时间来显示。

2、例程:

#include<graphicsh> 

#include<mathh> 

#include<dosh> 

#define PI 31415926 

//屏幕中心的坐标(640X480模式下)

#define mid_x 320 

#define mid_y 240 

int main() 

{ int graphdriver=DETECT,graphmode; 

int end_x,end_y; 

struct time curtime; 

float th_hour,th_min,th_sec; 

initgraph(&graphdriver,&graphmode,"C:\\TC2"); //初始化VGA屏幕模式

setbkcolor(BLACK); //使用黑色的背景色

while(!kbhit(0)) //若有键盘输入,则跳出,即是结束程序

{ setcolor(GREEN); //把画笔设为绿色

circle(mid_x,mid_y,180); //钟的外圆

circle(mid_x,mid_y,150); //钟的内圆

circle(mid_x,mid_y,1); //画出钟的圆心

gettime(&curtime); //取得系统当前时间

th_sec=(float)curtimeti_sec01047197551; //把秒针的角度化为弧度,为以后绘制时方便,下同

th_min=(float)curtimeti_min01047197551+th_sec/600; //分针的弧度

th_hour=(float)curtimeti_hour05235987755+th_min/120; //时度的弧度,注意整时是12等分的,所时乘的是314/1805

//计算出时针的尾的坐标(时针长70)

end_x=mid_x+70sin(th_hour); 

end_y=mid_y-70cos(th_hour); 

setcolor(RED); 

line(mid_x,mid_y,end_x,end_y); //用红色线画出时针

//计算出分针坐标(分针长110)

end_x=mid_x+110sin(th_min); 

end_y=mid_y-110cos(th_min); 

setcolor(RED); 

line(mid_x,mid_y,end_x,end_y); //用红色画出分针

end_x=mid_x+140sin(th_sec); 

end_y=mid_y-140cos(th_sec); 

setcolor(RED); 

line(mid_x,mid_y,end_x,end_y); //同上,画出秒针,长为140

//画出钟盘上的刻度,刻度长20

line(140,240,160,240); //9点对应的大刻度

line(320,60,320,80); //12点对应的大刻度

line(500,240,480,240); //3点的刻度

line(320,420,320,400); //6点的刻度

line(410,3957,400,3784); //5点

line(4757,330,4584,320); //4点

line(4757,150,4584,160); //2点

line(410,843,400,1016); //1点

line(230,843,240,1016); //11点

line(1643,150,1816,160); //10点

line(1643,330,1816,320); //8点

line(230,3957,240,3784); //7点

sleep(BLUE); //这里应该是打错,停止一秒,应为sleep(1000)

cleardevice(); //清除屏幕上的显示

closegraph(); //关闭VGA屏幕,即返回文本方式

return 0; 

}

#include <stdioh>

#include <stringh> //字符串库

#include <timeh> //时间库

//开发游戏开始界面。

void InitGameDisplay()

{

printf("================================欢迎您进入游戏================================");

printf("||");

printf("| 游戏规则 |");

printf("| 选择1代表剪刀、选择2代表石头、选择3代表布 |");

printf("| 1°用户首先选择一个1~3的整数 |");

printf("| 2°电脑会随机从1~3选择一个整数 |");

printf("| 3°由剪刀>布>石头>剪刀作出结果 |");

printf("| |");

printf("| Author: 刘超 |");

printf(" instructor:刘国柱 |");

printf("||");

}

//开发游戏结束界面。

void EndGameDisplay()

{

printf("||");

printf("| |");

printf("| GAME OVER |");

printf("| |");

printf("| 欢迎下次使用! |");

printf("| QQ:2542872403 |");

printf("||");

}

//计算机出牌(数字牌)

//输入: 无

//返回数值: 数字牌 (1,2,3)

int ComputerCreateNumberCard()

{

return time(NULL)%3+1;

}

//把用户与计算机产生的数字牌转化为文字牌

//输入: 数字牌(计算机或者用户: eg 1, 2,3)

//输出: 文字牌(“剪刀”,“石头”,“布”)

//返回数值: 无

void ConvertNumberToWord(int intNumberCard, char charWord[])

{

if(intNumberCard==1)

{

strcpy(charWord,"剪子"); //字符串赋值

}else if(intNumberCard==2)

{

strcpy(charWord,"石头");

}else if(intNumberCard==3)

{

strcpy(charWord,"布");

}

}

//判断胜负

//输入: 用户的数字牌

// 计算机产生的数字牌

//输出: 结果字符串 (“计赢”,“用赢”,“平”)

//返回数值: 无

//

//判断原理:

// 计算机 用户 判断结果

// 1 1 平

// 1 2 用赢

// 1 3 计赢

// 2 1 计赢

// 2 2 平

// 2 3 用赢

// 3 1 用赢

// 3 2 计赢

// 3 3 平

void JudgeWiner(int intUserNumberCard,int intComputerNumberCard,char charWiner[])

{

if(intUserNumberCard==intComputerNumberCard)

{

strcpy(charWiner,"平");

}else{

if(intComputerNumberCard==1 && intUserNumberCard==3)

{

strcpy(charWiner,"输");

}else if(intComputerNumberCard==1 && intUserNumberCard==2)

{

strcpy(charWiner,"赢");

}else if(intComputerNumberCard==2 && intUserNumberCard==3 )

{

strcpy(charWiner,"赢");

}else if(intComputerNumberCard==2 && intUserNumberCard==1 )

{

strcpy(charWiner,"输");

}else if(intComputerNumberCard==3 && intUserNumberCard==2 )

{

strcpy(charWiner,"输");

}else if(intComputerNumberCard==3 && intUserNumberCard==1 )

{

strcpy(charWiner,"赢");

}

}

}//JudgeWiner_end

void main()

{

int intUseNumCard; //用户出的数字牌

int intComputerNumCard; //计算机出的数字牌

char charWiner[100]; //判断结果

int n,m,number1,number2;

//1: 开发游戏开始界面。

InitGameDisplay();

int num[3] = {0}; //用于计数

printf("\n请从1,2,3中选择一个数字");

while(num[1]+num[2]+num[0] !=3)

{

while(true)

{

//2: 用户出牌。

printf("请劳驾出牌\n");

scanf("%d",&intUseNumCard);

if(intUseNumCard>=1 && intUseNumCard<=3)

{

break;

}else{

printf("输入错误,请重新输入!\n");

}

}

//3: 计算机出牌

intComputerNumCard=ComputerCreateNumberCard();

//31) 把用户与计算机产生的数字牌转化为文字牌

char CharUseTextCard[6];

char CharComputerTextCard[6];

ConvertNumberToWord(intUseNumCard,CharUseTextCard);

ConvertNumberToWord(intComputerNumCard,CharComputerTextCard);

printf("您出的牌是 %s,计算机出的牌是 %s\n",CharUseTextCard,CharComputerTextCard);

//4: 判断胜负

JudgeWiner(intUseNumCard,intComputerNumCard,charWiner);

//显示

if(strcmp(charWiner,"平")==0)

{

printf("%s=%s结果: 平!!\n",CharUseTextCard,CharComputerTextCard);

num[0]++;

}else if(strcmp(charWiner,"赢")==0){

printf("%s>%s结果: 赢!\n",CharUseTextCard,CharComputerTextCard);

num[1]++;

}else if(strcmp(charWiner,"输")==0){

printf("%s<%s结果: 输!\n",CharUseTextCard,CharComputerTextCard);

num[2]++;

}

printf("\n");

printf("\n");

printf("\n");

printf("\n");

}//while_end

printf("一共进行了3局比赛,你赢了%d局,计算机赢了%d局,平局%d次\n",num[1],num[2],num[0]);

//6: 游戏结束界面。

EndGameDisplay();

}

1

连接实验电路并检查无误。

带进位运算实验接线图

2

打开电源开关。

3

用输入开关向暂存器DR1和DR2置数,方法与344相同:

a)

用输入开关向暂存器DR1置数:

拨动输入开关形成二进制数01100101(或其它数值)。(数据显示灯亮为0,灭为1)。

使SWITCHUNIT单元中的开关SW-B=0(打开数据输入三态门)、

ALU-B=1(关闭ALU输出三态门)、

《计算机组成原理》实验报告正文用纸

2

LDDR1=1、LDDR2=0。

按动微动开关KK2,则将二进制数01100101置入DR1中。

b)

用输入开关向暂存器DR2置数。

拨动输入开关形成二进制数10100111(或其它数值)。

SW-B=0、ALU-B=1保持不变,

改变LDDR1、LDDR2:使LDDR1=0、LDDR2=1,

按动微动开关KK2,则将二进制数10100111置入DR2中。

4

关闭数据输入三态门(SW-B=1),

打开ALU输出三态门(ALU-B=0),

使LDDR1=0、LDDR2=0,关闭寄存器。

5

对进位标志清零:CLR=1→0→1(每次计算前都要对进位标志清零,实验板

上“SWITCH

UNIT”单元中的CLR开关为标志CY、ZI的清零开关,它为零时是清零状态,所以将此开关做1→0→1 *** 作,即可使标志位清零)。

注意:

本实验中运算结果是否产生进位、结果是否为0是根据进位指示灯CY和零标志指示灯ZI的状态来判断的。

进位标志指示灯CY亮(cy=0)时表示进位标志为假[此时运算没有产生进位];标志指示灯CY灭(cy=1)时表示进位标志为真[此时运算产生了进位]。

零标志指示灯ZI灯亮时表示零标志为假[此时运算结果不为“0”],灯灭时表示零标志为真[此时运算结果为“0”]。

6

验证带进位运算及进位锁存功能。

置Cn=1、AR=0,然后进行带进位算术运算:

例如做加法运算,使ALU-B=0,S3、S2、S1、S0、M和状态依次为1、0、0、1、0,此时数据总线上显示的数据为DR1加DR2加当前进位标志的和,但此时的进位状态位还没有打入进位锁存器中(它是要靠T4节拍来打入的)。这个结果是否有进位产生,则要按动微动开关KK2,若进位标灯亮,则无进位,反之则有进位。因为做加法运算时,数据总线一直显示的数据为DR1+DR2+CY,所以当有进位输入到进位锁存器后,总线显示的数据将为加上当前进位锁存器中锁存的进位的结果。

以上就是关于用c语言模拟一个数字时钟,要求延时一秒运行全部的内容,包括:用c语言模拟一个数字时钟,要求延时一秒运行、编写一个C程序,模拟一个“剪刀、石头、布”的游戏、c语言模拟加法及进位控制实验等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9486569.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存