9月计算机二级c语言基础试题

时间:2020-08-19 13:52:24 计算机等级 我要投稿

2017年9月计算机二级c语言基础试题

  程序设计是给出解决特定问题程序的过程,是 软件构造活动中的重要组成部分。下面是小编收集的关于计算机二级c语言基础试题,希望大家认真阅读!

2017年9月计算机二级c语言基础试题

  1.下面的代码输出什么?为什么?

  void foo(void)

  {

  unsigned int a = 6;

  int b = -20;

  (a+b > 6)?puts(“>6”):puts(“<=6”);

  }

  答案:输出值”>6”

  解析:a+b在这里做了隐式的转换,把int转化为unsigned int.编译器会把b当做一个很大的正数.

  2.下面的代码有什么问题,为什么?

  void foo(void)

  {

  char string[10], str1[10];

  int i;

  for (i = 0; i < 10; i++) {

  str1[i] = 'a';

  }

  strcpy(string, str1);

  printf("%s\n", string);

  }

  答案:运行到strcpy的时候可能会产生内存异常

  解析:吟哦日str1没有\0结束标志,所以数组后面存储的可能不是\0,而是随机数据,对于strcpy和printf这种需要\0判断字符串结束的函数来说,出错是必然的了.

  道理虽是如此,但是这段代码我在windows和Linux下测试的结果不一样,Linux下可以正常输出10个a,windows下会出错,使用的.都是gcc的编译器.

  3.下面的代码,i和j的值分别是多少?为什么?

  static int j;

  int k = 0;

  void fun1(void)

  {

  static int i = 0;

  i++;

  }

  void fun2(void)

  {

  j = 0;

  j++;

  }

  int main(void)

  {

  for (k = 0; k < 10; k++) {

  fun1();

  fun2();

  }

  return 0;

  }

  答案:i=10,j=1

  解析:由于被static修饰的局部变量存储在静态区内,所以即使这个函数运行结束,这个静态变量还是不会被销毁,函数下次运行时还能使用这个值,静态变量只被初始化一次,函数下次运行会直接跳过初始化,进行++操作.而j每次都被赋0.

  4.下面的代码里,假设在32位系统下,各sizeof计算得结果分别是多少?

  int *p = NULL;

  sizeof(p)的值是

  sizeof(*p)的值是

  int a[100];

  sizeof(a)的值是

  sizeof(a[100])的值是

  sizeof(&a)的值是

  sizeof(&a[0])的值是

  int b[100];

  void fun(int b[100])

  {

  sizeof(b);

  }

  sizeof(b)的值是

  答案:4,4,400,4,4,4,4

  解析:没什么好说的吧

  5.下面代码的结果是多少?为什么?

  int main(void)

  {

  char a[1000];

  int i;

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

  a[i] = -1-i;

  printf("%d", strlen(a));

  return 0;

  }

  答案:255

  解析:基本上算是个”轮回”的问题,strlen遇到a[i]=0的时候就终止了,现在的问题变成循环多少次a[i]=0了,那么就使用补码来计算到底多少次之后char会溢出为0,我的回答是一个轮回,也就是256次,那么strlen不包含0的位置,那么长度就是255了.

【2017年9月计算机二级c语言基础试题】相关文章:

2017年9月计算机二级c语言试题06-17

2017年9月计算机二级c语言考试试题基础版06-20

2017年9月计算机二级C语言模式试题06-05

2017年9月计算机二级c语言笔试试题06-17

2017年9月计算机二级考试C语言模拟试题06-05

2017年9月计算机二级c语言检测试题06-17

2017年9月计算机二级c语言笔试题库06-17

计算机二级c语言考试试题基础版08-26

20179月计算机二级考试C语言强化考试试题05-27