CVT

还是记录下找工的这些笔试题吧~

从CVT开始

我报的是嵌入式软件技术支持工程师,一共8大题,最后两个非技术类(一个如何组织部门看电影,一个是随便写写)。

 

1.找程序错误,打印0~1000素数的一个程序。

 

2.写程序结果,大概程序是这样的:

int sum( int a )
{
   auto int c = 0;
   static int b = 2;
   c += 1;
   b += 3;
   return ( a + b + c );

}

int main( int argc, char ** argv )
{
   int a = 2;
   for( int i=0; i < 5; i++ )
   cout << sum(a) << ",";

   return 0;
}

解:这题我做错了,因为不懂auto和static是什么意思,囧~上网查了下资料~

auto的含义是有程序自动控制变量的生存周期,通常指的就是变量进入其作用域的时候被分配,离开其作用域时候被释放;static变量在程序初始化时被分配,知道程序退出前才被释放。自己做题时也想了不可能是88888,但是一看每次对bc都进行了定义,我就以为是程序的陷阱。后来调试时发现,在后来几次调用sum时,根本都不会执行static int b = 2,只在第一次执行。失败,觉得最简单的一道题~

 

3.英文题目,貌似考一点英文语法,这就不记得了,只知道跟斐波那契数列有关。

 

4.long型数,用二进制、八进制、十六进制分别打印出来,用putchar函数。

解:这题大概思路:对于C语言来说,一个整数在计算机内就是以二进制的形式存储的,所以没有必要再将一个整数经过一系列的运算转换为二进制形式,只要将整数在内存中的二进制表示输出即可。可惜我没做出来。程序:

#include <cstdlib>
#include <iostream>

using namespace std;

#define  BITS 32

void main()
{
 long x ;
 char a[ BITS ];
 char b;
 cout << " Please input the decimal long : " << endl;
 cin >> x;

 cout << " binary is : " << endl;
 for ( int i = BITS; i >0 ; i -- )
 {
  a[BITS - i] = '0' +  (((x & 1<<(i-1)) ) >> (i-1)) ;
  //putchar( '0' +  (((x & 1<<(i-1)) ) >> (i-1)) );

 }
 
 int flag = 0;  // do not output num until first 1;
 for( int j = 0; j < BITS; j ++  )
 {
  if ( a[j] != '0')
  {
   flag = 1;
  }

  if ( flag )
  {
   cout << a[j];
  }
 }
 cout << endl;   
}
 

5.回文数,2个2位整数相乘能求得的最大的是91*99=9009,求2个3位整数相乘能求得最大的回文数。

解:自己用的暴力法,一个个算,还不知道对不对。

 

6.求6*6田字格从左上角到右下角的路径总数,只能向下向右。

解:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值