按楼主的问题C可能会比较大 如 20 50 100
printf()就达不到要求了 其实应该是它的输出数据的类型吧 double ,long double ,long long ....... double?
按楼主的思路 先存储 整数 和 c+1位小数部分 在四舍五入并进位处理
程序代码:
#include<stdio.h>
#define MAX 1000
int main(void)
{
int a,b,c,i,yushu;
int m; // 整数部分
int jw; // 进位
int arr[MAX]; // 小数部分
scanf("%d %d %d",&a,&b,&c);
//printf("%d.",a/b);
m = a/b;
yushu=a%b;
for(i=0;i<=c;i++)
//for(i=1;i<=c;i++)
{
yushu=yushu*10;
//printf("%d",yushu/b);
arr[i] = yushu/b;
yushu=yushu%b;
}
jw = arr[c]/5; // 第C+1位小数 四舍五入
for(i=c-1;i>=0;i--) //进位处理
{
arr[i] += jw;
if( jw=arr[i]/10 )
arr[i] %= 10;
// arr[i] = 0; // 一样?
else
break;
}
printf("%d.", m+jw);
for(i=0;i<c;i++)
printf("%d",arr[i]);
printf("\n");
return 0;
}