1. 程式人生 > >廣聯達軟體開發筆試題

廣聯達軟體開發筆試題

1.[程式設計]給定一個整數,獲得它的逆序數,如整數87231,逆序後為13278

// nixushu.cpp : Defines the entry point for the console application.
//
//思路是先轉成字串再操作
#include "stdafx.h"
#include <string>
#include <iostream>

//返回值為計算出的逆序數
int fun(int num)
{
	char an[20];
	int len, t, neg = 0;	//len:字串的長度,t:交換臨時變數,此種情況定義成int和char是一樣的
	if(num < 0)
	{
		num = -num;
		neg = 1;	//看來neg是標識num是否為負數,如果為負數,只計算整數部分
	}
	sprintf(an, "%d", num);	//把一個格式化資料寫到字串中
	len = strlen(an);	//返回字串的長度
	for(int i = 0; i < len/2; i++)	//前後交換
	{
		t = an[i];
		an[i] = an[len-1-i];
		an[len-1-i] = t;
	}
	num = atoi(an);	//把字串轉換成整數等
	return neg?-num:num;
}

int _tmain(int argc, _TCHAR* argv[])
{
	int num = 0;
	std::cin>>num;
	std::cout<<fun(num)<<std::endl;
	return 0;
}

// nixushu2.cpp : Defines the entry point for the console application.
//

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

int _tmain(int argc, _TCHAR* argv[])
{
	std::cout<<"輸出方式2"<<std::endl;
	int num;
	std::cin>>num;
	for(; num > 0; num = num/10)
	{
		std::cout<<(num%10);
	}
	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方式,或者描述類的主要屬性和關鍵操作
論述題:描述自己在開發過程解決的一個最成功的問題,描述這個問題,並說明是用什麼方法、途徑解決的,給出必要的資料結構和演算法