你的數(shù)據(jù)類型有問(wèn)題,定義double的話輸入時(shí)應(yīng)該用%lf,用%f的話在存儲(chǔ)數(shù)據(jù)時(shí)會(huì)出問(wèn)題導(dǎo)致a中不是輸入的數(shù)
成都創(chuàng)新互聯(lián)公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目做網(wǎng)站、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元新和做網(wǎng)站,已為上家服務(wù),為新和各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
思路:函數(shù)傳入?yún)?shù)n,接著for循環(huán)從1到n依次就倒數(shù)累加和。
參考代碼:
#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;
}
/*
運(yùn)行結(jié)果:
5
2.28
*/
先問(wèn)一下,你想求的是相乘等于一的倒數(shù),還是將排列順序反過(guò)來(lái)的倒數(shù)
我做了個(gè)輸入一個(gè)數(shù)的?:但轉(zhuǎn)換為數(shù)字??不考慮轉(zhuǎn)換成字符(也就是有這樣的缺陷?輸入1000??則轉(zhuǎn)換后只是1不會(huì)是0001)
你要是輸入多個(gè)數(shù)采用上面的朋友寫(xiě)的
程序不是很好?要是輸入的不是?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("輸入一個(gè)整數(shù):\n");
scanf("%d",a);
b=fun(a);
printf("輸入前:?%d??輸出之后:?%d\n",a,b);
printf("是否在轉(zhuǎn)換回來(lái)?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)//取出小數(shù)后n位{x=x*10;//更新x值,把小數(shù)點(diǎn)后第一位放在個(gè)位上printf("%d\n",(int)x%10);//int強(qiáng)制把double轉(zhuǎn)換成int,因?yàn)榍笥啾仨殲閕nt類型,//而%10求余,是求個(gè)位上的數(shù)字i--;}