常见面试程序题

1、 给定排好序的数组A(从小到大),大小为n,现在给定数X,插入到给定的数组A中,保持排序(二分法)。

主要考察二分法。

#include "stdafx.h"
#include <iostream>

using namespace std;
#define Max 10
int BinaryFind(int a[],int n,int insertNum);

int _tmain(int argc, _TCHAR* argv[])
{
	int a[Max]={1,2,3,4,5,8,10};
	int insertNum=6;
	int pos=BinaryFind(a,7,insertNum);
	
	for(int i=7-1;i>=pos;i--)
		a[i+1]=a[i];

	a[pos]=insertNum;

	system("pause");
	return 0;
}

//二分法查找要插入的位置  a数组是从小到大的有序数组
int BinaryFind(int a[],int n,int insertNum)
{
	int left=0;
	int right=n-1;
	int mid;
	while(left<right)
	{
		mid=left+(right-left)/2;

		if(a[mid]>insertNum)
		{
			right=mid-1;
		}
		else if(a[mid]<insertNum)
		{
			left=mid+1;
		}
		else
		{
			return mid;
		}

	}
	return mid;
}


 

2. 写一个栈的实现,并将1-10入栈和出栈

#include "stdafx.h"
#include <iostream>

using namespace std;
#define Max 100

typedef struct stack
{
	int data[Max];
	int top; //栈顶指针
}Seqtack,*SStack;

void InitStack(SStack s);
void Push(SStack s,int data);
int Pop(SStack s);


int _tmain(int argc, _TCHAR* argv[])
{

	SStack s;
	s=(SStack)malloc(sizeof(Seqtack));
	InitStack(s);
	for(int i=1;i<=10;i++)
	{
		Push(s,i);
	}
	
	for(int i=0;i<10;i++)
	{
		int t=Pop(s);
		cout<<t<<"  ";
	}
	system("pause");
	return 0;
}


//初始化顺序栈
void InitStack(SStack s)
{
	s->top=-1;
}

//入栈
void Push(SStack s,int data)
{
	//判断栈是否已满
	if(s->top>=Max-1)
	{
		cout<<"栈满,不能入栈!"<<endl;
		exit(-1);
	}
	else
	{
		s->data[++s->top]=data;
	}
}

//出栈
int Pop(SStack s)
{
	//判断是否为空
	if(-1==s->top)
	{
		cout<<"为空栈,不能出栈!"<<endl;
		exit(-1);
	}
	else
	{
		int temp=s->data[s->top--];
		return temp;
	}
}


 

3.编写一个函数,要求输入年月日时分秒,输出下一秒的时间。

#include "stdafx.h"
#include  <iostream>

using namespace std;
void AddSecond(int sec);
int Time[6]; //Time[0]—Time[5]依次表示年、月、日、时、分、秒       24 60 60 
int MonthDay[]={31,28,31,30,31,30,31,31,30,31,30,31}; //12月中每月的天数  为平年
int _tmain(int argc, _TCHAR* argv[])
{
	for(int i=0;i<6;i++)
	{
		cin>>Time[i];
	}
	AddSecond(1);
	for(int i=0;i<6;i++)
	{
		cout<<Time[i]<<" ";
	}
	system("pause");
	return 0;
}

void AddSecond(int sec)
{
	if((Time[0]%400==0)||((Time[0]%4==0)&&(Time[0]%100!=0))) //如果为闰年
	{
		MonthDay[1]=29;
	}
	else   //为平年
	{
		MonthDay[1]=28;
	}
	int n=sec;
	int m=0;

	 //秒
		Time[5]+=n;
		n=Time[5]/60;
		m=Time[5]%60;
		Time[5]=m;
    //分
		Time[4]+=n;
		n=Time[4]/60;
		m=Time[4]%60;
		Time[4]=m;
	//时
	    Time[3]+=n;
		n=Time[3]/24;
		m=Time[3]%24;
		Time[3]=m;
	//天
	    Time[2]+=n;
		n=Time[2]/MonthDay[Time[1]];
		m=Time[2]%MonthDay[Time[1]];
		Time[2]=m;
	//月
		Time[1]+=n;
		n=Time[1]/12;
		m=Time[1]%12;
		Time[1]=m;
	//年
		Time[0]+=n;
}

 

参考来源: lunchenqun http://blog.csdn.net/luchenqun/article/details/6554005
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
常见的Java面试大全的程序面试程序,很有影响力的哦!好好珍惜这个资料吧!有Java的常见面试的冒泡,常见的算法,继承,多态 1.抽象: 抽象就是忽略一个主中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承:  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装:  封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性:  多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值