广联达软件开发笔试题

1.

 [编程]给定一个整数,获得它的逆序数,如整数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.
 [
编程]两个无序链表AB,将其合并为递增排列的一个链表

#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.
 [
设计]有一个遥控,有四个按钮,编号为0123,其中02控制电器1和电器2的开,13控制电器12的关,设计一个系统,要求能够开关客厅的电视和卧室的灯,设计一个系统,设计相关的类,要求具有较好的扩展性,最好采用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++:编译型的语言,执行效率较高;指针和多继承;没有垃圾自动回收机制,设计多需考虑潜在内存泄漏】

 


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值