[编程]给定一个整数,获得它的逆序数,如整数87231,逆序后为13278
#include <cstdio>
#include <iostream>
using namespace std;
int reverse(int x)
{
int flag = 1;
if(x < 0)
{
flag = 0;
x = -x;
}
int num = 0;
while(x != 0)
{
num = num* 10 + x% 10;
x /= 10;
}
if(0 == flag)
num = -num;
return num;
}
int main()
{
int a = reverse(-89);
cout << a << endl;
return 0;
}
2.
[编程]两个无序链表A和B,将其合并为递增排列的一个链表
#include<stdio.h>
#include<stdlib.h>
struct stud/*定义链表*/
{
int data;
struct stud *next;
};
void pai_xue(struct stud *head1,struct stud *head2,int count1,int count2)/*冒泡排序法*/
{
int i,j,temp=0;
struct stud *p;
for(i=0;i<count1-1;++i)
for(p=head1->next;p->next!=NULL;p=p->next)/*对链表1进行排序*/
{
if(p->data>p->next->data)
{
temp=p->data;
p->data=p->next->data;
p->next->data=temp;
}
}
for(i=0;i<count2-1;++i)
for(p=head2->next;p->next!=NULL;p=p->next)/*对链表2进行排序*/
{
if(p->data>p->next->data)
{
temp=p->data;
p->data=p->next->data;
p->next->data=temp;
}
}
printf("\n链表1排完序后\n");/*输出链表1和2*/
p=head1->next;
while(p)
{
printf("%d",p->data);
p=p->next;
}
printf("\n");
printf("\n链表2排完序后\n");
p=head2->next;
while(p)
{
printf("%d",p->data);
p=p->next;
}
printf("\n");
}
void main()
{
struct stud *head1,*head2,*p,*q,*head3;
int count1=1,count2=1;
head3=(struct stud *)malloc(sizeof(struct stud *));/*定义链表头结点,并分配空间*/
head3->next=NULL;
head1=(struct stud *)malloc(sizeof(struct stud *));
head2=(struct stud *)malloc(sizeof(struct stud *));
p=(struct stud *)malloc(sizeof(struct stud *));
q=(struct stud *)malloc(sizeof(struct stud *));
head1->next=NULL;
head2->next=NULL;
printf("输入一个数据以999结束\n");
scanf("%d",&p->data);
while(p->data!=999)/*链表1输入数据*/
{
count1++;
p->next=head1->next;
head1->next=p;
printf("输入一个数据以999结束\n");
p=(struct stud *)malloc(sizeof(struct stud *));
scanf("%d",&p->data);
}
printf("现在开始给第二个链表输入数据\n");
printf("输入一个数据以999结束\n");
scanf("%d",&q->data);
while(q->data!=999)/*链表2输入数据*/
{
count2++;
q->next=head2->next;
head2->next=q;
printf("输入一个数据以999结束\n");
q=(struct stud *)malloc(sizeof(struct stud *));
scanf("%d",&q->data);
}
pai_xue(head1,head2,count1,count2);
head1=head1->next;
head2=head2->next;
while(head1!=NULL&&head2!=NULL)/*将排序好的链表1和2 的数据导入链表3*/
{
if(head1->data<=head2->data)
{
p=head1->next;
head1->next=head3->next;
head3->next=head1;
head1=p;
}
else
{
q=head2->next;
head2->next=head3->next;
head3->next=head2;
head2=q;
}
}
if(head1!=NULL)/*如果有链表1或2的数据不为空,将剩下的数据导入链表3中*/
{
p=head1;
while(p!=NULL)
{
q=p->next;
p->next=head3->next;
head3->next=p;
p=q;
}
}
if(head2!=NULL)
{
q=head2;
while(q!=NULL)
{
p=q->next;
q->next=head3->next;
head3->next=q;
q=p;
}
}
q=head3->next;/*将链表倒置,原来是由大到小,倒置成由小到大*/
head3->next=NULL;
while(q!=NULL)
{
p=q->next;
q->next=head3->next;
head3->next=q;
q=p;
}
printf("两个链表合并后由小到大为\n");
p=head3->next;
while(p)
{
printf("%d",p->data);
p=p->next;
}
}
3.
[编程]找出两个排序数组的合集,如[1,3,4,5,6],[3,5,7,9],合集是[3,5],用一种高效的方法编程实现
4.
[编程]将一个句子的单词反过来(单词原样),比如"i am cheating"变成"cheating am i"
5.
[设计]有一个遥控,有四个按钮,编号为0,1,2,3,其中0,2控制电器1和电器2的开,1,3控制电器1,2的关,设计一个系统,要求能够开关客厅的电视和卧室的灯,设计一个系统,设计相关的类,要求具有较好的扩展性,最好采用UML方式,或者描述类的主要属性和关键操作
论述题:
描述自己在开发过程解决的一个最成功的问题,描述这个问题,并说明是用什么方法.途径解决的,给出必要的数据结构和算法
题目都比较基础,但是好久没写c程序了,有点混乱,时间不够用,呜呜呜
编写函数 检查给定字符串是否是整数
2.有2个无序链表LIST 1 LIST2 将2个合并为一个递增的链表
3.从排序的数组中找出整数N 的位置
4.分割字符串函数需要返回分割好的字符串链表
5.银行有N个业务办理窗口,银行分普通和VIP 参照实际场景设计排队机系统
6.设计关键数据结构和算法
7.用自己方式表达系统的运算流程看一看大家的答案哦
前四题25分/个,第五题20分,共120
1.写一个函数求N的阶乘(N为较大数)
【递归或循环】
2.什么是面向对象程序设计
【继承、多态、封装、模块化管理】
3.给定数组A[0],A[1]...A[n],写快速排序算法,从小到大排列
【冒泡(交换排序)法的改进算法,找中值,递归】
4.给定字符串 str:'1,4,5-8,9,89,11-14' ,编程输出为str:'1,4-9,11-14,89',要求较高实现效率;
即连续数字用"-"连接【此题是关键啊。。。感觉排序,添删字符很混乱,求解】
5.java c++ Delphi c# vb等语言任选两种,述各有什么优缺点;
【java:没有指针,安全性高;接口代替了多继承;API类库庞大;平台无关性;解释型语言,执行效率较低; 】
【c++:编译型的语言,执行效率较高;指针和多继承;没有垃圾自动回收机制,设计多需考虑潜在内存泄漏】