C++笔试题(十)
这些题目相比其他公司的试题,较为基础,全部为C语言,没有涉及C++,但如果不细心,是很难得到较高分数的。另外大家转贴不要去掉我的个人信息啊。互相宣传下网站嘛。
1. 找错
void test1()
{
char string[];
char* str1=”″;
strcpy(string, str1);
}
答:表面上并且编译都不会错误。但如果string数组原意表示的是字符串的话,那这个赋值就没有达到意图。最好定义为char string[11],这样最后一个元素可以存储字符串结尾符’\0′;
void test2()
{
char string[], str1[];
for(int I=; I<;I++)
{
str1[I] ='a';
}
strcpy(string, str1);
}
答:strcpy使用错误,strcpy只有遇到字符串末尾的'\0'才会结束,而str1并没有结尾标志,导致strcpy函数越界访问,不妨让str1[9]='\0',这样就正常了。
void test3(char* str1)
{
char string[];
if(strlen(str1)<=)
{
strcpy(string, str1);
}
}
答:这又会出现第一道改错题的错误了。strlen(str1)算出来的值是不包含结尾符'\0'的,如果str1刚好为10个字符+1结尾符,string就得不到结尾符了。可将strlen(str1)<=10改为strlen(str1)<10。
2. 找错
#define MAX_SRM 256 DSN get_SRM_no()
{
static int SRM_no;
int I;
for(I=;I<MAX_SRM;I++,SRM_no++)
{
SRM_no %= MAX_SRM;
if(MY_SRM.state==IDLE)
{
break;
}
}
if(I>=MAX_SRM)
return (NULL_SRM);
else
return SRM_no;
}
答:我不知道这段代码的具体功能,但明显有两个错误
1,SRM_no没有赋初值
2,由于static的声明,使该函数成为不可重入(即不可预测结果)函数,因为SRM_no变量放在程序的全局存储区中,每次调用的时候还可以保持原来的赋值。这里应该去掉static声明。
3. 写出程序运行结果
int sum(int a)
{
auto int c=;
static int b=;
c+=;
b+=;
return(a+b+c);
}
void main()
{
int I;
int a=;
for(I=;I<;I++)
{
printf("%d,", sum(a));
}
}
答:8,10,12,14,16
该题比较简单。只要注意b声明为static静态全局变量,其值在下次调用时是可以保持住原来的赋值的就可以。
----------------------------------------------
插播广告啦:版权所有:朱科 欢迎光临我的网站:www.goodsoft.cn,各位转贴别删,劳动成果啊
----------------------------------------------
4.
int func(int a)
{
int b;
switch(a)
{
case : b=;
case : b=;
case : b=;
default: b=;
}
return b;
}
则func()=?
答:func(1)=0,因为没有break语句,switch中会一直计算到b=0。这是提醒我们不要忘了break。呵呵。
5:
int a[];
a[]=; a[]=; a[]=;
int *p, *q;
p=a;
q=&a[];
则a[q-p]=?
答:a[q-p]=a[2]=2;这题是要告诉我们指针的运算特点
6.
定义 int **a[3][4], 则变量占有的内存空间为:_____
答:此处定义的是指向指针的指针数组,对于32位系统,指针占内存空间4字节,因此总空间为3×4×4=48。
7.
编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。
答:
/*输入年月日时分秒,输出年月日时分秒的下一秒,输出仍然在原内存空间*/
bool NextMinute(int *nYear,int *nMonth,int *nDate,int *nHour,int *nMinute,int *nSecond)
{
if(*nYear12 || *nMonth23 || *nHour59 || *nSecond59) return false;
int nDays;
switch(*nMonth)
{
case :
case :
case :
case :
case :
case :
case :
nDays=;
break;
case :// 判断闰年
if(*nYear%==||*nYear%!=&&*nYear%==)
{
nDays=;
}
else
{
nDays=;
}
break;
default:
nDays=;
break;
}
if(*nDatenDays) return false; (*nSecond)++; // 秒加1
if(*nSecond>=) // 秒满60,做出特殊处理,下面时,日,月等类同
{
*nSecond=;
(*nMinute)++;
if(*nMinute>=)
{
*nMinute=;
(*nHour)++;
if(*nHour>=)
{
*nHour=;
(*nDate)++;
if(*nDate>nDays)
{
*nDate=;
(*nMonth)++;
if(*nMonth>)
{
*nMonth=;
(*nYear)++;
}
}
}
}
}
return true;
}
/*示例可运行代码*/
void main()
{
int nYear=,nMonth=,nDate=,nHour=,nMinute=,nSecond=;
bool res = NextMinute(&nYear,&nMonth,&nDate,&nHour,&nMinute,&nSecond);
if(res)
printf(“The result:%d-%d-%d %d:%d:%d”,nYear,nMonth,nDate,nHour,nMinute,nSecond);
else
printf(“Input error!\n”);
}
转载者注:(对原文有部分修改)
C++笔试题(十)的更多相关文章
- C/C++ 笔试题
/////转自http://blog.csdn.net/suxinpingtao51/article/details/8015147#userconsent# 微软亚洲技术中心的面试题!!! 1.进程 ...
- 嵌入式Linux C笔试题积累(转)
http://blog.csdn.net/h_armony/article/details/6764811 1. 嵌入式系统中断服务子程序(ISR) 中断是嵌入式系统中重要的组成部分,这导致了很 ...
- C/C++笔试题(很多)
微软亚洲技术中心的面试题!!! .进程和线程的差别. 线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 (2 ...
- 笔试题引出float数据的存储方式的深究
笔试题: #include <iostream>#include <stdio.h>#include <string.h>#include <conio.h& ...
- 剑指Offer——搜狐畅游笔试题+知识点总结
剑指Offer--搜狐畅游笔试题+知识点总结 情景回顾 时间:2016.9.24 10:00-12:00 地点:山东省网络环境智能计算技术重点实验室 事件:搜狐畅游笔试 注意事项:要有大局观,该舍 ...
- 剑指Offer——小米+小红书笔试题+知识点总结
剑指Offer--小米+小红书笔试题+知识点总结 情景回顾 时间:2016.9.23 19:00-21:00 2016.9.24 15:00-17:00 地点:山东省网络环境智能计算技术重点实验室 事 ...
- 剑指Offer——携程笔试题+知识点总结
剑指Offer--携程笔试题+知识点总结 情景回顾 时间:2016.9.17 19:10-21:10 地点:山东省网络环境智能计算技术重点实验室 事件:携程笔试 总体来说,携程笔试内容与其它企业笔试题 ...
- C/C++笔试题(基础题)
为了便于温故而知新,特于此整理 C/C++ 方面相关面试题.分享,共勉. (备注:各题的重要程度与先后顺序无关.不断更新中......欢迎补充) (1)分析下面程序的输出(* 与 -- 运算符优先级问 ...
- PHP工程师笔试题
PHP工程师笔试题 提示:请将答案写在另外一张空白纸上,并在30分钟内完成. PHP 请写出include.require.include_once.require_noce的区别. include是 ...
- python最新笔试题
这是笔者面试小十家公司后呕心沥血总结的一些笔试编程题~具体公司就不透露了.哎,说多了都是泪啊. 1.二分法查找: l = [1, 2, 3, 4, 5, 6, 7, 8, 9] find_num = ...
随机推荐
- Centos 6.x 安装Python 3.4.3
[root@squid ~]# sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf [root@squid ~]# grep keepcache /e ...
- Tomcat部署项目时出错java.lang.IllegalStateException: ContainerBase.addChild: start:org.apache.catalina.Life
Tomcat部署项目时出错java.lang.IllegalStateException: ContainerBase.addChild: start:org.apache.catalina.Life ...
- Android4.42-Setting源代码分析之蓝牙模块Bluetooth(下)
接着上一篇Android4.42-Settings源代码分析之蓝牙模块Bluetooth(上) 继续蓝牙模块源代码的研究 THREE.蓝牙模块功能实现 switch的分析以及本机蓝牙重命名和可见性的分 ...
- Java学习之基本概念
1.java体系结构: j2se:是Java的标准版,用于标准的应用开. j2ee:是Java的企业版,用于企业级的应用服务,web服务开发. j2me:是Java的微型版,用户手机或嵌入式开发. p ...
- VirtualBox中使用双网卡实现CentOS既能上网(校园网)也能使用SSHclient
近期在虚拟机中使用linux操作系统,之前使用NAT方式上网,能够畅通无阻.可是使用SSHclient连接linux虚拟机就必须为其指定固定的IP地址.依照网上的配置方法使用桥接方式,这种方式是能够的 ...
- LeetCode232 Implement Queue using Stacks Java 题解
题目: Implement the following operations of a queue using stacks. push(x) -- Push element x to the bac ...
- 下载Google官方/CM Android源码自己主动又一次開始的Shell脚本
国内因为某种原因,下载CM或Google官方的Android源码总easy中断.总看着机器.一中断就又一次运行repo sync还太麻烦,所以我特意编写了一段shell脚本(download.sh). ...
- 获取Wifi密码,不知道是不是真的
package com.example.wifipassword; import java.util.List; import android.app.Activity; import android ...
- COGS28 [NOI2006] 最大获利[最大权闭合子图]
[NOI2006] 最大获利 ★★★☆ 输入文件:profit.in 输出文件:profit.out 简单对比时间限制:2 s 内存限制:512 MB [问题描述] 新的技术正冲击着手 ...
- How do I set the timeout for a JAX-WS webservice client?
How do I set the timeout for a JAX-WS webservice client? up vote58down votefavorite 27 I've used JAX ...