#include<stdioh>
#include<stdlibh>
#include<timeh>
#define SWAP(a,b,c) (c)=(a);(a)=(b);(b)=(c);
void main()
{
int i,n,fen=0,p;
int a,b,num;
printf("你要几道题");
scanf("%d",&n);
srand(time(NULL));
for(i=0;i<n;i++)
{ a=rand()%10+1;
b=rand()%10+1;
if(p){p=0;
printf("%d + %d = ",a,b);
scanf("%d",&num);
if(num==a+b)fen++;
}
else
{ p=1;
if(a<b)SWAP(a,b,p);
printf("%d - %d = ",a,b);
scanf("%d",&num);
if(num==a-b)fen++;
}
}
printf("总分 %d,得分%d ",n,fen);
}
#include<reg51h>
#include<INTRINSh>
#define u16 unsigned int
#define u8 unsigned char
sbit k1=P1^0;//加1
sbit k2=P1^1;//加2
sbit k3=P1^2;//加3
sbit k4=P1^3;//减1
sbit k5=P1^4;//连按2下开始或停止计时,按下该键再按加减分键给另一边加分
sbit bz=P1^6; //按按键时响,不按不响
sbit led=P1^5;//创新能力不够没想到在哪加
u8 key=0xff;//消抖后的有效按键值
u8 key_down=0x00;//按键下降沿扫描结果,1有效
u8 key_up=0x00; //上升沿扫描结果,1有效
u8 key_sc=0xff;//上次扫描的按键值
//按键扫描程序
void scanKey(){
static u8 temp0;
static u8 ms;
u8 temp=0xff;
if(k1==0)temp&=0xfe;
if(k2==0)temp&=0xfd;
if(k3==0)temp&=0xfb;
if(k4==0)temp&=0xf7;
if(k5==0)temp&=0xef;
if(temp==temp0){// 按键消抖
if(++ms>=5){//连续5次扫描的值一样,则认为是稳定状态
key=temp;
ms=0;
}
}else {
temp0=temp;
ms=0;
}
key_down=key_sc&(~key);//下降沿扫描
key_up=(~key_sc)&key;//下降沿扫描
key_sc=key;
}
u8 readPIN(u8 port,u8 pin){
code u8 tab[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};
return ((port&tab[pin])==00:1);
}
sbit dx=P3^2;
u8 ds[8]; //数码管显示缓存
code u8 w[]={~0x01,~0x02,~0x04,~0x08,~0x10,~0x20,~0x40,~0x80,}; //位码
code u8 d[]={~0xc0,~0xf9,~0xa4,~0xb0,~0x99,~0x92,~0x82,~0xf8,~0x80,~0x90,0x00};//断码
code u8 d_huo[]={0x00,0x00,0x80,0x00,0x80,0x00,0x00,0x00,};
void dispaly(){//显示函数
static u8 a;
if(++a>7)a=0;
P2=0xff;
P0=d[ds[a]]|d_huo[a];
dx=1;dx=0;
P2=w[a];
}
void init() //初始化函数
{ TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
}
//加分和减分
void jjf(u16 val){
if(readPIN(key_down,0)==1){//加1
val+=1;
}
if(readPIN(key_down,1)==1){//加2
val+=2;
}
if(readPIN(key_down,2)==1){//加3
val+=3;
}
if(readPIN(key_down,3)==1){//减1
if(val>0)val-=1;
}
}
// 连按程序
u8 la_count=0;
u16 la_js=0;
void lan(){
if(la_js>=1000||((key&0xef)!=0xef))la_count=0;
if(readPIN(key_down,4)==1){
la_count++;
la_js=0;
}
}
u16 count=0;
u16 count1=0;
u16 s24=24000;
u8 s24off_flag=0;
void main()//主函数
{
init();
TR0=1;
while(1){
ds[0]=(count>99count/100%10:10);//将当前分值送到数码管缓存
ds[1]=(count>9 count/10%10 :10);
ds[2]=count%10;
ds[3]=(s24>9999s24/10000%10:10);
ds[4]=s24/1000%10;
ds[5]=(count1>99count1/100%10:10);//将当前分值送到数码管缓存
ds[6]=(count1>9 count1/10%10 :10);
ds[7]=count1%10;
scanKey();//扫描按键
bz=(key!=0xff0:1);//按下按键,蜂鸣器响
if(readPIN(key,4)==0){//判断给哪一方加减分
jjf(&count);
}else {
jjf(&count1);
}
lan();
if(la_count==2){
if(s24off_flag==0){
s24=24000;
s24off_flag=1;
}else {
s24off_flag=0;
}
la_count=3;
}
}
}
void timer0() interrupt 1//定时器
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
dispaly();
if(s24off_flag==1){
if(s24>0)s24--;
}
if(la_js<60000)la_js++;
}
单片机最小系统自己画吧,功能设计可以再探讨,你在问一下出这题的人,为什么不用两个573,用一个跟没用有什么区别
这道题考察的是最大公约数和最小公倍数,你先定义两个函数,求最大公约数的和求最小公倍数的.int gongyueshu(int a,int b) int gongbeishu(int a,int b)
cin>>n1>>'/'>>n2>>c>>d1>>'/'>>d2;
以上就是关于C语言编程:10以内加减法,根据输入题数出题,判断做题是否正确,最后计算分数。全部的内容,包括:C语言编程:10以内加减法,根据输入题数出题,判断做题是否正确,最后计算分数。、篮球计分牌 (1)3位数码管显示篮球分数 (2)通过按键进行加减分数 求大神,帮忙必有报酬。、c++编程序要的是原代码的输入n1 n2 d1 d2,输出n1/d1,n2/d2(注意要有化简的),并有分数的加减乘除结果...等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)