几个笔试的题目~~~大家做做看~~~
1。不借助其他变量,用算法实现交换两个参数的函数
2。输入一个十进制数,输出一个16进制的字符串,不借助其他函数
3。给出一个栈的出栈,入栈,和判断栈是否为空的函数,并由两个栈来模拟一个队列,得到操作队列的函数
包括:入队,出队,检验队是否为空
4。实现一个单链表的逆置
题目比较简单~~~看看谁的算法最好~~~~
问题点数:20、回复次数:22Top
1 楼llf_hust()回复于 2005-04-16 22:05:26 得分 0
1。不借助其他变量,用算法实现交换两个参数的函数
void Swap(int *i, int *j)
{
*i = *i^*j;
*j = *i^*j;
*i = *i^*j;
}
Top
2 楼llf_hust()回复于 2005-04-16 22:06:48 得分 0
4。实现一个单链表的逆置
题目比较简单~~~看看谁的算法最好~~~~struct IntNode* res(struct IntNode* h)
{
struct IntNode *s, *s1;
s = h;
h = NULL;
while (s)
{
s1 = s;
s = s->next;
s1->next = h;
h = s1;
}
return h;
}
Top
3 楼llf_hust()回复于 2005-04-16 22:08:06 得分 0
4。实现一个单链表的逆置
struct IntNode* res(struct IntNode* h)
{
struct IntNode *s, *s1;
s = h;
h = NULL;
while (s)
{
s1 = s;
s = s->next;
s1->next = h;
h = s1;
}
return h;
}
Top
4 楼zhangfjj(小张)回复于 2005-04-16 22:09:24 得分 10
1.这个题目做过好多次
b=a+b;
a=b-a;
b=b-a;好象是吧?
Top
5 楼llf_hust()回复于 2005-04-16 22:13:01 得分 0
a = a+b;
b = a-b;
a = a-b;Top
6 楼llf_hust()回复于 2005-04-16 22:16:46 得分 0
2。输入一个十进制数,输出一个16进制的字符串,不借助其他函数
int i;
char s[20];
scanf("%d",&i);
sprintf(s,"%x",i);
puts(s);
应该是这样吧Top
7 楼zhangfjj(小张)回复于 2005-04-16 22:25:33 得分 0
2.
/*输入一个十进制数,输出一个16进制的字符串,不借助其他函数*/
#include <stdio.h>
#include <string.h>
int main()
{
int i,j=0,t;
char str[256],temp;
printf("Please input a number: ");
scanf("%d",&i);
do
{
t=i%16;
i=i/16;
switch(t)
{
case 10:str[j]='a';break;
case 11:str[j]='b';break;
case 12:str[j]='c';break;
case 13:str[j]='d';break;
case 14:str[j]='e';break;
case 15:str[j]='f';break;
default: str[j]=t+'0';
}
j++;
}while(i>0);
str[j]='\0';
/*用strlen()不算是用了库函数吧,自己写也比较简单*/
j=strlen(str);
for(i=0;i<j/2;i++)
{
temp=str[i];
str[i]=str[j-i-1];
str[j-i-1]=temp;
}
printf("%s",str);
return 0;
}
注意,用的是int,不能超出int的范围Top
8 楼zhangfjj(小张)回复于 2005-04-16 22:26:18 得分 0
sprintf(s,"%x",i);
==========人家说了,不能借助其他函数Top
9 楼ZDL627(天)回复于 2005-04-16 22:28:09 得分 0
typedef struct node* link;
link reverse(link h)
{
link t,y=h,r=NULL;
while(y!=NULL)
{t=y->next;y->next=r;r=y;y=t;}
return r;
}Top
10 楼dongpy(51-->ARM)回复于 2005-04-16 23:02:58 得分 5
4。实现一个单链表的逆置
struct Node* revers(struct Node* h)
{
Node *pnext = h->Next;
h->Next = NULL;
while ( pnxt != NULL )
{
IntNode *ptmp = pnext->Next;
pnext->Next = h;
h = pnext;
pnext = ptmp;
}
return h;
}
Top
11 楼inlin()回复于 2005-04-16 23:36:02 得分 5
#include "stdafx.h"
#include <iostream.h>
#include <stdlib.h>
void dectobin(int num,int base);
int main(int argc, char* argv[])
{
int decimal;
int base;
base=2;
cout<<"enter number in decimal:";
cin>>decimal;
cout<<endl;
cout<<"decimal "<<decimal<<" = ";
dectobin(decimal,base);
cout<<" binary"<<endl;
system("PAUSE");
return 0;
}
void dectobin(int num,int base)
{
if(num>0)
{
dectobin(num/base,base);
cout<<num%base;
}
}
修改一下就可以了Top
12 楼treey2001(treey2001)回复于 2005-04-17 12:26:06 得分 0
大家做得都很不错哦~~~
第一题用这个算法最简单
b=a+b;
a=b-a;
b=b-a;Top
13 楼treey2001(treey2001)回复于 2005-04-17 12:31:06 得分 0
再补一题~~~
5。随机在54个位置放置54张牌~~每个位置只能放一张和放一次~~~(实际就是一副扑克牌了)
大家都来练练手~~Top
14 楼ccplus(++cc)回复于 2005-04-17 12:47:05 得分 0
b=a+b;
a=b-a;
b=b-a;
好。。。Top
15 楼pcboyxhy(-273.15℃)回复于 2005-04-17 13:27:05 得分 0
2.
printf("%x",....Top
16 楼pcboyxhy(-273.15℃)回复于 2005-04-17 13:29:31 得分 0
#include <iostream.h>
int n, i=0;
char p[64], hexn[]="0123456789ABCDEF";
cin>>n;
while(n>0){p[i++]=n&0xf; n>>=4;}
while(--i>=0) cout<<hexn[int(p[i])];
Top
17 楼treey2001(treey2001)回复于 2005-04-18 12:28:19 得分 0
UP~~Top
18 楼52china(飞刀又见飞刀)回复于 2005-04-18 13:27:31 得分 0
2。输入一个十进制数,输出一个16进制的字符串,不借助其他函数
static const char h[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
void rev(int v, char *ph)
{
int i = 0;
whlie(v && i<8)
{
ph[i++] = h[v&15];
v >>= 4;
}
}
Top
19 楼heguosheng(何国胜)回复于 2005-04-18 14:43:39 得分 0
顶一个Top
20 楼kiko_lee(清醒的迷茫中)回复于 2005-04-18 16:33:40 得分 0
长了见识了亚Top
21 楼kiko_lee(清醒的迷茫中)回复于 2005-04-18 16:39:48 得分 0
第三个:
算法不太好。
入队列简单
push入A Stack
出队列
将A Stack的item全部 pop ,将pop的item全部push入B stack。
如果A stack为空了,则pop B stack的最上一个出队列。
B stack的其他item全部挨个pop,再挨个push入 A stack。恢复一下。
判断为空
之间判断A stack是否为空就好。Top
22 楼martmy(白金汉公爵)回复于 2005-04-18 17:33:34 得分 0
好Top




