有关程序输出格式是什么意思的问题?

身份认证 购VIP最低享 7

领优惠券(最高得80元)

现在很多大学都使用在线OJ给学生布置编程作业,甚至考试。理由有二:为基础进行说明。

我们以下题为例进行说明。该题要求从键盘以固定格式读入人的体重,身高,计算BMI, 然后根据不同的BMI值,给出判定结果,判定结果应为超轻/标准/超重/肥胖之一。

当答题者提交程序后,OJ会在服务器上使用你选择的编译器编译并运行答题者提交的程序,并:

  1. 将命题者设定好的测试输入提供给答题者的程序作为输入(答题者程序通过input()函数获取这些输入)。
  2. 获取答题者程序的输出(通常是答题者程序通过print()函数输出的),并将该输出与命题者提供的标准答案进行比较,如果完全一致,则判定该测试点通过,否则判定失败。
  3. 观察答题者程序的内存消耗,运行时间等情况,如果超出设定,即判错。

在该题中,命题者设置了两个测试点,分别是:

说明:测试点的输入及输出答题者在OJ网站上是看不到的,如果答题者能够看到测试输入和输出,则可以造假。

我们编写了下述程序并提交:

OJ将两次运行我们提交的程序,提供输入并检查输出,检查后认为程序得到了正确的执行结果,判定为通过/答案正确。

部分新手认为程序的输入“固定”为题目中的输入示例,直接将输入固化在程序中,如下述程序中的第1行。

这种程序将会被OJ判错。程序的输入一定要用input()函数读取

在下述程序中,答题者在input()函数中提供了提示字符串:”请输入体重,身高:”。从程序设计角度,这种做法很体贴,很好,但OJ是机器,它会将该提示字符串视为程序输出的一部分,然后发现程序输出与设定的标准输出不一致,判你错。

3.3 输出格式不符合要求

下述程序中,答题者画蛇添足地在print()函数中增加了“诊断结果:”这几个字。如果是老师人肉判题,不会认为这是错误,但OJ是机器,它管程序的输出与设定的输出是否完全一致。 然后,你就被判错了。

答题时,一定要确保程序的输出内容与要求的格式完全相同,包括内部的空格,空格个数,中英文符号等。必要情况下,应从输出示例中复制相关内容。

不要直接在OJ中编写代码! 应该先在Visual Studio Code、PyCharm这类IDE环境中编写,调试,测试无误后再提交给OJ判题。在进行测试时,肯定要将题目的输入示例作为输入进行测试,观察程序输出是否与输出示例一致! 但这不够,命题者在后台设置的测试点可能十分变态和极端,答题者应自行考虑各种极端输入,并通过测试来验证程序的正确性。

程序的每一次运行,都会在结束后向操作系统报错一个值,如果该值为0,意思是说我刚才运行得很成功,很愉快! 如果该值非0,即意味着程序异常退出。对于Python程序而言,非零返回即意味着你的程序在服务器端的运行发生了异常, 在得到结果前就中断退出了。

答题者通常感到奇怪,说我的程序我运行过了呀,输入样例输入,可以得到样例输出。 要知道,你的测试,仅能证明程序在该特定输入下正确,并不能证明在所有合法输入下都能正确执行。

老老实实检查程序,查找缺陷和错误!

函数题并不是要求答题者提交一个完成的程序,它只要求答题者提交一个或多个函数的定义。这些函数接受题目规定的输入,然后返回符合题目要求的值。

同样地,在答题者提交了函数代码之后,OJ会将函数代码与裁判测试程序合并(在裁判测试程序中,你的函数将会被调用),然后在服务器上执行,提供输入,并观察程序的输出是否与设定完全一致,从而间接判断你编写的函数代码是否正确。

实践中,答题者可以将裁判测试程序复制到Visual Studio Code这类的IDE中,再补充编写函数代码,并进行测试。如下图:

  1. 在测试通过后,仅提交函数定义部分(本例中为1-5行),而不是整个程序。

  2. 函数应使用return返回结果,而不是print。


