数字七段显示
问题描述:
我们经常看到的计算器上显示的数字,或电梯中显示的表示楼层的数字,实际上都是由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.