您的位置:首页 > 职场人生

某公司面试试题答案

2005-07-04 11:38 260 查看
小写转大写金额存储过程[SQL SERVER]

一、写一个程序,语言不限,打印出100的阶乘(即1*2*3*…*100)。

答案:

/// <summary>
/// 定义每个数组存储的最大值
/// </summary>
const int UNIT=100;
/// <summary>
/// 定义数组的最大位置
/// </summary>
static int count=1;

/// <summary>
/// 阶乘方法
/// </summary>
/// <param name="n">输入的阶乘数</param>
public static void Factorial(int n)
{
///分配临时空间
int[] array=new int[100];
///初始化数组0位的值
array[0]=1;
count=1;
while(n>0)
{
Dohandle(array,n);
n--;
}
Console.WriteLine("Count="+count);
///打印数据
Console.Write("结果=");
for(int i=count;i>-1;i--)
{
Console.Write(array[i].ToString("00"));
}
//结果
=933262154439441526816992388562667004907159682643816214685929638952175999932
2991560894146397615651828625369792082722375825118521091686400000000000000000
0000000
}
/// <summary>
/// 处理阶乘
/// </summary>
/// <param name="array">数组</param>
/// <param name="n">要乘的数</param>
private static void Dohandle(int[] array,int n)
{
for(int i=count;i>-1;i--)
{
array[i]*=n;
///如果超出最大存储的值
if(array[i]>UNIT)
{
//进位
array[i+1]+=array[i]/UNIT;
array[i]=array[i]%UNIT;
///count记住数组最大位置
if(i>=count)
{
count=i+1;
}
}
}
}

二、写一个程序,语言不限,能将人民币金额从阿拉伯数字转换为大写汉字表示。例如,把1234.56转换为壹仟贰佰叁拾肆圆零伍角陆分。

答案:

/// <summary>
/// 转换money
/// </summary>
/// <param name="money">输入money</param>
public static void TransformMoney(string money)
{
///定义大写数组
string[] odxc={"分","角","圆","拾","佰","仟","万","拾","佰","仟
","亿","拾","佰","仟","万","拾","佰","仟","亿"};
string[] odxs={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖
"};
string result="";
//舍去小数点两位
Decimal temp=Convert.ToDecimal(money);
money=temp.ToString(".00");
//除去小数点
money=money.Replace(".","");
int len=money.Length;
if(len>odxc.Length)
{
Console.WriteLine("error:超过最大金额");
return;
}
//转换大写
for(int i=0;i<len;i++)
{
int v=Convert.ToInt32(money.Substring(i,1));
result+=odxs[v]+odxc[len-i-1];
}
Console.WriteLine(result);
//if(dot+2)
}

三、在SQL Server 数据库中,有一个表StudentAchievement(学生成绩),它有三个字段:StudentID(varchar(8),学生编号),CourseID(varchar(10),课程编号),Achievement(int ,成绩),写一条SQL语句,筛选出每门课程的前两名的学生编号,课程编号,成绩并排序。

答案:

Select CourseID, Achievement, StudentID from StudentAchievement a

where StudentID in(select top 2 b.StudentID from StudentAchievement b

where b.CourseID=a.CourseID order by Achievement desc)

order by courseid, Achievement desc

四、编程实现求出若干个整数之和为500的连续整数(如98,99,100,101,102),所有组合。

public static void NumberSum(int num)
{
for(int i=1;i<num;i++)
{
int result=0;
int start=i;
while(result<num)
{
result+=start;
start++;
}
///判断结果等于num
if(result==num)
{
while(start>=i)
{
Console.Write(start +" ");
start--;
}
Console.WriteLine();
}
}
}
//结果:33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14
13 12 11 10 9 8
// 67 66 65 64 63 62 61 60 59
// 103 102 101 100 99 98
}

五、谈谈你对多层架构的认识(限150字)。
N层架构是将应用程序分成多个独立的逻辑部分,利用分层的方式处理复杂的系统。层
次系统要求上层可使用下层的功能,而下层是不能使用上层的功能。主要优点:透明和
封装;高内聚、低耦合;易于扩展、维护和重用;人员易分工。缺点:效率低;开发难
度大。
通常做法是三层:Web表述、业务、数据访问,扩展:Web、业务外观、业务规则、数据
访问、实体层、组件等层次。

六、谈谈你对面向对象的认识(限150字)。
对象是建立面向对象程序所依赖的基本单元。所谓对象就是一种代码的实例,这
种代码执行特定的功能,具有自包含或者封装的性质。这种封装代码通常叫做类、对象
类 。优点是:对象可重用性、可继承。每个对象中可有下列成员:构造、析构、方
法、属性、变量、事件、委托、索引。
面向对象基础主要有 抽象、封装、多态、继承 、 接口 这些概念
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: