1.前n项求和
f(n)=1+1/2+1/3+1/4+……+1/n
int main()
{
int n;
scanf("%d",&n);
int i;
double sum=0.0;
for(i=1;i<=n;i++){
sum+=1.0/i;
}
printf("f(%d)=%f\n",n,sum);
return 0;
}
2.f(n)=1-1/2+1/3-1/4+……+1/n
int main()
{
int n;
scanf("%d",&n);
int i;
double sum=0.0;
int sign=1;//为了实现加1减1 也可以直接double sign=1.0;,下方就可以直接sum+=sign/i;
for(i=1;i<=n;i++){
sum+=sign*1.0/i;
sign=-sign;
}
printf("f(%d)=%f\n",n,sum);
return 0;
}
3.正序分解整数
输入一个非负整数,正序输出它的每一位数字
输入:13425
输出:1 3 4 2 5
int main()
{
//方案一:先逆序再逆序的方案,只适用于末尾没有0的数字
int x;
scanf("%d",&x);
int t=0;
do{//整数逆序
int d=x%10;
t=t*10+d;
x/=10;
}while(x>0);
printf("x=%d,t=%d\n",x,t);//输出观察逆序是否正确,,此时x值为0,如果不是0的话出不来循环
x=t;//要想让x参与循环的话,把t的值赋给x
do{//逆序输出每一位数字
int d=x%10;
printf("%d",d);
if(x>=10){//解决末尾空格,要在非最后一步输出空格
printf(" ");
}
x/=10;
}while(x>0);
printf("\n");
return 0;
}
int main()
{
//方案二:
//推导x=13425
//13425/10000->1 //
//13425%10000->3425
//10000/10->1000
//3425/1000->3 //
//3425%1000->425
//1000/10->100
//425/100->4 //
//425%100->25
//100/10->10
//25/10->2 //
//25%10->5
//10/10->1
//5/1->5 //
//5%1->0
//0/10->0
int x;
scanf("%d",&x);
//int mask=10000;此句要修改,利用判断数字位数的程序修改,让程序根据输入的x来计算得到这个mask
int mask=1;
int t=x;
while(t>9){
//得出一个数字位数的循环
t/=10;
mask*=10;
}
printf("x=%d,mask=%d\n",x,mask);//此句用来显示,判断cnt是否正确
//int mask=pow(10,cnt-1);//C中的一个函数,可以用10的(cnt-1)次幂算出mask
do{
int d=x/mask;
printf("%d",d);
if(mask>9){
printf(" ");
}
x%=mask;
mask/=10;
//printf("x=%d,mask=%d,d=%d\n",x,mask,d);//这句是为了观察程序
}while(mask>0);
return 0;
}