程序设计基石与实践之实现数字七段显示与发扑克牌问题

2019-04-14 18:03发布

数字七段显示

问题描述:

我们经常看到的计算器上显示的数字,或电梯中显示的表示楼层的数字,实际上都是由7个发光器件组成的.如下所示.当不同器件被点亮时,可组合出不同的数字.你的任务是,对给定的一个整数,按这种形式把给定整数显示出来,并且数字是可以按比例放大的.
在字符终端上显示这样的数字时,一个最小数字需占5行3列,所谓"数字是可以按比例放大"包含横向放大和纵向放大.其中,横向放大w倍是指显示数字所占3列的中间一列放大w倍,即中间一列变为占w列;而纵向放大h倍是指显示数字所占5行的第2行和第4行放大h倍,即第2行和第4行要占用h行.

参考源代码:

#include char dt[11][5][3]={ { {' ','_',' '},{'|',' ','|'},{' ',' ',' '},{'|',' ','|'},{' ','_',' '}},//0 { {' ',' ',' '},{' ',' ','|'},{' ',' ',' '},{' ',' ','|'},{' ',' ',' '}},//1 { {' ','_',' '},{' ',' ','|'},{' ','_',' '},{'|',' ',' '},{' ','_',' '}},//2 { {' ','_',' '},{' ',' ','|'},{' ','_',' '},{' ',' ','|'},{' ','_',' '}},//3 { {' ',' ',' '},{'|',' ','|'},{' ','_',' '},{' ',' ','|'},{' ',' ',' '}},//4 { {' ','_',' '},{'|',' ',' '},{' ','_',' '},{' ',' ','|'},{' ','_',' '}},//5 { {' ','_',' '},{'|',' ',' '},{' ','_',' '},{'|',' ','|'},{' ','_',' '}},//6 { {' ','_',' '},{' ',' ','|'},{' ',' ',' '},{' ',' ','|'},{' ',' ',' '}},//7 { {' ','_',' '},{'|',' ','|'},{' ','_',' '},{'|',' ','|'},{' ','_',' '}},//8 { {' ','_',' '},{'|',' ','|'},{' ','_',' '},{' ',' ','|'},{' ','_',' '}} //9 }; int main(){ int i,j,w,h,k,n,p,m =0,a[10]; while(1){ scanf("%d%d%ld",&w,&h,&n); if(w ==0) break; while(n){ a[m++] = n%10; n/=10; } for( i =0;i<5;i++){ for(p =0;p=0;k--){ printf("%c",dt[a[k]][i][0]); for(j =0; j

测试结果

如下所示:

发扑克牌

问题描述:

在计算机上玩发扑克牌是一种常见的游戏,现在按玩升级的规则,模拟4个玩家发牌,打印出每个玩家的12张牌和6张底牌.

参考源代码:

#include #include #include int main(){ int x,y,a[55],i,j,z,fg; char d[] ={"xA234567891JQK"}; srand((unsigned int) time (NULL)); for(i =0; i<54; i++){ while(1){ x= rand()%4+1; y = rand()%14; z =x*100+y; if(z==300||z==400) continue; fg =0; for(j =0; j

测试结果

如下所示:


关于程序设计基石与实践更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.