criedjoker 2015-08-04 05:08 采纳率: 80%
浏览 1694
已采纳

c语言代码测试,能编译代码的来看看

谁能帮我运行一下以下代码,并把运行结果发给我下。
代码如下:
#include stdio.h
#include string.h
#include math.h
#include stdarg.h

char *to_string(int count,double first,...);
void integer_to_string(char integer_string[],size_t leng,int i);
void decimal_to_string(char decimal_string[],size_t leng,double n);

int main(void)
{
printf("%s",to_string(4,1.23,2.56,3.82,0.00));//测试函数功能
return 0;
}

/*把数字整数部分转换为字符串的函数*/
void integer_to_string(char integer_string[],size_t leng,int in)
{
int digit=0;//用来计数数字整数部分的位数
char num[]={'0','1','2','3','4','5','6','7','8','9'};//各个位数上的字符串

while(true)
{
if(!(in/(int)pow(10,digit)))
break;
else
digit++;
}//统计输入整数的位数

int a=digit;
if(in>=0)
{
for(int i=0;i<digit;++i)
{
integer_string[i]=num[in/(int)pow(10,--a)];
in=in-in/(int)pow(10,a)*(int)pow(10,a);
}
integer_string[digit+1]='\0';
}
else
{
integer_string[0]='-';
in=(-in);
for(int i=1;i<digit+1;++i)
{
integer_string[i]=num[in/(int)pow(10,--a)];
in=in-in/(int)pow(10,a)*(int)pow(10,a);
}
integer_string[digit+2]='\0';
}//把整数转化为字符串
}

/*把数字小数部分转化为字符串的函数*/
void decimal_to_string(char decimal_string[],size_t leng,double n)
{
int I=0;//中间变量
char num[]={'0','1','2','3','4','5','6','7','8','9'};//各个位数上的字符串

 /*把数字小数部分转换为字符串*/
decimal_string[0]='.';
I=n*10;
decimal_string[1]=num[I];
n=n*10-I;
I=n*10;
decimal_string[2]=num[I];
decimal_string[3]='\0';

}

char* to_string(int count,double first,...)
{
va_list parg;//可变数量变元函数必须变量
char number_string[100]={0};//存储数字转化的字符串
char integer[20]={0};//储存数字整数部分转换字符串的中间数组
char decimal[4]={0};//储存数字小数部分转换字符串的中间数组
int integer_part=(int)first;//数字整数部分
double decimal_part=first-integer_part;//数字小数部分
const char comma[]={','};//逗号字符
double value=0.0;//中间变量

/*初始化字符串数组*/
integer_to_string(integer,20,integer_part);

decimal_to_string(decimal,4,decimal_part);
strcpy(number_string,integer);
strcat(number_string,decimal);

/*把数字转换为字符串*/
va_start(parg,first);
while((value=va_arg(parg,double))!=0.0)
{
    integer_part=(int)value;
    decimal_part=value-integer_part;
    char integer[20]={0};
    char decimal[4]={0};
    strcat(number_string,comma);
    integer_to_string(integer,20,integer_part);
    decimal_to_string(decimal,4,decimal_part);
    strcat(number_string,integer);
    printf("%s\n",number_string);
    strcat(number_string,decimal);
}
va_end(parg);

return number_string;//返回字符串

}

  • 写回答

4条回答 默认 最新

  • 马小李 2015-08-04 07:00
    关注

    运行有乱码,直接复制的结果如下:
    1.22,霶?呺?2
    1.22,霶?呺?2.56,<
    祝p=?3
    1.22,霶?呺?2.56,<
    祝p=?请按任意键继续. . .

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)