| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1008 人关注过本帖
标题:百分征集简洁写法:
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏
已结贴  问题点数:100 回复次数:7 
百分征集简洁写法:
  posa  posb 为int类型  
    ap p 为 char* 类型

程序代码:
if(posa>=posb)
    {
        ap+=(int)strlen(ap);
        while(posb<posa)
        {
            *ap='0';
            ap++;
            posb++;
        }
        *ap='\0';
    }
    if(posb>=posa)
    {
        p+=(int)strlen(p);
        while(posa<posb)
        {
            *p='0';
            p++;
            posa++;
        }
        *p='\0';
    }
2016-01-13 10:54
demon90s
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:44
专家分:121
注 册:2016-1-3
收藏
得分:34 
    char *q = posa >= posb ? ap : p;
    int n = abs(posa - posb), i;

    q += strlen(q);

    for (i = 0; i < n; i++)
        *q++ = '0';
    *q = '\0';
2016-01-13 11:22
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:34 
void f(char *p,int &a,int b)
{
  p+=strlen(p);
  while(a++<b)*(p++)='0';
  *p='\0';
}
.
.
.
if(posa>=posb)f(ap,&posb,posa);
if(posb>=posa)f(p,&posa,posb);    //代码未验证,不过这个逻辑有点不可理喻,最终p指向的字符串总会比ap指向的字符串长,按道理不应该判断=的

[此贴子已经被作者于2016-1-13 11:25编辑过]


能编个毛线衣吗?
2016-01-13 11:22
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 3楼 wmf2014
我只不过想把2个字符串的长度补齐而已

DO IT YOURSELF !
2016-01-13 11:27
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:34 
posta、postb与ap、p有什么对应关系?对于字符串,后面用'\0'补齐有什么意义?万哥最好把完整的函数贴上来,凭这段代码来猜难免误解。

重剑无锋,大巧不工
2016-01-13 12:02
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 5楼 beyondyf
我想计算(比如):
123.456+1225842558612122.55882258542

这个小数点对齐时  不涉及到补0的问题吗

DO IT YOURSELF !
2016-01-13 13:03
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
//红色部分是对齐部分
#include<stdio.h>
void align(char *p1,char *p2)
{
    char *p=NULL;
    int i;
    for(;*p1!='.'&&*p1;p1++);
    for(;*p2!='.'&&*p2;p2++);
    if(!(*p1||*p2)) return;    //如果两个数都不是小数则无需对齐
    if(!p1[0])
    {
        p1[0]='.';
        p1[1]=0;   //如果不是小数则自动补小数点
    }
    if(!p2[0])
    {
        p2[0]='.';
        p2[1]=0;  //如果不是小数则自动补小数点
    }
    for(i=0;p1[i]||p2[i];i++)
    {
        if(!p1[i])p=p1+i;
        if(!p2[i])p=p2+i;
        if(p!=NULL)
        {
            *(p++)='0';  //填充‘0’对齐
            *p=0;
        }
    }

}
void main()
{
    char a[100],b[100];
    int i;
    for(i=0;i<3;i++)
    {//演示3种不同类型的数
    gets(a);
    gets(b);
    align(a,b);
    printf("小数点对齐效果\n");
    printf("%20s\n",a);
    printf("%20s\n",b);
    }
}



[此贴子已经被作者于2016-1-13 14:31编辑过]


能编个毛线衣吗?
2016-01-13 13:53
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
运行效果图
图片附件: 游客没有浏览图片的权限,请 登录注册

能编个毛线衣吗?
2016-01-13 14:31
快速回复:百分征集简洁写法:
数据加载中...
 
   



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

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