几道典型的C++笔试题

编程入门 行业动态 更新时间:2024-10-23 21:39:17

几道典型的C++<a href=https://www.elefans.com/category/jswz/34/1769509.html style=笔试题"/>

几道典型的C++笔试题

原文地址:几道典型的C++笔试题 作者:xianfa110

下面这个程序执行后会有什么错误或者效果:
 #define MAX 255
 int main()
{
   unsigned char A[MAX],i;
   for (i=0;i<=MAX;i++)
      A[ i ]=i;
}

解答:
MAX=255
数组A的下标范围为:0..MAX-1,这是其一..
其二.当i循环到255时,循环内执行:
  A[255]=255;
这句本身没有问题..但是返回for (i=0;i<=MAX;i++)语句时,
由于unsigned char的取值范围在(0..255),i++以后i又为0了..无限循环下去.
注:char类型为一个字节,取值范围是[-128,127],unsigned char [0 ,255]

---------------------------------
编写用C语言实现的求n阶阶乘问题的递归算法:
long int fact(int n)
{
  int x;
  long int y;
  if(n<0)  
   {
     printf("error!");
   }
  if(n==0)
     return 1;
  x=n-1;
  y=fact(x);
  return (n*y);
}

--------------------------------
二分查找算法:
1、递归方法实现:
int BSearch(elemtype a[],elemtype x,int low,int high)

{
  int mid;
  if(low>high) return -1;
  mid=(low+high)/2;
  if(x==a[mid]) return mid;
  if(x<a[mid]) return(BSearch(a,x,low,mid-1));
  else return(BSearch(a,x,mid+1,high));
}

2、非递归方法实现:
int BSearch(elemtype a[],keytype key,int n)
{
  int low,high,mid;
  low=0;high=n-1;
  while(low<=high) 
   {
      mid=(low+high)/2;
      if(a[mid].key==key) return mid;
      else if(a[mid].key<key) low=mid+1;
      else high=mid-1;
   }
  return -1;
}

--------------------------------
非递归计算如下递归函数的值(斐波拉契):
f(1)=1
f(2)=1
f(n)=f(n-1)+f(n-2) n>2

解:
int f(int n)
{
  int i,s,s1,s2;
  s1=1;
  s2=1;
  s=1;
  for(i=3;i<=n;i++)
    {
       s=s1+s2;
       s2=s1;
       s1=s;
    }
  return(s);
}

------------------------------
交换两个数,不用第三块儿内存:
int a = ……;
int b = ……;

a = a + b;
b = a - b;
a = a - b;

更多推荐

几道典型的C++笔试题

本文发布于:2024-02-06 06:46:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1746968.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:笔试   几道   典型

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!