(请教)两个某公司的笔试题...

Cedric_11 2008-04-06 09:54:53
1.已知一个顺序文件A,格式如下:
① REC-KEY 数字型8位 (前零补足)
② REC-SUBKEY数字型2位 (前零补足)
③ REC-NAME 文字型8位 (后空格补足)
其中①②为主键,已按升序排列,每条数据以回车换行符结束.请做以下操作并对所有分支进行测试.
从头至尾一行一行读文件,将①相同的每一组数据的第一条输出到文件B,并且将③为数字的数据输出到顺序文件C.在读之前,需要一个询问,读完之后,将A的输入数据行数,B、C的输出数据行数输出到顺序文件D.
例:顺序文件 A
0000000101AAAAAAAA
0000000102AAAAAAAB
0000000103AAAAAAAC
000000010412345678
顺序文件 B
0000000101AAAAAAAA
顺序文件 C
000000010412345678
顺序文件 D
A的输入行数=4,不但输出行数=1,C的输出行数=1


2.一个年级有N个班,一个班有M个学生,统计学生5科成绩的平均成绩,
A.打印每班平均成绩85分以上者的各科成绩和平均成绩,
B.打印每班的班总平均成绩和各科平均成绩.
10>N>2,60>M>5
输入文件格式 (用.txt不能用数据库文件)
排成升序的顺序文件(班单位中无顺序)中有每个学生的成绩5科.
学校CODE(10位数字)、学校名、年级(1,2,3)、班号(1,2,3,4...)、学号(6位数字)、姓名,语文、数学、物理、化学、生物
例:
5101030027 第二十七中 11103456 张云山 100100100100099
5101030027 第二十七中 11103457 王武卿 100100100072100
.......
5101040081 第八十一中 23103456 李斯林 088089077066099
.......
.......

由于小弟是新手.完全摸不着头绪..
希望会做的高手简单的指点下该从哪里入手?.该怎样思考?.
...全文
187 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
王集鹄 2008-04-07
  • 打赏
  • 举报
回复
第一题如果理解没有错的话,参考如下代码:
private struct REC
{
public int KEY;
public int SUBKEY;
public string NAME;
public override string ToString()
{
return string.Format("{0:00000000}{1:00}{2,-8}", KEY, SUBKEY, NAME);
}
}

private void recordToFile(List<REC> records, string filename)
{
StreamWriter vStreamWriter = new StreamWriter(filename,
false, Encoding.Default);
foreach(REC record in records)
vStreamWriter.WriteLine(record);
vStreamWriter.Close();
}

private void button1_Click(object sender, EventArgs e)
{
#region 读取记录
List<REC> recordsA = new List<REC>();
List<REC> recordsB = new List<REC>();
List<REC> recordsC = new List<REC>();
StreamReader vStreamReader = new StreamReader(@"c:\a.txt", Encoding.Default);
int existsKey = -1;
string vLine = string.Empty;
while ((vLine = vStreamReader.ReadLine()) != null)
{
REC record = new REC();
if (vLine.Length >= 8)
int.TryParse(vLine.Substring(0, 8), out record.KEY);
if (vLine.Length >= 10)
int.TryParse(vLine.Substring(8, 2), out record.SUBKEY);
record.NAME = vLine.Substring(10, vLine.Length - 10).TrimEnd(); // 去掉后补空格
if (recordsA.Count > 0 && existsKey != record.KEY && // KEY没有记录过
record.KEY == recordsA[recordsA.Count - 1].KEY) // 添加的记录Key已经存在
{
recordsB.Add(recordsA[recordsA.Count - 1]);
existsKey = record.KEY;
}
int i;
if (int.TryParse(record.NAME, out i))
recordsC.Add(record);

recordsA.Add(record);
//Console.WriteLine(record);// 调试用
}
vStreamReader.Close();
#endregion 读取记录
recordToFile(recordsB, @"c:\b.txt");
recordToFile(recordsC, @"c:\c.txt");
StreamWriter vStreamWriter = new StreamWriter(@"c:\d.txt",
false, Encoding.Default);
vStreamWriter.WriteLine(
string.Format("A的输入行数={0},B的输出行数={1},C的输出行数={2}",
recordsA.Count, recordsB.Count, recordsC.Count));
vStreamWriter.Close();
}


第二天描述不清楚就不写了,基本可以和第一题的方法一样。
Cedric_11 2008-04-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sjm2003 的回复:]
0000000101AAAAAAAA
0000000102AAAAAAAB
0000000103AAAAAAAC
000000010412345678

