c语言题目:输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。例如a=1,b=6,c=4时应输出0.1667 10
#include<stdio.h>intmain(){inta,b,c,i,z,s;scanf("%d%d%d",&a,&b,&c);s=a%b;printf("%d."...
#include<stdio.h>
int main(){
int a,b,c,i,z,s;
scanf("%d%d%d",&a,&b,&c);
s=a%b;
printf("%d.",a/b);
for(i=1;i<=c;i++)
if(i==c){
s*=10;
z=s/b;
s=s%b*10;
if(s/b>=5)
printf("%d",z+1); else
printf("%d",z);
}
else{
s *= 10;
printf("%d",s/b);
s=s%b;
}
return 0;
} 展开
int main(){
int a,b,c,i,z,s;
scanf("%d%d%d",&a,&b,&c);
s=a%b;
printf("%d.",a/b);
for(i=1;i<=c;i++)
if(i==c){
s*=10;
z=s/b;
s=s%b*10;
if(s/b>=5)
printf("%d",z+1); else
printf("%d",z);
}
else{
s *= 10;
printf("%d",s/b);
s=s%b;
}
return 0;
} 展开
7个回答
展开全部
你没有必要那样做的,直接这样就可以了。如。
c=8;
double pp=a/b;
if ( (pp*1000000000%10) > 4)//判断小数点后第9位是否大于4,大于4就要进位
pp+=0.00000001;
printf("结果是%0.8f",pp); //输出结果,自动只输出到小数点后8位。
c=8;
double pp=a/b;
if ( (pp*1000000000%10) > 4)//判断小数点后第9位是否大于4,大于4就要进位
pp+=0.00000001;
printf("结果是%0.8f",pp); //输出结果,自动只输出到小数点后8位。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
void main()
{
int a,b,c,i,x;
float n;
scanf("%d%d%d",&a,&b,&c);
printf("0.");
n=a/float(b);
for(i=0;i<c-1;i++)
{
x=n*10;
x%=10;
n*=10;
printf("%d",x);
}
x=n*100;
x%=10;
if(x+5>=10)
printf("%d",x+1);
else
printf("%d",x);
printf("\n");
}
void main()
{
int a,b,c,i,x;
float n;
scanf("%d%d%d",&a,&b,&c);
printf("0.");
n=a/float(b);
for(i=0;i<c-1;i++)
{
x=n*10;
x%=10;
n*=10;
printf("%d",x);
}
x=n*100;
x%=10;
if(x+5>=10)
printf("%d",x+1);
else
printf("%d",x);
printf("\n");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-12-10
展开全部
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a=17728,b=23922,c=99,c1;
cin>>a>>b>>c;
int iz,iy;
int store[102]={0};
iz=a/b;
iy=a%b;
for(int i=1;i<=c+1;i++)
{
iy*=10;
if(iy>b)
{
store[i]=iy/b;
iy=iy%b;
continue;
}
else
{
store[i]=0;
}
}
//处理四舍五入
c1=c;
if(store[c1+1]>=5)
{
store[c1]+=1;
while(1)
{
if(store[c1]/10==1)
{
if(c1==1)
iz+=1;
store[c1]=0;
c1--;
store[c1]=store[c1]+1;
continue;
}
else break;
}
}
//输出控制
cout<<iz<<'.';
for(int i=1;i<=c;i++)
{
cout<<store[i];
}
cout<<endl<<(double)a/b<<endl;
cout<<(double)clock()/CLOCKS_PER_SEC;
system("pause");
}
#include<iomanip>
using namespace std;
int main()
{
int a=17728,b=23922,c=99,c1;
cin>>a>>b>>c;
int iz,iy;
int store[102]={0};
iz=a/b;
iy=a%b;
for(int i=1;i<=c+1;i++)
{
iy*=10;
if(iy>b)
{
store[i]=iy/b;
iy=iy%b;
continue;
}
else
{
store[i]=0;
}
}
//处理四舍五入
c1=c;
if(store[c1+1]>=5)
{
store[c1]+=1;
while(1)
{
if(store[c1]/10==1)
{
if(c1==1)
iz+=1;
store[c1]=0;
c1--;
store[c1]=store[c1]+1;
continue;
}
else break;
}
}
//输出控制
cout<<iz<<'.';
for(int i=1;i<=c;i++)
{
cout<<store[i];
}
cout<<endl<<(double)a/b<<endl;
cout<<(double)clock()/CLOCKS_PER_SEC;
system("pause");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不用这么麻烦的,a/b前转换成double型
#include<stdio.h>
int main(){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
char str[81]="PI=%10.00f\n";
printf("输入 a,b,c:\n");
scanf("%d%d%d",&a,&b,&c);
str[7]='0'+c/10;
str[8]='0'+c%10;
printf(str,(double)a/(double)b);
return 0;
}
#include<stdio.h>
int main(){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
char str[81]="PI=%10.00f\n";
printf("输入 a,b,c:\n");
scanf("%d%d%d",&a,&b,&c);
str[7]='0'+c/10;
str[8]='0'+c%10;
printf(str,(double)a/(double)b);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询