| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 330 人关注过本帖
标题:C语言数据重载函数程纠错
只看楼主 加入收藏
雪天
Rank: 1
等 级:新手上路
帖 子:18
专家分:5
注 册:2009-7-23
结帖率:40%
收藏
已结贴  问题点数:20 回复次数:1 
C语言数据重载函数程纠错
题:
设计数据赋值重载函数strcpy(s,n),将数字型数据(单精度数、双精度数)n转换成字符串后赋给字符串变量s。

我的程序问题所在:
单精度数和双精度数状态又遇到问题了。。。。
单精度数下输出结果有点不太满意;双精度数下程序运行不起来,程序自动关闭;
请各位高手帮忙看一看下面的程序错误在哪里?万分感谢!float和double状态按理说应该很类似的程序代码啊,怎么运行的时候却无法进行呢?

#include"stdio.h"
void main()
{
    char n,s[1000];
    float n4;
    double n5;
    void strcpy_4(char s[],float n4);
    void strcpy_5(char s[],double n5);
    printf("请选择您要处理的数据类型:\nD.单精度数 E.双精度数 \n");
    scanf("%c",&n);
    printf("输入数据:");
    switch(n)
    {
    case'D':scanf("%f",&n4);
        strcpy_4(s,n4);
        printf("%s",s);break;
    case'E':scanf("%f",&n5);
        strcpy_5(s,n5);
        printf("%s",s);break;
    }
}
void strcpy_4(char s[],float n4)
{
    char *p=s;
    int n4_z,s1[1000],i,j;
    float n4_x;
    n4_z=(int)n4;     /*n4_z是n4的整数部分,n4_x是n4的小数部分*/
    i=0;
    do
    {
        s1[i]=n4_z%10+48;
        n4_z/=10;
        i++;
    }while(n4_z!=0);
    for(j=i-1;j>=0;j--)
    {
        *p=(char)s1[j];
        p++;
    }
    *p='.';
    p++;
    n4_z=(int)n4;
    n4_x=n4-n4_z;
    i=0;
    do
    {
        s1[i]=(int)(10*n4_x)+48;
        n4_x=10*n4_x-(int)(10*n4_x);
        i++;
    }while(n4_x!=0);
    for(j=0;j<i;j++)
    {
        *p=(char)s1[j];
        p++;
    }
    *p='\0';
}
void strcpy_5(char s[],double n5)
{
    char *p=s;
    int n5_z,s1[1000],i,j;
    double n5_x;
    n5_z=(int)n5;
    i=0;
    do
    {
        s1[i]=n5_z%10+48;
        n5_z/=10;
        i++;
    }while(n5_z!=0);
    for(j=i-1;j>=0;j--)
    {
        *p=(char)s1[j];
        p++;
    }
    *p='.';
    p++;
    n5_z=(int)n5;
    n5_x=n5-n5_z;
    i=0;
    do
    {
        s1[i]=(int)(10*n5_x)+48;
        n5_x=10*n5_x-(int)(10*n5_x);
        i++;
    }while(n5_x!=0);
    for(j=0;j<i;j++)
    {
        *p=(char)s1[j];
        p++;
    }
    *p='\0';
}
搜索更多相关主题的帖子: 数据重载函数 
2009-07-23 18:19
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:20 
试试sprintf

char str[1000];
char aa[] = "字符串";
double bb = 1.f;
sprintf(str, "%s%lf", aa, bb);

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2009-07-23 19:54
快速回复:C语言数据重载函数程纠错
数据加载中...
 
   



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

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