C++练习题

1.计算1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100的值
#include<stdio.h>
int main()
{
 int m=1;
 double sum=0.0;
 for(m=1;m<=100;m++)
 {
  if(m%2==0)
  {
   sum=(double)-1/m+sum;//奇数项求和
  }
  else
   sum=(double)1/m+sum;//偶数项求和
 }
 printf("%f\n",sum);
 return;
}
2.
include<stdio.h>
int main()
{
 int i=1,count=0;
 for(i=1;i<=100;i++)
 {
 if((i%10==9)&&(i/10!=9))//只有个位上数字为9
    
 {
  count++;
 }
 else
 if((i%10==9)&&(i/10==9))//十位和各位数字均为9
 {
 count=count+2;
 }
 }
printf("9的个数是:%d\n",count);
return 0;
}                                    
 3.自己编写一遍折半查找>
#include<stdio.h>
int main()
{
 int a[8]={1,2,3,5,6,7,8,9}; //自定义一个数组
 int left=0,i=0,right=7;
 int mid,n;
 for(;i<8;i++)
  printf("%2d",a[i]);
 printf("\n请输入要查中的数:\n");
 scanf("%d",&n);
 while(left<=right)//进行折半查找
 {
  for(i=0;i<8;i++)
  {
   mid=(left+right)/2;
   if(n<a[mid])
   {
    right=mid-1;
   }
   else
   {
    if(n==a[mid])
     break;
    else
     left=mid+1;
   }
  }
  printf("这个数是数组中第%d个数\n",mid); 
  return 0;
 }
}
 
4.编写一个函数,它从一个字符串中提取一个子字符串。函数原型如下目标是:从数组起始位置向后偏移
 #include<stdio.h>
#include<string.h>
int substr(char dst[], char src[],int start, int len);
int main()
{
 char dst[]={"abc"}; 
 char src[]={"defghijklm"};
 int start=3;
 int len=3;
 substr(dst,src,start,len);
 return 0;
}
 int substr(char dst[], char src[],int start, int len)
 {
  int i=0;
  char *s=src;
  char *d=dst;
  for(i=0;i<6;i++)    //偏移start位置后对数组各元素重新赋值
  {
   src[i]=src[start];   
   start++;
  }
  int j=0;
  src[len]='\0';    //复制小标为len之前的字符
  strcpy(dst,src);
  printf("%s\n",dst);
 return 0;
 5.有一个分数序列2/1+3/2+5/3+8/5+13/8求出这个数列前20项的和
#include<stdio.h>
void main()
{
 int a=1,i=1,b=2;
 double sum=0.00;
 int temp;
 for(i=1;i<=20;i++)
 {
   sum=sum+(double)b/a; 
   temp=a;
   a=b;
   b=a+temp;;
 }
 printf("%lf\n",sum);
}
6.一个球从100米高的自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求第次落地时,共经过多少米,第次反弹多高
 #include<stdio.h>
void main()
{
 float h=100.0,l=0,h1=0;  //h为每次弹跳之后的高度,l为经过的距离,h1为弹跳的高度
 int i=1;
 for(i=1;i<11;i++)
 {
  l=l+h;
  h1=h/2;
  l=l+h1;
  h=h/2;
 }
 printf("总共经过%f米\n第10次反弹%f米\n",l,h1);
}
7.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,好不过瘾,又多吃了一个。第二天早上又吃了剩下的桃子的一半,又多吃了一个。以后每天都吃了前一天剩下的一半零一个,到第天早上想再吃的时候,就剩下一个桃子。求第一天共摘多少个桃子。
 #include<stdio.h>
int main()
{
 int x,i=1;      //x为共摘得的桃子数
 int temp=1;    //第10天剩下的桃子
 for( i=9;i>0;i--) //通过循环依次求前一天剩下的桃子数
 {   
 
   temp=2*(temp+1);
   
 }
 printf("%d\n",temp);
 return 0;
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值