本文目錄一覽:
- 1、c語言計數器
- 2、如何用C語言編寫這個計數程序?
- 3、介紹計數器 /定時器 程序 的編寫步驟 (C語言的)
- 4、用C語言寫兩個計數器的小程序。
- 5、用c語言 (c++) 編寫計算器程序
- 6、51單片機按鍵計數器C語言編程
c語言計數器
#include stdlib.h
#include math.h
#include graphics.h
#include stdio.h
#include process.h
#define EXCAPE 27
#define ENTER 13
main(){
int press,i,x,y,x1,y1,ch_z=0;
int dian=0;
char ch=’0′; /*input + – * / */
char emp[80],sum[80],*e,*s;
double yuan=0.000000000000;
void init(void);
void clear_z(char *u);
double strtoflt(char *p);
int getkey();
int gd=DETECT, gm;
initgraph(gd, gm, “”);
e=emp;
s=sum;
init();
x = (getmaxx() / 2) – 120;
y = (getmaxy() / 2) – 150;
x1 = (getmaxx() / 2) + 120;
y1 = (getmaxy() / 2) + 150;
while(1){
press = getkey();
switch(press){
case EXCAPE:
exit(0);
case 47:
bar (x + 10, y + 80 + 10, x + 60 – 10, y + 80 + 60 – 10);
delay(8000);
init();
if (ch!=’0′){
switch(ch){
case ‘/’:
if (strtoflt(emp)==0.0){
ch=’0′;
ch_z=0;
dian=0;
emp[0]=’\0′;
sum[0]=’\0′;
e=emp;
s=sum;
outtextxy(x+30,y+40,”error!!!!!”);
break;
}
yuan = strtoflt(sum) / strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
break;
case ‘*’:
yuan = strtoflt(sum) * strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
break;
case ‘+’:
yuan = strtoflt(sum) + strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
break;
case ‘-‘:
if (strtoflt(sum)=strtoflt(emp)){
yuan = strtoflt(sum) – strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
}
else{
yuan=strtoflt(emp)-strtoflt(sum);
sprintf(sum,”-%0.10f”,yuan);
}
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]=’\0′;
}
}
else{
if (ch_z==0){
outtextxy(x+30,y+40,emp);
stpcpy(sum,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
}
ch=’/’;
ch_z=0;
emp[0]=’\0′;
e=emp;
dian=0;
break;
case 42:
bar (x + 60 + 10, y + 80 + 10, x + 60 * 2 – 10, y + 80 + 60 – 10);
delay(8000);
init();
if (ch!=’0′){
switch(ch){
case ‘/’:
yuan = strtoflt(sum) / strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]=’\0′;
e=emp;
break;
case ‘*’:
yuan = strtoflt(sum) * strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]=’\0′;
e=emp;
break;
case ‘+’:
yuan = strtoflt(sum) + strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]=’\0′;
e=emp;
break;
case ‘-‘:
if (strtoflt(sum)=strtoflt(emp)){
yuan = strtoflt(sum) – strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
}
else{
yuan=strtoflt(emp)-strtoflt(sum);
sprintf(sum,”-%0.10f”,yuan);
}
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]=’\0′;
e=emp;
break;
}
}
else{
if (ch_z==0){
outtextxy(x+30,y+40,emp);
stpcpy(sum,emp);
e=emp;
}
else
outtextxy(x+30,y+40,sum);
}
ch=’*’;
ch_z=0;
dian=0;
break;
case 45:
bar (x + 60 * 2 + 10, y + 80 + 10, x + 60 * 3 – 10, y + 80 + 60 – 10);
delay(8000);
init();
if (ch!=’0′){
switch(ch){
case ‘/’:
yuan = strtoflt(sum) / strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]=’\0′;
e=emp;
break;
case ‘*’:
yuan = strtoflt(sum) * strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]=’\0′;
e=emp;
break;
case ‘+’:
yuan = strtoflt(sum) + strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]=’\0′;
e=emp;
break;
case ‘-‘:
if (strtoflt(sum)=strtoflt(emp)){
yuan = strtoflt(sum) – strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
}
else{
yuan=strtoflt(emp)-strtoflt(sum);
sprintf(sum,”-%0.10f”,yuan);
}
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]=’\0′;
e=emp;
break;
}
}
else{
if (ch_z==0){
outtextxy(x+30,y+40,emp);
stpcpy(sum,emp);
e=emp;
}
else
outtextxy(x+30,y+40,sum);
}
ch=’-‘;
ch_z=0;
dian=0;
break;
case 43:
bar (x + 60 * 3 + 10, y + 80 + 10, x + 60 * 4 – 10, y + 80 + 60 – 10);
delay(8000);
init();
if (ch!=’0′){
switch(ch){
case ‘/’:
yuan = strtoflt(sum) / strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]=’\0′;
e=emp;
break;
case ‘*’:
yuan = strtoflt(sum) * strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]=’\0′;
e=emp;
break;
case ‘+’:
yuan = strtoflt(sum) + strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]=’\0′;
e=emp;
break;
case ‘-‘:
if (strtoflt(sum)=strtoflt(emp)){
yuan = strtoflt(sum) – strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
}
else{
yuan=strtoflt(emp)-strtoflt(sum);
sprintf(sum,”-%0.10f”,yuan);
}
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]=’\0′;
e=emp;
break;
}
}
else{
if (ch_z==0){
outtextxy(x+30,y+40,emp);
stpcpy(sum,emp);
e=emp;
}
else
outtextxy(x+30,y+40,sum);
}
ch=’+’;
ch_z=0;
dian=0;
break;
case 49:
bar (x + 10, y + 80 + 53 + 10, x + 60 – 10, y + 80 + 53 * 2 – 4);
delay(8000);
init();
for (i=0;i=79;i++){
if (emp[i]==’\0′)
break;
}
if (ch_z==0){
*e=’1′;e++;*e=’\0′;
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case 50:
bar (x + 60 + 10, y + 80 + 53 + 10, x + 60 * 2 – 10, y + 80 + 53 * 2 – 4);
delay(8000);
init();
for (i=0;i=79;i++){
if (emp[i]==’\0′)
break;
}
if (ch_z==0){
*e=’2′;e++;*e=’\0′;
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case 51:
bar (x + 60 * 2 + 10, y + 80 + 53 + 10, x + 60 * 3 – 10, y + 80 + 53 * 2 – 4);
delay(8000);
init();
for (i=0;i=79;i++){
if (emp[i]==’\0′)
break;
}
if (ch_z==0){
*e=’3′;e++;*e=’\0′;
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case ENTER:
bar (x + 60 * 3 + 10, y + 80 + 53 + 10, x + 60 * 4 – 10, y + 80 + 53 * 2 – 4);
delay(8000);
init();
if (ch!=’0′){
switch(ch){
case ‘/’:
yuan = strtoflt(sum) / strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]=’\0′;
e=emp;
break;
case ‘*’:
yuan = strtoflt(sum) * strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]=’\0′;
e=emp;
break;
case ‘+’:
yuan = strtoflt(sum) + strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]=’\0′;
e=emp;
break;
case ‘-‘:
if (strtoflt(sum)=strtoflt(emp)){
yuan = strtoflt(sum) – strtoflt(emp);
sprintf(sum,”%0.10f”,yuan);
}
else{
yuan=strtoflt(emp)-strtoflt(sum);
sprintf(sum,”-%0.10f”,yuan);
}
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]=’\0′;
e=emp;
break;
}
}
else{
if (ch_z==0){
outtextxy(x+30,y+40,emp);
stpcpy(sum,emp);
e=emp;
}
else{
outtextxy(x+30,y+40,sum);
}
}
ch=’0′;
ch_z=1;
dian=0;
break;
case 52:
bar (x + 10, y + 80 + 53 * 2 + 10, x + 60 – 10, y + 80 + 53 * 3 – 4);
delay(8000);
init();
if (ch_z==0){
*e=’4′;e++;*e=’\0′;
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case 53:
bar (x + 60 + 10, y + 80 + 53 * 2 + 10, x + 60 * 2 – 10, y + 80 + 53 * 3 – 4);
delay(8000);
init();
if (ch_z==0){
*e=’5′;e++;*e=’\0′;
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case 54:
bar (x + 60 * 2 +10, y + 80 + 53 * 2 + 10, x + 60 * 3 – 10, y + 80 + 53 * 3 – 4);
delay(8000);
init();
if (ch_z==0){
*e=’6′;e++;*e=’\0′;
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case 46:
bar (x + 60 * 3 + 10, y + 80 + 53 * 2 + 10, x + 60 * 4 – 10, y + 80 + 53 * 3 – 4);
delay(8000);
init();
if (dian==0){
if (ch_z==0){
*e=’.’;e++;*e=’\0′;
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
}
else{
if (ch_z==0)
outtextxy(x+30,y+40,emp);
else
outtextxy(x+30,y+40,sum);
}
dian=1;
break;
case 55:
bar (x + 10, y + 80 + 53 * 3 + 10, x + 60 – 10, y + 80 + 53 * 4 – 4);
delay(8000);
init();
if (ch_z==0){
*e=’7′;e++;*e=’\0′;
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case 56:
bar (x + 60 + 10, y + 80 + 53 * 3 + 10, x + 60 * 2 -10, y + 80 + 53 * 4 – 4);
delay(8000);
init();
if (ch_z==0){
*e=’8′;e++;*e=’\0′;
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case 57:
bar (x + 60 * 2 + 10, y + 80 + 53 * 3 + 10, x + 60 * 3 – 10, y + 80 + 53 * 4 – 4);
delay(8000);
init();
if (ch_z==0){
*e=’9′;e++;*e=’\0′;
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case 48:
bar (x + 60 * 3 + 10, y + 80 + 53 * 3 + 10, x + 60 * 4 – 10, y + 80 + 53 * 4 – 4);
delay(8000);
init();
if (ch_z==0){
*e=’0′;e++;*e=’\0′;
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case 32:
emp[0]=’\0′;
sum[0]=’\0′;
e=emp;
s=sum;
ch=’0′;
ch_z=0;
dian=0;
init();
break;
case 8:
delay(8000);
for(i=0;i=79;i++){
if (emp[i]==’\0′)
break;
}
if (i==0)
break;
if (i!=79i!=0){
i–;
emp[i]=’\0′;
e=emp[i];
}
init();
outtextxy(x+30,y+40,emp);
break;
}
}
}
/*———————————————————————*/
void init(void){
int x, y, x1, y1, i, j;
char emp;
x = (getmaxx() / 2) – 120;
y = (getmaxy() / 2) – 150;
x1 = (getmaxx() / 2) + 120;
y1 = (getmaxy() / 2) + 150;
cleardevice();
setbkcolor(3);
setfillstyle(1, 15);
setcolor(15);
settextstyle(1,0,1);
rectangle (x, y, x1, y1);
rectangle (x – 7, y – 7, x1 + 7, y1 + 7);
rectangle (x + 10, y + 10, x1 – 10, y + 80 – 10);
line (x, y + 80, x1, y + 80);
y = y + 80;
for (j = 1; j = 4; j++){
x = (getmaxx() / 2) – 120;
for (i = 1; i = 4; i++){
/* bar (x + 10, y + 10, x + 60 – 10, y + 60 – 10);*/
rectangle(x + 10, y + 10, x + 60 – 10, y + 60 – 10);
if (j == 1){
if (i == 1)
outtextxy(x + 20, y + 20, “/”);
if (i == 2)
outtextxy(x + 25, y + 20, “*”);
if (i == 3)
outtextxy(x + 27, y + 20, “-“);
if (i == 4)
outtextxy(x + 25, y + 20, “+”);
}
if (j == 2){
if (i == 1)
outtextxy(x + 25, y + 20, “1”);
if (i == 2)
outtextxy(x + 25, y + 20, “2”);
if (i == 3)
outtextxy(x + 25, y + 20, “3”);
if (i == 4)
outtextxy(x + 25, y + 20, “=”);
}
if (j == 3){
if (i == 1)
outtextxy(x + 25, y + 20, “4”);
if (i == 2)
outtextxy(x + 25, y + 20, “5”);
if (i == 3)
outtextxy(x + 25, y + 20, “6”);
if (i == 4)
outtextxy(x + 25, y + 20, “.”);
}
if (j == 4){
if (i == 1)
outtextxy(x + 25, y + 20, “7”);
if (i == 2)
outtextxy(x + 25, y + 20, “8”);
if (i == 3)
outtextxy(x + 25, y + 20, “9”);
if (i == 4)
outtextxy(x + 25, y + 20, “0”);
}
x = x + 60;
}
y = y + 53;
}
}
/*———————————————————————*/
int getkey(){
char lowbyte;
int press;
while(bioskey(1)==0);
press = bioskey(0);
press = press0xff? press0xff: press8;
return(press);
}
double strtoflt(char *p)
{
double rtl=0.000000000000;
double pnt=0.000000000000;
double t = 10;
int ispoint = 0;
while (*p!=’\0’||*p!=’.’){
if(*p’0’||*p’9′)
break;
rtl*=10;
rtl+=*p-‘0’;
p++;
}
if (*p==’.’){
ispoint=1;
p++;
}
while(ispoint*p!=’\0′){
pnt+=(double)(*p-‘0’)/t;
t*=10;
p++;
}
rtl+=pnt;
return (rtl);
}
/*———————————————————————–*/
void clear_z(char u[]){
int i;
for(i=strlen(u)-1;i=0;i–){
if (u[i]!=’0′)
break;
}
if (u[i]==’.’){
u[i]=’\0′;
}
else{
i++;
u[i]=’\0′;
}
}
如何用C語言編寫這個計數程序?
按照題目要求編寫的C語言計數程序如下
#includestdio.h
int main(){
int i,start,end,step;
printf(“從哪個數字開始計數:”);
scanf(“%d”,start);
printf(“在哪個數字停止計數:”);
scanf(“%d”,end);
printf(“每次增加的數字:”);
scanf(“%d”,step);
for(i=start;i=end;i=i+step){
printf(“%d\n”,i);
}
return 0;
}
介紹計數器 /定時器 程序 的編寫步驟 (C語言的)
假設你用的晶振為12m,用p1.0口輸出周期為2ms的方波。使用定時器工作方式1.
至於計數初值的計算,授之以魚不如授之以漁!
在定時器模式下,計數器的計數脈衝來自於晶振脈衝的12分頻信號,即對機器周期進行計數。若選擇12m晶振,則定時器的計數頻率為1mhz。假設定時時間為t,機器周期為t1,即12/晶振頻率。x為定時器初值。則
x=2^n-t/t1。方式0,n=13,方式1時,n=16,方式2和方式3,n=8
自己算去吧!
#include
void
inittimer0(void)//
{
tmod
=
0x01;
th0
=
0x0fc;
//計數器初值
tl0
=
0x18;
ea
=
1;
et0
=
1;
tr0
=
1;//開啟定時器t0
}
void
main(void)
{
inittimer0();
}
void
timer0interrupt(void)
interrupt
1
{
th0
=
0x0fc;//重新賦初值
tl0
=
0x18;
p1.0=~p1.0;
//輸出方波
}
用C語言寫兩個計數器的小程序。
很多人回家過年了,所以回答少,程序已通過
#includestdio.h
/*第一個程序:*/
main()
{
int i=1, m=0;
printf(“請輸入一個數:\n”);
while(i!=0){ //while 循環開始當i等於0時,程序中止;
scanf(“%d”,i); //從鍵盤獲取數值,如果i=0,則退出並輸出m的值
//printf(“\n”);
if (i==1) m++; //如果i=1,則m+1;
}
printf(“輸入 ‘1’ 的次數:%d\n”,m);
}
//第二個程序 在第一個基礎上稍修改即可
main()
{
int i=1, n,m=0;
printf(“請輸入N:\n”);
scanf(“%d”,n);
printf(“請輸入一個數:\n”);
while(i!=0){
scanf(“%d”,i); //從鍵盤獲取數值,如果i=0,則退出並輸出m的值
if (in) m++; //如果in,則m+1;
}
printf(“大於N次數:%d\n”,m);
}
用c語言 (c++) 編寫計算器程序
我們平時進行數學運算都是用計算器完成的,那麼如何用C語言編寫一個計算器呢?下面我給大家分享一下。
工具/材料
Dev C++
01
首先我們需要在Dev C++軟件中創建一個C語言項目,項目類型選擇控制台程序,如下圖所示
02
接下來我們在項目下面新建C語言文件,如下圖所示
03
然後我們在C文件中寫入計算器邏輯代碼,主要是讓用戶輸入計算方式,然後程序自動計算,如下圖所示
04
接下來我們點擊運行菜單,選擇下拉菜單中的運行選項,如下圖所示
05
最後在彈出的界面中我們輸入要計算的公式,程序就會自動計算,如下圖所示
51單片機按鍵計數器C語言編程
#includereg51.h
#define uchar unsigned char;
uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //0到f
uchar number,dat,dis[4];
void t0isr() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
number++;
number%=3;
switch(number)
P1=0x20number;
P0=distab[dis[number]];
}
void int0isr() interrupt 0
{
dat++;
dat%=1000;
dis[0]=dat%10;
dis[1]=dat%100/10;
dis[2]=dat/100;
}
main()
{
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR1=1;
ET1=1;
EX0=1;
IT0=1;
EA=1;
while(1);
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/185978.html