你的数据类型有问题,定义double的话输入时应该用%lf,用%f的话在存储数据时会出问题导致a中不是输入的数
成都创新互联公司2013年成立,是专业互联网技术服务公司,拥有项目做网站、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元新和做网站,已为上家服务,为新和各地企业和个人服务,联系电话:028-86922220
思路:函数传入参数n,接着for循环从1到n依次就倒数累加和。
参考代码:
#include "stdio.h"
double fun(int n){
double sum=0;
int i;
for(i=1;i=n;i++)
sum+=1.0/i;
return sum;
}
int main()
{
int n;
scanf("%d",n);
printf("%.2lf",fun(n));
return 0;
}
/*
运行结果:
5
2.28
*/
先问一下,你想求的是相乘等于一的倒数,还是将排列顺序反过来的倒数
我做了个输入一个数的 :但转换为数字 不考虑转换成字符(也就是有这样的缺陷 输入1000 则转换后只是1不会是0001)
你要是输入多个数采用上面的朋友写的
程序不是很好 要是输入的不是 int类型就不成了
/* Note:Your choice is C IDE */
#include "stdio.h"
int lfun(int a)
{int i=1,s=1;
if(a)
for(i;ia;i++)
s=s*10;
return s;
}
int fun(int a)
{ int i=1,j=10,swap=0,s=0;
if(a0)
while(1)
{
if(a%j!=a)
{
s++;
j=j*10;
}
else
{s++;
break;
}
}
for(i;i=s;i++)
{
j=j/10;
swap=swap+a/j*lfun(i);
a=a%j;
}
return swap;
}
void main()
{
char ch;
int a,b;
printf("输入一个整数:\n");
scanf("%d",a);
b=fun(a);
printf("输入前: %d 输出之后: %d\n",a,b);
printf("是否在转换回来?Y/N\n");
getchar();
ch=getchar();
if(ch=='y'||ch=='Y')printf("还原: %d\n",a);
system("pause");
return 0;
}
intn=5;doublex=3.141592654;while(n0)//取出小数后n位{x=x*10;//更新x值,把小数点后第一位放在个位上printf("%d\n",(int)x%10);//int强制把double转换成int,因为求余必须为int类型,//而%10求余,是求个位上的数字i--;}