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';
}