1.char a[2][2][3]={{{1,6,3},{5,4,15}},{{3,5,33},{23,12,7}} };
for(int i=0;i<12;i++)
printf("%d ",_______);
在空格处填上合适的语句,顺序打印出a中的数字
答案:a[i/6][(i/3)%2][i%3];这道题目是多维数组的输出问题,这里要考虑的是每维数字的取值顺序问题:第一维,前六次循环都取0,后六次取1,于是i/6可以满足要求;第二维,前3次为0,再3次为1,再3次为0,再3次为1,用量化的思想,i/3把12个数字分为4组每组3个,量化为0、1、2、3,为要得到0、1、0、1我们这里就需要对(0、1、2、3)%2=(0、1、0、1),于是(i/3)%2;最后一维我们需要的是(0、1、2;0、1、2;0、1、2;0、1、2;)我们就i%3。
2.char **p, a[16][8];
问:p=a是否会导致程序在以后出现问题?为什么?
答案:这个不会导致出现问题,但是要注意p的使用,如a[1][2] 等价的为 *(*(p+1)+2)而不是*(p+11)
3.一个单链表,不知道长度,写一个函数快速找到中间节点的位置.
普通的方法就是先遍历得到链表的长度,然后再通过长度遍历得到链表的中间节点。更好的办法是:1)
2)
(这个算法的思想和经典问题“判定链表中是否存在环”的思想是一致的)
函数代码如下:
node* find_mid_element(node* head)
{
}
下面来道微软的吧
4. Implement a string class in C++ with basic functionality like comparison, concatenation, input and output. Please also provide some test cases and using scenarios (sample code of using this class).
Please do not use MFC, STL and other libraries in your implementation.
我的实现方案如下,这道题真地对c++的主要特性都进行了较好地考察.String.h:
#ifndef STRING_H
#define STRING_H
#include <iostream>
using namespace std;
class String{
};
#endif
String.cpp:
#include "String.h"
#include <cstring>
#include <cstdlib>
String::String(){
}
String::String(int n,char c){
}
String::String(const char* source){
}
String::String(const String& s){
}
String& String::operator=(const String& s){
}
String::~String(){
}
String& String::operator+=(const String& s){
int String::length(){
}
main.cpp:
#include <iostream>
#include "String.h"
using namespace std;
bool operator==(const String& left, const String& right)
{
}
bool operator!=(const String& left, const String& right)
{
}
ostream& operator<<(ostream& os,String& s){
}
String operator+(const String& a,const String& b){
}
bool operator<(const String& left,const String& right){
}
bool operator>(const String& left, const String& right)
{
}
istream& operator>>(istream& is, String& s){
}
int main(){
}