编写c语言程序拆分输入实数的整数部分与小数部分,用指针数组做,大神帮忙啊

编写c语言程序拆分输入实数的整数部分与小数部分,用指针数组做

第1个回答  推荐于2017-10-15
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int SplitRealNumber(double RealNumber, int *RealPart, int *DecimalPart)
{
char RealNum[100] = {0};
char *rr[100];
int RealNumLength = 0;
int i = 0;
char *Tmp1;
char *Tmp2;
char tt[2] = {0, 0};
for (i = 0; i < 100; i++)
{
rr[i] = &RealNum[i];
}
sprintf(RealNum, "%lf", RealNumber);
RealNumLength = strlen(RealNum);

for (i = 0; i < RealNumLength; i++)
{
tt[0] = *rr[i];
tt[1] = '\0';
if (0 == strcmp(tt, "."))
{
printf("strcmp ok, i = %d \n", i);
break;
}
//printf("RealNum[%d] = %c \n", i, RealNum[i]);
}

Tmp1 = rr[0];
*RealPart = atoi(Tmp1);

if (i < (RealNumLength - 1))
{
Tmp2 = rr[i + 1];
printf("Tmp2 = %s \n", Tmp2);
*DecimalPart = atoi(Tmp2);
printf("DecimalPart= %d \n", *DecimalPart);
}
else if(i == (RealNumLength - 1))
{
printf("RealNumber err \n");
}
else
{
*DecimalPart = 0;
printf("DecimalPart == 0 \n");
}
return 0;
}
void main()
{
double a = 103.012345;
int res;
int realPart, decimalPart;

printf("a = %lf \n", a);
res = SplitRealNumber(a, &realPart, &decimalPart);
printf("res = %d \n", res);
printf("realPart = %d \n", realPart);
printf("decimalPart = %d \n", decimalPart);
printf("\n");
a = -123.978912;
printf("a = %lf \n", a);
res = SplitRealNumber(a, &realPart, &decimalPart);
printf("res = %d \n", res);
printf("realPart = %d \n", realPart);
printf("decimalPart = %d \n", decimalPart);
printf("\n");
a = 1.2;
printf("a = %lf \n", a);
res = SplitRealNumber(a, &realPart, &decimalPart);
printf("res = %d \n", res);
printf("realPart = %d \n", realPart);
printf("decimalPart = %d \n", decimalPart);
printf("\n");
a = -1.1;
printf("a = %lf \n", a);
res = SplitRealNumber(a, &realPart, &decimalPart);
printf("res = %d \n", res);
printf("realPart = %d \n", realPart);
printf("decimalPart = %d \n", decimalPart);
printf("\n");
a = 1;
printf("a = %lf \n", a);
res = SplitRealNumber(a, &realPart, &decimalPart);
printf("res = %d \n", res);
printf("realPart = %d \n", realPart);
printf("decimalPart = %d \n", decimalPart);

}

在我的VC上,%lf存的数据要小数点后6位,导致小数部分的值后面可能有一串0,好烦。。。你随便看下吧,哎。本回答被提问者采纳
相似回答