解题思路
这个是我做这道题的思路,希望对你们有帮助。注意:这个代码不是题目的答案!!!!!!!!!
#include<stdio.h>
//char a[1001]={'\0'}; //(1) 有(1)无(2),有(2)无(1)!!!!!!
/*int main()
{
char a[499]={'\0'}; //(2) 数组最大申请为499个空间,大于499时会出现乱码,但是定义成全局变量不会出现该问题。
int x,y,i,n,w,k,l;
while(1)
{
scanf("%d%d",&x,&y);
sprintf(a,"%d",x/y); //将整数部分先打印进数组中。
w=strlen(a);
a[w]='.'; //打印小数点。
for(i=w+1;i<499;i++)
{
k=x%y*10; //竖式除法计算原理。
a[i]=(char)(k/y)+'0'; //将结果继续打印进数组中
x=k%y;
if(x==0)
break;
}
puts(a); //打印最终结果。
printf("\n");
for(i=0;i<=strlen(a);i++) //清空数组,方便下次计算(我笨,只会这种数组清空<QwQ>)
a[i]='\0';
}
return 0;
}*/
注意事项:
参考代码:
//这个才是答案!!!!!
#include<stdio.h>
char c[10001]={'\0'}; //--注意这里要定义成全局变量,因为申请的空间有些大,定义成局部变量有概率最终结果会出现乱码。
int main()
{
int i,a,b,k;
long n;
c[0]='.'; //----因为要求的是小数部分,所以整数部分省略,直接打印小数点。
scanf("%d%d%ld",&a,&b,&n);
for(i=1;i<=n;i++)
{
k=a%b; //------求余,并将余数赋值给k。
c[i]=(char)(10*k/b)+'0'; //利用竖式计算的原理,求出结果并储存到数组中
a=10*k%b; //竖式计算原理,可以随便在纸上写一个除法来辅助理解
}
printf("%c",c[n]); // 直接打印最终结果。
return 0;
}
0.0分
4 人评分