| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 975 人关注过本帖, 1 人收藏
标题:就送20分啊
取消只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏(1)
已结贴  问题点数:20 回复次数:10 
就送20分啊
程序代码:
#include <stdio.h>

int main()
{
    const int ch1[10]={0XD2BB,0XB6FE,0XC8FD,0XCBC4,0XCEE5,
                       0XC1F9,0XC6DF,0XB0CB,0XBEC5,0XCAAE};

    char ch2[3]={'\0','\0','\0'};
    for(int k=0;k<10;k++)
    {
        ch2[0]=ch1[k]>>8;
        ch2[1]=ch1[k];
        ch2[2]='\0';
        printf("%s",ch2);
    }
    printf("\n");
    return 0;
}

程序要求就是输出ch1这个字符串,如果有更好的代码 优先给分

[ 本帖最后由 wp231957 于 2012-11-10 11:59 编辑 ]
搜索更多相关主题的帖子: 20分 
2012-11-10 11:47
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
20分太少了吗  

DO IT YOURSELF !
2012-11-10 14:52
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用beyondyf在2012-11-10 14:55:47的发言:

20分不少,只是问题觉得没什么意思,你好像对大小端的概念还是不太理解。
#include  
int main()
{
    short int ch1[]={0XBBD2,0XFEB6,0XFDC8,0XC4CB,0XE5CE, 0XF9C1,0XDFC6,0XCBB0,0XC5BE,0XAECA, 0};
    char ch2[] = "一二三四五六七八九十";
    puts((char *)ch1);
    puts(ch2);
    return 0;
}
char ch2[] = "一二三四五六七八九十";
这个是我的程序需要输出的 而不能在事先给定

DO IT YOURSELF !
2012-11-10 15:01
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用beyondyf在2012-11-10 14:55:47的发言:

20分不少,只是问题觉得没什么意思,你好像对大小端的概念还是不太理解。
#include  
int main()
{
    short int ch1[]={0XBBD2,0XFEB6,0XFDC8,0XC4CB,0XE5CE, 0XF9C1,0XDFC6,0XCBB0,0XC5BE,0XAECA, 0};
    char ch2[] = "一二三四五六七八九十";
    puts((char *)ch1);
    puts(ch2);
    return 0;
}
对于大小端  却是不很清楚

DO IT YOURSELF !
2012-11-10 15:02
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用beyondyf在2012-11-10 15:12:05的发言:

只是想让你看看结果而已,我写的ch2和你代码里的ch2没有任何关系。
我这个代码段  也和预计目标相差甚远

#include <stdio.h>

int main()
{
    const int ch1[10]={0XD2BB,0XB6FE,0XC8FD,0XCBC4,0XCEE5,
                       0XC1F9,0XC6DF,0XB0CB,0XBEC5,0XCAAE};

    for(int k=0;k<10;k++)
    {
        printf("%s",(char*)ch1[k]);
    }
    printf("\n");
    return 0;
}

DO IT YOURSELF !
2012-11-10 15:27
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用小小战士在2012-11-10 16:49:45的发言:

你预计的目标是什么啊?要求得到怎样的结果?写出来啊
ch1中全是16进制数,要16位呢,想打印出字符就得截断成8位,就算截断成8位也未必打印的出来,只有0~127才能正常显示字符,这怎么搞啊?
你想实现怎么实现啊?编不出来把想法和目的说出来,大家也能很快给你说啊
我的程序代码是可以运行并能得到正确结果的

我只是想得到更优秀的代码而已

DO IT YOURSELF !
2012-11-10 17:40
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用beyondyf在2012-11-10 18:54:24的发言:

首先吧,楼主这段代码想试验个什么还真看不出来。就这么两行也谈不上什么更优秀。

给你演示一个相对实用好玩的功能吧,自己编译执行看看。也许这本就是你想要实现的东西。其实这个更适合用宽字符来做。
#include
 
