关于牛客、赛码、测评等考试平台的前端输入输出的整理

您所在的位置:网站首页 赛码网怎么查看笔试结果 关于牛客、赛码、测评等考试平台的前端输入输出的整理

关于牛客、赛码、测评等考试平台的前端输入输出的整理

2023-12-16 23:25| 来源: 网络整理| 查看: 265

 

编程题总结:

1、首先要理清题意,理清思路,给出的条件都是有用的,没用到肯定有问题;

2、最好先要总结规律,看一下可能出现的情况有哪些特例;

3、要仔细是否有语法错误;!!!!!!

4、分清功能点,一点一点的验证。 

 

1、牛客网上边的编程题的输入输出:node V0.12.12 环境下

多行输入: 

//多行的输入 process.stdin.resume(); process.stdin.setEncoding('ascii'); var input = ""; var input_array = ""; process.stdin.on('data', function(data){ input += data;//这里的data保存的是以换行\n所有的加起来的一个字符串 }); //如下表示每个用例有三行的时候的结果 //注意:假如有数组的时候,数组内保存的是字符串形式,需要添加 + 来转化成真正的数字。//以回车来分割 //到这个地方会把每行都当成一个字符串保存到一个数组中去,数组的最后一项是一个空字符"", //所以按照题目给定,依次把数组的元素赋值给变量就行了 //这里就要观察所给用例的特征了,依次来进行输出 process.stdin.on('end', function (){ input_array = input.split("\n"); //以回车来分割的 var line_1 = input_array[0]; var line_2 = input_array[1]; var line_3= input_array[2]; console.log(line_1); });

如下实例:

//假如输入是如下的 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 //那么读取进来的时候的input_array如下 [ '15', '1 2 3 4 5 6 7 8 9 10 11 12 13 14 15', '' ] 一个包含三个字符串的数组 //typeof测试为string //切割中间的字符串得到一个数组,但是数组的元素类型依然为字符串 单行的情况就只取input_array[0];

如下便于做题的时候抄上去:

process.stdin.resume(); process.stdin.setEncoding('ascii'); var input = ""; var input_array = ""; process.stdin.on('data', function(data){ input += data; }); process.stdin.on('end', function (){ input_array = input.split("\n"); var line_1 = input_array[0]; var line_2 = input_array[1]; var line_3= input_array[2]; //这里分析出填入的参数 console.log(func(p1,p2,,,,));//输出结果 }); //这里是处理函数 function func(p1,p2,,,,){ }  单行输入的另一种方法: //参考判题系统,但是只能读取单行的输入 var readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.on('line', function(line){ var tokens = line.split(' '); console.log(parseInt(tokens[0]) + parseInt(tokens[1])); });

对于赛码网可能真的不适合用js来编写,那别人通过的代码贴到输入里面,结果是不通过,不懂为何,还有就是,这些题能不能用js来做都是个问题。连着做了四五场考试了,本地测试的代码都能通过,线上就是不通过,也不知道时输入输出的问题,还是真的是我编写的程序的问题。

我的理解是这个网站的js,每次调用一次read_line()函数,就会读取一样,当行数已知的时候直接调用相同的次数就可以获得字符串形式的参数。

输出使用print() 函数,每次输出一行,自动换行,如果结果是一行由空格隔开的情况就把结果放到一个数组中,然后调用arr.join(" ");可以输出。

如果输出为一次输入多行输出,就需要循环调用print(); 来输出。

不知道理解的对不对,反正现在很多题根本就没法用js来操作,或者有的时候可能是内部环境有一些方法不允许使用,然后,就会导致错误。

2.1、赛码网单行输入:(程序执行一次,读取一行) var line; while(line = read_line()){ line = line.split(' '); print(parseInt(line[0]) + parseInt(line[1])); }  2.2、赛码网的两行输入:(函数执行一次,读取两行),使用+或者parseInt()可以将读取的字符串型转为数值型。

var first_line = read_line();//字符串型的,如果是数字需要转换var arr = [];var line;while(line= read_line()){   arr.push(line);//把后边的每一行都当作一个字符串,作为数组的元素填入数组中,这样就可以操作了} print(fn());

 同理三行的时候,判断与之前行的特征的不同,判断出来保存到一个值当中。

 直接这样也是可以的: var str1 =read_line().trim(); var str2 =read_line().trim();  牛客网的答案实例:(要仔细分析,很多时候都是输入输出的问题) 1、水仙花的问题

问题描述:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。现在要求输出所有在m和n范围内的水仙花数。

输入:(特点:单行,两个值)输入数据有多组,每组占一行,包括两个整数m和n(100



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3