不是很清楚你的题目的意思,但是,按照你的题目,应该是:B 取 A后面8位都相同的行 ,C取A后面全是数字的行

将A的输入数据行数,B、C的输出数据行数输出到顺序文件D ,D为A,B,C的总数据

D数据
0000000101AAAAAAAA
0000000101AAAAAAAA
0000000102AAAAAAAB
0000000103AAAAAAAC
000000010412345678
000…
[/Quote]


D文件只需要列出 A,B,C文件的输入或者输出列数就行勒,而不是ABC的总数据。
Cedric_11 2008-04-07
  • 打赏
  • 举报
回复
也许读懂题目就不会感觉困难勒..

晚上来散分.
viki117 2008-04-07
  • 打赏
  • 举报
回复
为什么要后空格补足。。。空格这东西很暧昧。。
sjm2003 2008-04-07
  • 打赏
  • 举报
回复
第二个题目摆明的要你用filestream流去操作
sjm2003 2008-04-07
  • 打赏
  • 举报
回复
2.一个年级有N个班,一个班有M个学生,统计学生5科成绩的平均成绩,
A.打印每班平均成绩85分以上者的各科成绩和平均成绩,
B.打印每班的班总平均成绩和各科平均成绩.
10>N>2,60>M>5
输入文件格式 (用.txt不能用数据库文件)
排成升序的顺序文件(班单位中无顺序)中有每个学生的成绩5科.
学校CODE(10位数字)、学校名、年级(1,2,3)、班号(1,2,3,4...)、学号(6位数字)、姓名,语文、数学、物理、化学、生物


5101030027 第二十七中 11103456 张云山 100100100100099 99分 班号 3456 学号100100

5101030027 第二十七中 11103457 王武卿 100100100072100 100分 班号 3457 学号 100072
cxfcxf8 2008-04-07
  • 打赏
  • 举报
回复
首先是怎么读txt文件。
读出来后,把字符串转化成需要的整数。(用string中的一些函数。如果不行就用正则表达式)
然后按照要求对这些整数进行处理。排序时可以用泛型的sort()函数。
sjm2003 2008-04-07
  • 打赏
  • 举报
回复
① REC-KEY 数字型8位 (前零补足)
② REC-SUBKEY数字型2位 (前零补足)
③ REC-NAME 文字型8位 (后空格补足)


0000000101AAAAAAAA 该8位为REC-KEY
0000000101AAAAAAAA 该2位为REC-SUBKEY
0000000101AAAAAAAA 该8位为REC-NAME

嘿嘿,乱搞!


sjm2003 2008-04-07
  • 打赏
  • 举报
回复
0000000101AAAAAAAA
0000000102AAAAAAAB
0000000103AAAAAAAC
000000010412345678

不是很清楚你的题目的意思,但是,按照你的题目,应该是:B 取 A后面8位都相同的行 ,C取A后面全是数字的行

将A的输入数据行数,B、C的输出数据行数输出到顺序文件D ,D为A,B,C的总数据

D数据
0000000101AAAAAAAA
0000000101AAAAAAAA
0000000102AAAAAAAB
0000000103AAAAAAAC
000000010412345678
000000010412345678

不知道是不是这样
zxl1102003 2008-04-07
  • 打赏
  • 举报
回复
就像楼上说的,这两个题都是考你字符串的掌握,其实题并不难,主要是看懂
思路:
先用流读取一行字符串,再将字符串拆分,用IndexOf 和 Substring方法或用正则也可以,(建议最好先建一个类根据字符串的特征),将拆分的字符串依次存放集合,并进行实现要求的功能,在用流写入到文件(按要求的格式即可)
zdjray 2008-04-07
  • 打赏
  • 举报
回复
要求说的很清楚,照着做就可以了
用String的IndexOf 和 Substring等方法
Cedric_11 2008-04-06
  • 打赏
  • 举报
回复
希望明天早晨起来,有人帮助下小弟..

只要涉及一点思路的都给分..
Cedric_11 2008-04-06
  • 打赏
  • 举报
回复
看来是没人收分勒..

不需要给出代码,只需要给些提示和思路就OK勒..
wuxiaolong039 2008-04-06
  • 打赏
  • 举报
回复
本人才疏学浅,不好意思啊
Cedric_11 2008-04-06
  • 打赏
  • 举报
回复
高手都跑哪里去啦?..
Cedric_11 2008-04-06
  • 打赏
  • 举报
回复
没高手来看下么?..

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