| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2341 人关注过本帖
标题:如和用代码展示一个“火”字?
只看楼主 加入收藏
低调低调
Rank: 3Rank: 3
来 自:四川省成都市
等 级:论坛游侠
威 望:1
帖 子:66
专家分:103
注 册:2016-6-23
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:13 
如和用代码展示一个“火”字?
给位大大给我点思路吧,这次真的遇见麻烦了。
要求:
用“*”展示一个“火”字的图案,这个图案的高度需要客户人员手动输入。

麻烦给位大大给我点思路,这个问题我考虑两个多小时了,结果还是没有思路!请给位大大帮我解决下!
2016-07-04 14:39
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:5 
#include <stdio.h>  
#include <stdlib.h>  
  
int main(void)  
{  
    long int offset;  
    unsigned char code[2] = {0};  
    unsigned char buffer[32];       //存储一个汉字所用的32个字节  
    unsigned char i,j;  
    FILE *fp = NULL;  
  
    puts("请输入一个汉字:");  
    gets((char*)code);  
    printf("区码:%d 位码:%d\n", code[0], code[1]);      //显示区位码  
    offset = ((code[0] - 0xa1) * 94 + code[1] - 0xa1) * 32;     //计算绝对偏移地址  
    printf("偏移值为: %ld\n", offset);  
  
    fp = fopen("hzk16.dat", "rb");  //二进制只读方式打开,261KB  
    if (fp == NULL )                //如果打开失败  
    {  
        printf("打开字库失败\n");  
        return 0;  
    }  
  
    fseek(fp,offset,0);             //根据偏移寻找到该字字模的第一个字节  
    for (i = 0; i < 32; ++i) {       //连续读取32个字节  
        buffer[i] = fgetc(fp);  
    }  
  
    for (i = 0; i < 32; ++i) {       //将32个字节顺序打印  
        for (j = 0; j < 8; ++j) {  
            if (buffer[i] & 0x80) {  
                printf("**");  
            }else{  
                printf("  ");  
            }  
            buffer[i] <<= 1;  
        }  
        if (i % 2) {  
            printf("\n");           //如果i%2==1说明该字节是靠后的那个字节,显示完后要换行  
        }  
    }  
  
    return EXIT_SUCCESS;  
}  

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-07-04 14:43
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:0 
用点阵

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-07-04 14:44
低调低调
Rank: 3Rank: 3
来 自:四川省成都市
等 级:论坛游侠
威 望:1
帖 子:66
专家分:103
注 册:2016-6-23
收藏
得分:0 
回复 3楼 zhulei1978
点阵?可是我不会这个东西呢?怎么破?
2016-07-04 14:58
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:5 
问题是:高度需要客户人员手动输入。
点阵字库是相对固定的吧?
2016-07-04 15:02
低调低调
Rank: 3Rank: 3
来 自:四川省成都市
等 级:论坛游侠
威 望:1
帖 子:66
专家分:103
注 册:2016-6-23
收藏
得分:0 
大大些  只要能输出一个用“*”表示的火字都可以  谁给我点提示啊!
我全部用扣的扣出来了一个这样的
     *
     *
   * * *
   * * *
     *
    * *
   *   *
  *     *
这个是用if判断输入空格和“*”来做的  但是老师们说这个是错的,然后我就不知道该怎么办了!求解
2016-07-04 16:24
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:0 
要客户手动输入高度的就麻烦了
要用矢量汉字,自动缩放的。形定义的汉字,使用直线和圆弧作文为基本笔画。

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-07-04 16:58
低调低调
Rank: 3Rank: 3
来 自:四川省成都市
等 级:论坛游侠
威 望:1
帖 子:66
专家分:103
注 册:2016-6-23
收藏
得分:0 
回复 7楼 zhulei1978
大大 能不能帮忙想想怎么写简便点呢?麻烦给我出个主意好吗?
2016-07-04 17:23
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
“自绘”,这样可以吗?
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
#include <stdio.h>

main()
{
    int h;
    printf("字高:");
    scanf("%d", &h);
    if (h < 8) return 0;
    for (int i=1; i<=h/4; i++)
    {
        printf("%*c\n", h/2,'*');
    }
    for (int i=1; i<=h/4; i++)
    {
        printf("%*c%*c%*c\n", i,'*', h/2-i,'*', h/2-i,'*');    
    }
    printf("%*c\n", h/2,'*');
    for (int i=h/2-1; i>0; i--)
    {
        printf("%*c%*c\n", i,'*', h-i*2,'*');    
    }
}
2016-07-04 20:33
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:0 
用点阵吧,UCDOS有4个字体库HZK16,HZK24,HZK40,HZK48,让用户输入的高度限定在16,24,40,48这四个数内,应该可以应付你的老师

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-07-04 20:46
快速回复:如和用代码展示一个“火”字?
数据加载中...
 
   



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

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