下午手贱JavaScript写了个题,当然了最后也没通过,不是我代码问题,我换了三个四个浏览器,输出都没问题,但是提交OJ的判定系统就说我没有输出😢,(当然这个为题解决了,看下边)
牛客网提示没有输入输出数据
我一下午都在疑惑为什么说我没输入输出,因为牛客网的判题系统问题,JavaScript输入我用的是prompt()
,后来查了官方,官方说要用readline()
输入。😃 无语了。
- 牛客网JavaScript V8引擎是利用了readline()接收输入的每一行,该行字符数不能超过1024个。在这里readline是可以重载的,也就是说每一次调用readline()就会识别一行输入数据,多行输入其实就是写多个readline()即可。
- 牛客网输出函数用print()和console.log()都可以,但是document.write()不行哦,会提示超时。
- 其他语言的输入输出格式:https://www.nowcoder.com/discuss/276
题目
题目描述
依次输入一个学生的学号,以及3科(C语言,数学,英语)成绩,在屏幕上输出该学生的学号,3科成绩。
输入描述:
学号以及3科成绩,学号和成绩之间用英文分号隔开,成绩之间用英文逗号隔开。
输出描述:
学号,3科成绩,输出格式详见输出样例。
示例1
输入
17140216;80.845,90.55,100.00
输出
The each subject score of No. 17140216 is 80.85, 90.55, 100.00.
答案
C语言答案
当然了这个题用C语言写很简单,代码如下:
#include <stdio.h>
int main()
{
long s;
float a,b,c;
scanf("%d;%f,%f,%f",&s,&a,&b,&c);
printf("The each subject score of No. %d is %.2f, %.2f, %.2f.\n",s,a,b,c);
}
JavaScript答案
var str = readline();
var result = "The each subject score of No. "; //使用result来保存结果是因为后面的步骤中,否则控制台无法在一行中输出
var pos = str.search(";"); //找到;
result += str.slice(0, pos); //分出学号
result += " is ";
str = str.slice(pos + 1, str.length); //把学号从字符串中裁掉
var StrArray = new Array(); //定义数组
StrArray = str.split(","); //剩余部分字符串按照`,`分割
for(i = 0; i < StrArray.length; i++) { //存入数组中
StrArray[i] = +StrArray[i];
StrArray[i] = Math.round(StrArray[i] * 100) / 100.; //四舍五入
StrArray[i] = StrArray[i].toFixed(2); //保留两位小数 ,避免100.00只显示100的情况
if(i != StrArray.length - 1)
result += StrArray[i] + ",";
else
result += StrArray[i] + ".";
}
document.write(result); //网页输出 输出,二选一即可,a题过程中建议用
console.log(result); //控制台输出 输出,二选一即可,a题过程中建议用