char * chinese_number(int a, char * strcn)
{
    char * b = "个十百千万亿";
    char * c = "零一二三四五六七八九";
   
    int s[16] = {0}, n, i, t;
   
    for(n = 0; a; a /= 10) s[n++] = a % 10;
   
    for(i = 0, s[n] = 1; n--;)
    {
        if(s[n])
        {
            if(s[n + 1] == 0)
            {
                strcn = c[0];
                strcn = c[1];
            }
            strcn = c[s[n] * 2];
            strcn = c[s[n] * 2 + 1];
            if(t = n % 4)
            {
                strcn = b[t * 2];
                strcn = b[t * 2 + 1];
            }
        }
        if(n)
        {
            if(n % 8 == 0)
            {
                strcn = b[10];
                strcn = b[11];
            }
            else if(n % 4 == 0)
            {
                strcn = b[8];
                strcn = b[9];
            }
        }
    }
    strcn = '\0';
    if(!i)
    {
        strcn[0] = c[0];
        strcn[1] = c[1];
        strcn[2] = '\0';
    }
    return strcn;
}
 
int main()
{
    char s[128];
    int a;
    printf("Try to input a number : ");
    scanf("%d", &a);
    puts(chinese_number(a, s));
    return 0;
}
很好    这本是我下一步的目标  谢了

DO IT YOURSELF !
2012-11-11 06:22
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
beyondyf斑竹,我略改动了一下你的代码(无他,只为了更好的读懂你的代码)

现在输出都和改动前什么都不差  就是整个字符串前多了一个  

比如:12345=零一万二千三百四十五

多出这个 零  怎么查 也没弄明白

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

char * chinese_number(int a, char * strcn)
{
    char * b = "个十百千万亿";
    char * c = "零一二三四五六七八九";
  
    int s[16] = {0}, n, i, t;
    //另s[]保存了输入数字的每位元素
    //例:输入a=12345 则s[0..4]分别为5,4,3,2,1
    i=0;
    memset(s,0,sizeof(s));
    while(a)
    {
        s[i]=a % 10;
        a=a/10;
        i++;
    }
    n=i;
    i=0;
    while(1)
    {
         if(n==-1) break;
        n--;
        if(s[n]!=0)
        {
            if(s[n+1] == 0)
            {
                strcn[i++] = c[0];
                strcn[i++] = c[1];
            }
            strcn[i++] = c[s[n] * 2];
            strcn[i++] = c[s[n] * 2 + 1];
            if(t = n % 4)
            {
                strcn[i++] = b[t * 2];
                strcn[i++] = b[t * 2 + 1];
            }
        }
        if(n!=0)
        {
            if(n % 8 == 0)
            {
                strcn[i++] = b[10];
                strcn[i++] = b[11];
            }
            else if(n % 4 == 0)
            {
                strcn[i++] = b[8];
                strcn[i++] = b[9];
            }
        }
    }
    strcn[i] = '\0';
    if(i==0)
    {
        strcn[0] = c[0];
        strcn[1] = c[1];
        strcn[2] = '\0';
    }
    return strcn;
}


int main()
{
    char s[128];
    int a;
    printf("Try to input a number : ");
    scanf("%d", &a);
    puts(chinese_number(a, s));
    return 0;
}

DO IT YOURSELF !
2012-11-11 14:07
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用beyondyf在2012-11-11 15:04:42的发言:

呵呵,老哥想怎么改都没关系,只要对你有帮助就好。

相比我以往的风格,这段代码我写的其实很松散了

但有一点是没变的,我的代码里除了空格没有多余的东西。每个语句都有它存在的必要性。

请注意这一句for(i = 0, s[n] = 1; n--;)

在你的改动中删掉了 s[n] = 1 这部分。现在你感觉到它是做什么用的了么?

其实如果理解了下面我是怎么处理零的输出的,也就理解为什么要对s[n]赋一个值了。不一定非得是1,随便一个非零值即可。
ok了   其实我就是没发现s[n]=1有啥用  所以就删了

DO IT YOURSELF !
2012-11-11 15:06
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
因为我c代码不是很熟悉
所以相对于    if(s[n])  我就看着不如  if(s[n]!=0)熟悉

DO IT YOURSELF !
2012-11-11 15:09
快速回复:就送20分啊
数据加载中...
 
   



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

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