杭州夜场ktv招聘提成2000·2500·3000·3500
24小时服务热线:13777822163
当前位置: 首页 杭州夜场招聘 正文

c语言常见面试题?c语言常见面试题及答案

发布于:2023年11月13日 作者:admin 阅读:167
微信号:13777822163
杭州高端ktv招聘人才 2000·2500·3000
复制微信号

  本文目录

  

  1. 计算机程序c语言面试常见问题
  2. 几个常见的C语言面试题分析
  3. C语言6个有趣的面试题

计算机程序c语言面试常见问题

  计算机程序c语言面试常见问题

   c语言作为计算机程序设计语言,是考察软件工程师应聘者技术能力的关键。计算机程序c语言面试常见问题,我们来看看。

   c语言面试题精选(笔试)

  单选题部分

   1、C语言程序的基本单位是____

   A.语句

   B.函数

   C.程序行

   D.字符

  答案:B

   2、C语言程序由()组成

   A.子程序

   B.过程

   C.函数

   D.主程序段程序

  答案:C

   3、算法的表示方法有______

   A.自然语言,传统流程图,N-S流程图,伪代码,计算机语言

   B.高级语言,汇编语言,机器语言

   C.C语言,QBASIC语言,InterDev

   D.图形图像法,描述法,编程法

   E.计算机语言

  答案:A

   4、下列变量定义中合法的是

   A.short_a=1-.le-1;

   B.doubleb=1+5e2.5;

   C.longdo=0xfdaL;

   D.float2_and=1-e-3;

  答案:A

   5、下面说法中正确的是()

   A.int型和long型运算先将int型转换成unsigned型,再转换

   B.两个float型运算结果为double型

   C.只要表达式中存在double型,所有其他类型数据都必须转

   D.表达式中的类型转换与运算顺序有关

  答案:C

   6、以下不正确的叙述是

   A.在C程序中,逗号运算符的优先级最低

   B.在C程序中,APH和aph是两个不同的变量

   C.若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变

   D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

  答案:D

   7、以下说法中正确的是

   A.#define和printf都是C语句

   B.#define是C语句,而printf不是

   C.printf是C语句,但#define不是

   D.#define和printf都不是C语句

  答案:D

   8、若有条件表达式(exp)?a++:b–,则以下表达式中能完全等价于表达式(exp)的是

   A.(exp==0

   B.(exp!=0)

   C.(exp==1)

   D.(exp!=1)

  答案:B

   9、若有说明:inta[3][4]={0};则下面正确的叙述是

   A.只有元素a[0][0]可得到初值0

   B.此说明语句不正确

   C.数组a中各元素都可得到初值,但其值不一定为0

   D.数组a中每个元素均可得到初值0

  答案:D

   c语言面试问答题

   1、局部变量能否和全局变量重名?

  答:能,局部会屏蔽全局。要用全局变量,需要使用"::"

  局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。

   2、如何引用一个已经定义过的全局变量?

  答:extern

  可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错

   3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?

  答:可以,在不同的C文件中以static形式来声明同名全局变量。

  可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错。

  ;

  

几个常见的C语言面试题分析

  一次去一个小公司面试,没有太重视,当时由于工作甚忙,也没作准备。他们给我的试卷有大量的题,规定一个小时必须做完,一看题量,吓了一大跳,题有链表,有多维数组,有大量的程序阅读,幸亏基本功还算扎实,未辱使命,差强完成。等到做到编程题时,才发现自己太长时间没有写过程序了,让一些琐碎的改BUG工作和代码维护浪费了太多的精力。一直做下去,心里暗暗吃惊,一个小时,这个题量如果是在刚毕业时,还是有可能完成的,工作几年后,压力渐小,写程序基本都是拿来主义,对标准库函数的原理把握和编程能力越来越退化。由于当时时间紧迫,所写程序也不够完善,过后又思考了一下,回到家后赶紧又对这些问题总结了一下。下面对面试中遇到的编程问题分析了一下。真是人在社会如江湖呀,学习是一刻也不能放松的事。稍一不慎,晚节不保不说,反而会阴沟里翻船。

  1.获取路径下的文件名

  char* FindFileName(char* s)

  {

  int len;

  char*tmp=NULL;

  ASSERT(s!= NULL);

  for(len=strlen(s); len>0;len--)

  {

  if((s[len]=='/')

  (s[len]=='//'))

  {

  tmp=&s[len+1];

  break;

  }

  }

  return tmp;

  }

  2.把整型转化为字符型

  char* i2a(int n, char*s)

  {

  int i, sign;

  ASSERT(s!= NULL);

  if((sign= n)< 0)

  {

  n=-n;//转为正数,利于取位

  }

  do

  {

  s[i++]= n% 10+'0';

  }

  while((n/= 10)> 0)

  if(sign< 0)

  {

  s[i++]='-';

  }

  s[i]='/0';

  reverse(s);

  }

  3.把字符型转为整型

  int a2i(char* s)

  {

  int i, n, sign;

  ASSERT(s!= NULL);

  for(i= 0; s[i]==''; i++)

  {

  NULL;//如果字串前有空格,跳过所有空格

  }

  sign=(s[i]=='-')?:-1: 1;

  if(s[i]=='+'

   s[i]=='-')

  {

  i++;//判断是正整数串还是负整数串

  }

  for(n= 0; s[i]>='0'&& s[i]<='9'; i++)

  {

  n= 10* n+(s[i]-'0');

  }

  return sign*n;

  }

  4.输出字符串倒文,不能动态分配内存

  char* reverse(char* s)

  {

  int c, i, j;

  ASSERT(s!= NULL);

  for(i= 0, j= strlen(s)- 1; i< j; i++, j--)

  {

  c= s[i];

  s[i]= s[j];

  s[j]= c;

  }

  return s;

  }

  5.查找子串是否存在

  int strindex(char*str,char*searchstr)

  {

  int end, i, j;

  ASSERT((str!= NULL)&&(searchstr!= NULL));

  //计算结束位置

  end= strlen(str)- strlen(searchstr);

  if( end> 0)

  {

  for( i= 0; i<= end; i++)

  {

  for( j= i; str[j]== searchstr[j-i]; j++)

  {

  if( searchstr[j-i+1]=='/0')/*子字符串字结束*/

  {

  return i+ 1;/*找到了子字符串*/

  }

  }

  }

  }

  return-1;

  }

  

C语言6个有趣的面试题

  C语言6个有趣的面试题

  1、gets()函数

  问:请找出下面代码里的问题。

  答:上面代码里的问题在于函数gets()的使用,这个函数从stdin接收一个字符串而不检查它所复制的缓存的容积,这可能会导致缓存溢出。这里推荐使用标准函数fgets()代替。

  2、main()的返回类型

  问:下面的代码能编译通过吗?如果能,它有什么潜在的问题吗?

  答:因为main()方法的返回类型,这段代码的错误在大多数编译器里会被当作警告。main()的返回类型应该是“int”而不是“void”。因为“int”返回类型会让程序返回状态值。这点非常重要,特别当程序是作为依赖于程序成功运行的脚本的一部分运行时。

  3、内存泄露

  问:下面的代码会导致内存泄漏吗?

  答:尽管上面的代码并没有释放分配给“ptr”的内存,但并不会在程序退出后导致内存泄漏。在程序结束后,所有这个程序分配的内存都会自动被处理掉。但如果上面的代码处于一个“while循环”中,那将会导致严重的内存泄漏问题!

  4、使用_exit退出

  问:在下面的代码中,atexit()并没有被调用,为什么?

  答:这是因为_exit()函数的使用,该函数并没有调用atexit()等函数清理。如果使用atexit()就应当使用exit()或者“return”与之相配合。

  5、*和++操作

  问:下面的操作会输出什么?为什么?

  答:输出结果应该是这样:[L] [i]。因为“++”和“”的优先权一样,所以“ptr++”相当于“(ptr++)”。即应该先执行ptr++,然后才是ptr,所以操作结果是“L”。第二个结果是“i”。

  6、问:修改代码片段(或者只读代码)

  问:下面的代码段有错,你能指出来吗?

  答:这是因为,通过*ptr=“T’,会改变内存中代码段(只读代码)“Linux”的第一个字母。这个操作是无效的,因此会造成seg-fault或者崩溃。

标签: 杭州夜场招聘
复制成功
微信号: 13777822163
杭州高端ktv招聘人才 2000·2500·3000
我知道了