北邮linux考试题,北邮2011网研复试上机题——复数集合

前言

从我开始在中传读研开始到现在已经有将近一年半了,从最初的计算机小白到现在的好联系服务器端主力开发成员,我能每天感受到自己的进步,但是心里一直耿耿于怀的是当时北邮复试被刷的事情,我虽然庆幸能在中传遇到我人生最重要的两位导师(黄老师、范老师),这两位老师从各个方面重新打造了我,让我现在能够一直在进步,但是我还是很不爽复试被刷以及上机考试竟然没有ac一道题。这一年半的时间,我不敢偷懒,php虽然是我主要的编程语言,但是对c的不能忘怀让我一直挂念那当时的北邮复试题啊!今天花了将近1个小时把当时的第二道题在九度AC了,记录一下吧!

思路

说实在的,这道复数题现在看没有任何难度,基本上考了两个点吧

如何处理输入输出,将字符串转换成需要的数字

题目描述:

一个复数(x+iy)集合,两种操作作用在该集合上:

1、Pop 表示读出集合中复数模值最大的那个复数,如集合为空 输出 empty ,不为空就输出最大的那个复数并且从集合中删除那个复数,再输出集合的大小SIZE;

2 Insert a+ib 指令(a,b表示实部和虚部),将a+ib加入到集合中 ,输出集合的大小SIZE;

最开始要读入一个int n,表示接下来的n行每一行都是一条命令。

输入:

输入有多组数据。

每组输入一个n(1<=n<=1000),然后再输入n条指令。

输出:

根据指令输出结果。

样例输入:

3

Pop

Insert 1+i2

Pop

样例输出:

empty

SIZE = 1

1+i2

SIZE = 0

提示:

模相等的输出b较小的复数。

a和b都是非负数。

AC代码

彻彻底底的水题,当年竟然觉的如此艰难,唉,一年半之前我的基本功到底是有多差啊,淡淡的忧伤,话不多说,上AC代码

#include

#include

#include

#define max_size 1000

struct stack

{

int data[max_size];

int top;

};

void initStack(struct stack *);

void pushStack(struct stack *, int );

int popStack(struct stack *);

int main()

{

unsigned int m, num;

unsigned long int a, b, plus, remainder;

struct stack *pstack;

pstack = (struct stack *)malloc(sizeof(struct stack));

while(scanf("%d", &m) != EOF && m != 0)

{

scanf("%ld %ld", &a, &b);

//初始化

plus = a + b;

initStack(pstack);

//考虑a+b=0的情况

if(plus == 0)

{

pushStack(pstack, 0);

}

//求m进制数

while(plus)

{

remainder = plus % m;

pushStack(pstack, remainder);

plus /= m;

}

//打印输出

while(pstack->top > 0)

{

num = popStack(pstack);

printf("%d", num);

}

printf("\n");

}

return 0;

}

void initStack(struct stack *s)

{

s->top = 0;

}

void pushStack(struct stack *s, int data)

{

if(s->top < max_size + 1)

{

s->data[s->top ++] = data;

}

}

int popStack(struct stack *s)

{

if(s->top > 0)

{

return s->data[-- s->top];

}

}0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值