完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
Linux C老师布置了一个题,题意是控制实验室里的灯的开关,我们实验室的灯正好是16个,所以首先定义了一个两个字节的变量x,并赋了初始值,每一位表示一只灯的状态,1为亮,0为灭,正好是16只灯。
有一个显示菜单,输入数值可以用来选择进行什么操作,输入1表示进行开灯操作,输入2表示进行关灯操作,输入3表示显示所有灯的状态,输入4表示清屏,输入0表示退出。 开灯操作中输入1~16范围的一个数,使其开灯,主要用到与操作 关灯操作中输入1~16范围的一个数,使其关灯,主要用到异或操作,不过我用了一个麻烦的式子,可以自己修改哦。 程序只是有些长,但并不难哦,看代码吧! #include #include int main(){ unsigned int l1,l2,l3,l4,l5,x=0x0156; int s,t,m,i; while(1){ printf("开灯请输入1,,关灯请输入2,显示所有灯的状态请输入3,清屏操作输入4,退出请输入0:");//显示操作菜单 scanf("%d",&s);//输入想进行第几个操作 if(s==1){ l1=x; for(i=1;i<=16;i++){ if((l1&0x0001)==0x0001) printf("%d个灯亮",i); else printf("%d个灯灭",i); l1=l1>>1; } printf("n"); printf("请输入灯号,使其亮:"); scanf("%d",&t); x=x|(0x0001<<(t-1)); l2=x; for(i=1;i<=16;i++){ if((l2&0x0001)==0)//等于的优先级高于与,所以必须加括号 printf("%d个灯灭",i); l2=l2>>1; } printf("n"); } if(s==2){ l3=x; for(i=1;i<=16;i++){ if((l3&0x0001)==0x0001) printf("%d个灯亮",i); else printf("%d个灯灭",i); l3=l3>>1; } printf("n"); printf("请输入灯号,使其灭:"); scanf("%d",&m); x=x&(~(0x0001<<(m-1)));//直接用异或也可以 l4=x; for(i=1;i<=16;i++){ if((l4&0x0001)!=0) printf("%d个灯亮",i); l4=l4>>1; } printf("n"); } if(s==3){ l5=x; for(i=1;i<=16;i++){ if((l5&0x0001)==0x0001) printf("%d个灯亮",i); else printf("%d个灯灭",i); l5=l5>>1; } printf("n"); } if(s==4) { system("cls"); } //清屏函数 if(s==0) break; } } |
|
|
|
只有小组成员才能发言,加入小组>>
2513 浏览 0 评论
1083浏览 2评论
700浏览 1评论
452浏览 0评论
193浏览 0评论
329浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 02:46 , Processed in 1.272624 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号