| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2471 人关注过本帖
标题:求助,c语言一个打印数字的问题
只看楼主 加入收藏
sanguine1026
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-11-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
求助,c语言一个打印数字的问题
图片附件: 游客没有浏览图片的权限,请 登录注册


我能想到的就是用子程序把每个数字按行打印-和|  但是打印完一个数字之后定位符应该是在数字末尾,接着打印下一个数字时候就不能和这个数字对齐了...所以不知道怎么办了,这是学校教程,学到这里还没有接触过指针,刚刚学到递归,应该是可以用学过的东西解决的?
搜索更多相关主题的帖子: c语言 打印 数字 一个数 指针 
2017-12-01 00:05
sanguine1026
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-11-30
收藏
得分:0 
不知道图貌似发不出来?..就是打印成电子表上那种数字的样子的12:00    用- 和|来构成数字
2017-12-01 00:06
sanguine1026
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-11-30
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2017-12-01 00:06
sanguine1026
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-11-30
收藏
得分:0 
--
|  |
|  |

|  |
|  |
 --

|
|

|
|


 --
   |
   |
 --
|
|
 --  这样子的 但01:00 要在同一排上面...
2017-12-01 00:10
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10570
专家分:43031
注 册:2014-5-20
收藏
得分:2 
模拟数码管字模,如:
图片附件: 游客没有浏览图片的权限,请 登录注册
2017-12-01 06:00
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:1 
回复 5楼 吹水佬
咋的也不像  行间距和列间距不一致

DO IT YOURSELF !
2017-12-01 10:05
nslookup65
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:24
专家分:192
注 册:2017-12-1
收藏
得分:1 
图片附件: 游客没有浏览图片的权限,请 登录注册
2017-12-01 11:10
sanguine1026
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-11-30
收藏
得分:0 
回复 7楼 nslookup65
这个怎么做?
2017-12-03 21:42
nslookup65
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:24
专家分:192
注 册:2017-12-1
收藏
得分:15 
程序代码:
#include <stdio.h>
#include <windows.h>

#define USER_INPUT_MAX_LENGTH 64

typedef struct
{
    char* unitLine[7];
} Digit;

static Digit digit[10];

void printfDigit(Digit _digit, HANDLE _handle, COORD _pos)
{
    for (int i=0; i<7;i++)
    {
        //纵向打印。X 坐标固定,Y 坐标递增
        printf("%s", _digit.unitLine[i]);
        _pos.Y++;
        SetConsoleCursorPosition(_handle, _pos);
        Sleep(10);
    }
}

void InitDigit()
{
    //0
    digit[0].unitLine[0] = "****";
    digit[0].unitLine[1] = "*  *";
    digit[0].unitLine[2] = "*  *";
    digit[0].unitLine[3] = "*  *";
    digit[0].unitLine[4] = "*  *";
    digit[0].unitLine[5] = "*  *";
    digit[0].unitLine[6] = "****";
    //1
    digit[1].unitLine[0] = "   *";
    digit[1].unitLine[1] = "   *";
    digit[1].unitLine[2] = "   *";
    digit[1].unitLine[3] = "   *";
    digit[1].unitLine[4] = "   *";
    digit[1].unitLine[5] = "   *";
    digit[1].unitLine[6] = "   *";
    //2                           
    digit[2].unitLine[0] = "****";
    digit[2].unitLine[1] = "   *";
    digit[2].unitLine[2] = "   *";
    digit[2].unitLine[3] = "****";
    digit[2].unitLine[4] = "*   ";
    digit[2].unitLine[5] = "*   ";
    digit[2].unitLine[6] = "****";
    //3                           
    digit[3].unitLine[0] = "****";
    digit[3].unitLine[1] = "   *";
    digit[3].unitLine[2] = "   *";
    digit[3].unitLine[3] = "****";
    digit[3].unitLine[4] = "   *";
    digit[3].unitLine[5] = "   *";
    digit[3].unitLine[6] = "****";
    //4                           
    digit[4].unitLine[0] = "*  *";
    digit[4].unitLine[1] = "*  *";
    digit[4].unitLine[2] = "*  *";
    digit[4].unitLine[3] = "****";
    digit[4].unitLine[4] = "   *";
    digit[4].unitLine[5] = "   *";
    digit[4].unitLine[6] = "   *";
    //5                           
    digit[5].unitLine[0] = "****";
    digit[5].unitLine[1] = "*   ";
    digit[5].unitLine[2] = "*   ";
    digit[5].unitLine[3] = "****";
    digit[5].unitLine[4] = "   *";
    digit[5].unitLine[5] = "   *";
    digit[5].unitLine[6] = "****";
    //6                           
    digit[6].unitLine[0] = "****";
    digit[6].unitLine[1] = "*   ";
    digit[6].unitLine[2] = "*   ";
    digit[6].unitLine[3] = "****";
    digit[6].unitLine[4] = "*  *";
    digit[6].unitLine[5] = "*  *";
    digit[6].unitLine[6] = "****";
    //7                           
    digit[7].unitLine[0] = "****";
    digit[7].unitLine[1] = "   *";
    digit[7].unitLine[2] = "   *";
    digit[7].unitLine[3] = "   *";
    digit[7].unitLine[4] = "   *";
    digit[7].unitLine[5] = "   *";
    digit[7].unitLine[6] = "   *";
    //8                           
    digit[8].unitLine[0] = "****";
    digit[8].unitLine[1] = "*  *";
    digit[8].unitLine[2] = "*  *";
    digit[8].unitLine[3] = "****";
    digit[8].unitLine[4] = "*  *";
    digit[8].unitLine[5] = "*  *";
    digit[8].unitLine[6] = "****";
    //9                           
    digit[9].unitLine[0] = "****";
    digit[9].unitLine[1] = "*  *";
    digit[9].unitLine[2] = "*  *";
    digit[9].unitLine[3] = "****";
    digit[9].unitLine[4] = "   *";
    digit[9].unitLine[5] = "   *";
    digit[9].unitLine[6] = "****";
}

int main(int argc, char** argv)
{
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    CONSOLE_SCREEN_BUFFER_INFO* posInfo = (CONSOLE_SCREEN_BUFFER_INFO*) malloc(sizeof(CONSOLE_SCREEN_BUFFER_INFO));
    char usrInput[USER_INPUT_MAX_LENGTH];

    InitDigit();
    GetConsoleScreenBufferInfo(hOut, posInfo);
    printf("请输入数字串(最大长度:%d):", posInfo->dwSize.X / 6);
    scanf("%s", usrInput);
    GetConsoleScreenBufferInfo(hOut, posInfo);
    pos = posInfo->dwCursorPosition;    //获取打印基点(当前光标位置)
    for (int i = 0; i< posInfo->dwSize.X / 6 ; i++)
    {
        if (strcmp(&usrInput[i], "") == 0)
        {
            break;
        }
        if ((usrInput[i] >= 48) && (usrInput[i] <= 57))    //只打印数字(0-9)
        {
            //横向打印。Y 坐标固定,X 坐标右移一列(数字宽度:4 + 间隔宽度:2)
            printfDigit(digit[usrInput[i] - 48], hOut, pos);
            pos.X += 6;
            SetConsoleCursorPosition (hOut, pos);
        }
    }
    pos.X = 0;
    pos.Y += 7;
    SetConsoleCursorPosition (hOut, pos);

    free(posInfo);
    if (argc > 1) system("pause");
    return 0;
}
2017-12-04 09:52
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
收藏
得分:1 
楼上的程序构思挺巧妙的。
2017-12-04 15:03
快速回复:求助,c语言一个打印数字的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039342 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved