重解几道华为经典C语言面试题

来源:计算机等级考试    发布时间:2012-08-28    计算机等级考试视频    评论


  3、写出程序运行结果
  int sum(int a)
  {
  auto int c=0;
  static int b=3;
  c+=1;
  b+=2;
  return(a+b+c);
  }
  void main()
  {
  int I;
  int a=2;
  for(I=0;I<5;I++)
  {
  printf("%d,", sum(a));
  }
  }
  运行结果是:8,10,12,14,16,
  在求和函数sum里面c是auto变量,根据auto变量特性知每次调用sum函数时变量c都会自动赋值为0.b是static变量,根据static变量特性知每次调用sum函数时变量b都会使用上次调用sum函数时b保存的值。
  简单的分析一下函数,可以知道,若传入的参数不变,则每次调用sum函数返回的结果,都比上次多2.所以答案是:8,10,12,14,16,
  4、func(1) = ?
  int func(int a)
  {
  int b;
  switch(a)
  {
  case 1: 30;
  case 2: 20;
  case 3: 16;
  default: 0;
  }
  return b;
  }
  在 case 语句中可能忘记了对变量b赋值。如果改为下面的代码:
  int func(int a)
  {
  int b;
  switch(a)
  {
  case 1: b = 30;
  case 2: b = 20;
  case 3: b = 16;
  default: b = 0;
  }
  return b;
  }
  因为case语句中漏掉了break语句,所以无论传给函数的参数是多少,运行结果均为0。
  5、a[q - p] = ?
  int a[3];
  a[0]=0; a[1]=1; a[2]=2;
  int *p, *q;
  p=a;
  q=&a[2];
  很明显:a[q - p] = a[2] = 2;
  6、内存空间占用问题
  定义 int **a[3][4], 则变量占有的内存空间为:16位系统24,32位编译系统中是48。
  PS:公式:3 * 4 * sizeof(int **)
  7、程序编写
  编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。
  void ResetTheTime(int *year,int *month,int *date,int *hour,int *minute,int*second)
  {
  int dayOfMonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};
  if( *year < 0 || *month < 1 || *month > 12 ||
  *date < 1 || *date > 31 || *hour < 0 || *hour > 23 ||
  *minute < 0 ||*minute > 59|| *second <0 || *second >60 )
  return;
  if( *year%400 == 0 || *year%100 != 0 && *year%4 == 0 )
  dayOfMonth[1] = 29;
  if(*second >= 60)
  {
  *second = 0;
  *minute += 1;
  if(*minute >= 60)
  {
  *minute = 0;
  *hour += 1;
  if(*hour >= 24)
  {
  *hour = 0;
  *date += 1;
  if(*date > dayOfMonth[*month-1])
  {
  *date = 1;
  *month += 1;
  if(*month > 12)
  {
  *month=1;
  *year += 1;
  }
  }
  }
  }
  }
  return;
  }

上一页12下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答