一道考研题目,看看你的水平
下图显示的是算术除法算式的竖式写法,请使用C语言并运用递归的方法编写程序,用户在程序运行开始的时候可以通过键盘输入被除数和除数,程序检验输入的的是否是正整数,以及除数不可为零,然后输出除法的竖式结果,输出格式模仿给出的例子。程序中应含有作为解释性文字的注释。
7 6
=======
2 3)1 7 5 2
1 6 1
-------
1 4 2
1 3 8
--------
4
问题点数:20、回复次数:26Top
1 楼xteaj(半桶水)回复于 2004-09-03 22:14:06 得分 0
要是哪个学校用这道题来考我,我宁愿不读这个学校的研究生!Top
2 楼heasonjiao(峰回路转)回复于 2004-09-03 22:17:48 得分 0
我去试试先Top
3 楼fanbest(座天使长)回复于 2004-09-03 22:18:13 得分 0
难度一般而已.
不算考研的经典例题Top
4 楼liacw1017(梁上君子)回复于 2004-09-03 22:23:08 得分 0
如果在int的範圍内,應該還可以拉,如果數字太大,
是不是先用/和%算出結果,然後打印就可以了,那不難啊Top
5 楼Zark(金陵五月)回复于 2004-09-04 02:12:01 得分 0
这题目的难度的确一般. 为了"多快好省地建设CSDN",仅提供思路如下:
由于答数必须首先打印,所以有二个解决方法:
1.投机法, 先用"/"和"%"算出其答数和余数,这样就可以顺利地打印第一行,其空格数为被除数长度+除数长度+1-答数的长度.然后做一递归法求答数的函数,实际上是一个求中间结果(如161,138)的函数,然后在逐次递归时打印中间结果,好处是有利于计算空格数.
2.实干法,做一个二维字符数组存储所有的屏幕输出,这样就不用投机地先计算答数了,如上面方法一样,做一递归函数计算中间结果及答数/余数,每次的中间结果写入数组中,最后打印结果.
Top
6 楼wegotnothingtolosebu(t this is a dirty joke...)回复于 2004-09-04 05:12:27 得分 0
考研这么容易啊?早知道就先不娶老婆了!!!Top
7 楼Daviescai(小蔡)回复于 2004-09-04 09:03:14 得分 0
比小学考初中容易多了。Top
8 楼HickMars(山鸡)回复于 2004-09-04 09:05:09 得分 0
果然很有学校的感觉Top
9 楼HickMars(山鸡)回复于 2004-09-04 09:07:36 得分 0
回复人: Daviescai(小蔡) ( ) 信誉:100
考研这么容易啊?早知道就先不娶老婆了!!!
有老婆还是可以考研的
带老婆读研,不要太爽阿
Top
10 楼new_c()回复于 2004-09-04 12:58:36 得分 0
恩 zark的解释很清楚Top
11 楼xczjl(偶的DD比我长)回复于 2004-09-04 13:01:28 得分 0
还是没有人公布答案啊!
我想知道啊!Top
12 楼purple_monday()回复于 2004-09-04 13:09:26 得分 0
这个是哪个学校的题阿Top
13 楼iamyangfan(小帆)回复于 2004-09-04 13:12:24 得分 0
不懂Top
14 楼suifengxing()回复于 2004-09-04 13:49:52 得分 0
给我们考研的增长信心啊Top
15 楼zwzzj(独学而无友,则孤陋而寡闻. )回复于 2004-09-04 14:31:30 得分 0
看来我的前途一片光明啊~~~~~~~~~~~~~~Top
16 楼bm1408(向va_list学习~不用VC好多年~)回复于 2004-09-04 15:40:49 得分 0
北京理工的题目吧!Top
17 楼skyhero(醉倚斜栏听风雨)回复于 2004-09-04 18:24:52 得分 8
我的答案,算抛砖引玉吧,大家看了别笑!
//////////func.h//////////
#ifndef __FUNC_H
#define __FUNC_H
#include <stdexcept>
using namespace std;
typedef struct
{
int quotient;
int residual;
} div_result;
void func_div(div_result &,int,int) throw(exception);
#endif //__FUNC_H
//////////func.cpp//////////
#include "func.h"
void func_div(div_result &result,int dividend,int divisor) throw(exception)
{
if(divisor==0)
throw exception("***Error***: divided by zero");
if(dividend<0)dividend=0-dividend;
if(divisor<0)divisor=0-divisor;
if(dividend/10>=divisor)
{
func_div(result,dividend/10,divisor);
dividend=dividend%10+result.residual*10;
}
result.quotient=result.quotient*10+dividend/divisor;
result.residual=dividend%divisor;
}
//////////main.cpp//////////
#include "func.h"
#include <iostream>
int main()
{
div_result result;
result.quotient=0;
result.residual=0;
int dividend,divisor;
cout<<"Dividend==?,Divisor==?";
cin>>dividend>>divisor;
try
{
func_div(result,dividend,divisor);
}
catch(exception &e)
{
cerr<<e.what()<<endl;
exit(1);
}
cout<<dividend<<" div "<<divisor
<<": quotient=="<<result.quotient
<<", residual=="<<result.residual<<endl;
return 0;
}
Top
18 楼skyhero(醉倚斜栏听风雨)回复于 2004-09-04 18:26:53 得分 0
不好意思,没注意到要打印过程,汗~~~Top
19 楼JianZhiZG(健之)回复于 2004-09-04 20:20:17 得分 4
来一个“斜”的解法
#include<iostream.h>
#include<stdlib.h>
void main()
{
int m, n,k=2,i;
char s[20],*p=s;
cout<<"请输入被除数:"; cin>>m;
cout<<"请输入除数:"; cin>>n;
p=_itoa(m/n,s,10);
cout<<"\t"<<m/n<<"\n";
cout<<"\t---------------\n";
cout<<n<<"\t) "<<m<<endl;
for(;*p;p++)
{
if(*p!='0')
{
cout<<"\t";
for(i=0; i<k; i++) cout<<" ";
cout<<n*(*p-'0')<<endl;
}
k++;
}
}
Top
20 楼JianZhiZG(健之)回复于 2004-09-04 21:33:23 得分 8
再来一个递归算法的,不过格式还是没有仔细考虑
#include <iostream.h>
#include <math.h>
void go(int m,int n)
{
int d=m,i=0;
while(d/10>n) {d/=10;i++;}
cout<<"\t "<<m<<endl;
cout<<"\t "<<d/n*n<<endl;
cout<<"\t--------------\n";
m = m-(d/n*n*pow(10,i));
if(m>=n) go(m,n);
else cout<<"\t "<<m<<endl;
}
void main()
{
int a,b;
cin>>a>>b;
cout<<"\t"<<a/b<<endl;
cout<<b<<"\t)----------\n";
go(a,b);
}
Top
21 楼xpzheng(快放假了)回复于 2004-09-04 22:23:39 得分 0
reTop
22 楼fengyvn(我菜我自在)回复于 2004-09-05 03:39:16 得分 0
这只是专业课的考题.通常专业课考得都不太难,难的是数学,英语,政治三门基础课.
楼上那些说简单的,你们去看看数学考题.计算机专业考数学一.
Top
23 楼shmily198(杨琴)回复于 2004-09-05 08:14:49 得分 0
华为火热招聘
咨询电话:13510248216
时间: 历时一个月(平均每人4~5天)
招聘方式:
1. 内部推荐
2. 网上搜索
搜索主要条件:
更新日期: 一天内
意向岗位: 程序员/软件工程师
意向工作地:深圳
原工作地: 不限
酬薪: 2000~9000(包括面议)
年龄: 20~30
工作经验: 主要有C/VC开发经验
注:名字、联系方式已经显示的是已被登入华为人才库,不用再注意。
1. 将搜索的资料登入华为人才库。
http://huawei.com/NASApp/hr/myresume/stepone.jsp
填写资料注意项:
应聘意向:研发类,软件开发
应聘职位:软交换通信工程师
这个是错误的
推荐方式:内部推荐
推荐部门:研发类,中研
2. 将搜索的资料登入中研招聘工作库(szap33-ds)
1) 公司内所有员工均可使用此数据库创建应聘信息,应聘信息文档被首次保存后
将自动关闭,同时刷新创建时间,除“处理信息业务部”、“处理信息研究部”、
“应聘人联系电话”、“简历”外,该文档的创建人将失去对其他内容的修改权限但保留随时查看处理状态的权限。
2)填写真实姓名,中文名用简体字,英文名名在前、姓在后并以一个空格分开。通过重名提示判断创建信息是否重复,同一人信息不得重复录入。
3)现所在省市为应聘者目前居留地,除北京、上海、南京、深圳只填城市名外,其他均填省名和市名,但不含省、市字样,包括重庆和天津,如“四川重庆”。
4)现工作单位、毕业院校均填写全称。
5)员工推荐的信息,渠道选“推荐”;网络下载的信息,渠道选“网络”;应聘者主动投简历或参加招聘会或从“华为电子流”获得的信息,渠道选“自荐”。如渠道选网络,来源就选网站名称,如渠道选自荐,来源就选获得信息的方式或媒体。
6)如创建人为中研员工,提供信息部门及处理信息部门均填写本人所在部门;如创建人非中研员工 ,提供信息部门选“技术支援部、中间实验室、市场部或中研外其他部门,处理信息部门选“中研内其他部门”。
7)标记“*”号的条目为必填项。
填写资料注意项:
提供信息部门:核心网业务部 固定软交换开发部
处理信息部门:核心网业务部 固定软交换开发部
提交信息时请选择“提交研究部接口人”而不是“业务部接口人”
您业可以直接联系负责人:杨琴,工号:39507,13510248216
Top
24 楼longleaver(易水寒)回复于 2004-09-06 11:52:52 得分 0
这道题目还是很难的吧。Top
25 楼junmayang(笨猪)回复于 2004-09-06 12:44:31 得分 0
学习Top
26 楼orthodox(百分百纯咖啡)回复于 2004-09-09 16:37:30 得分 0
扬琴 发这个是做什么的?
Top