【任务要求】 假设一个班级有若干学习小组,每组有4位同学。期中考试后,老师将对学生的考试成绩进行分析,需要计算出每个学习小组的平均分和总分,然后将处理结果显示出来。 任务实现效果演示 例题源代码:ave1.c 相关知识 1 数据的输出 1 数据输出 1.1 字符输出函数 putchar() [例1]在屏幕上显示字符‘A’ 。 putchar() [例2]在屏幕上显示单词 。 1 数据输出 1.2 格式输出函数 printf() 格式控制字符串(1) 格式控制字符串(2) 输出格式字符串(3) 格式输出函数练习(1) [例3]分析下面程序的输出结果。 格式输出函数练习(2) [例4]分析下面程序的输出结果。 课堂练习 [例5]分析下面程序的输出结果。 任务实现 本讲小结 重点学习了putchar()和pirntf()函数。 重点学习了printf()函数的格式控制字符串的书写格式。 课堂练习题 思考题 教材P35,一、填空题、选择题 教材P36,二、分析题 动手练习 教材P36 三、写出程序运行结果(1-3) 四、编写程序题(1-2) 【任务要求】 假设一个班级有若干学习小组,每组有4位同学。期中考试后,老师将对学生的考试成绩进行分析,需要计算出每个学习小组的平均分和总分,然后将处理结果显示出来。 任务实现效果演示 例题源代码:ave2.c 相关知识 1、字符输入 1.1 字符输入函数 1、字符输入 [例1]从键盘上输入一个字符,然后显示出来。 1、字符输入 1.2 字符输入函数 2、格式数据输入 2.1 格式输入函数 scanf() 输入格式字符串(1) 输入格式字符串(2) 2、格式数据输入 2、格式数据输入 格式输入函数的几点说明 课堂练习 [例2]分析下面程序的输出结果。 课堂练习 [例3]分析下面程序的输出结果。 课堂练习 [例4]从键盘输入一个小写字母,要求在屏幕上输出对应的大写字母。 任务实现 本讲小结 重点学习了getchar()和scanf()函数。 重点学习了scanf()函数的格式控制字符串的书写格式。 课堂练习题 思考题 教材P35,一、填空题、选择题 教材P36,二、分析题 动手练习 教材P35 三、写出程序运行结果(4-5) 四、编写程序题(3-5) 【项目要求】 假设一个班级分为若干学习小组,每组有4位同学。期中考试后,老师将对学生的考试成绩进行分析,需要计算出每个学习小组的平均分和总分,然后将处理结果显示出来。 问题情境及实现 假设一个班级分为若干学习小组,每组有4位同学。期中考试后,老师将对学生的考试成绩进行分析,需要计算出每个学习小组的平均分和总分,然后将处理结果显示出来。 考虑到成绩取值范围在0~100之间,一般平均分会取2位小数,所以可以将表示各个学生成绩及总分的变量类型设为基本整型,而将表示平均分的变量类型设为单精度类,且在输出平均分时取2位小数。 实现源代码: main() { int a1,a2,a3,a4,sum; float ave; printf(“请输入本小组4位同学的成绩:\n”); scanf(“%d%d%d%d”, 1 顺序结构程序举例 作业 思考题 教材P60,一、填空题 教材P61,二、选择题 教材P62,三、分析题 作业 教材P63 编程题(3,4,5) 算法分析举例(1) 例1: 算法分析举例(2) 例2:输入10个数,要求找出其中最大的数. 算法分析举例(3) 例3 求1至100之间全部奇数之和。 引例(4) 分析求n个数的平均值的算法 引例的程序实现 引例:从键盘输入一个小写字母,要求在屏幕上输出对应的大写字母 ①scanf函数中要求给出变量地址,而不是变量名。 scanf("%d",a); × scnaf("%d",&a); √ ②在输入字符数据时,空格字符和“转义字符”都作为有效字符处理。 scanf(“%c%c%c”,&c1,&c2,&c3); 则把‘a’赋予c1,‘ ’赋予c2,‘b’赋予c3

我要回帖

更多关于 程序输出格式 的文章

 

随机推荐