Skip to content

Seventeen1Gx/CodeUp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CodeUp

本仓库为Codeup墓地中编程题详细解题代码以及必要的解析

(一些必要提示在代码注释中,带M标志的有详细解析)

本人水平有限,所以只求AC,在时间和空间上未能考虑优化。如有错误,恳请原谅。

也欢迎各位如有更好的代码和解题方案,在本仓库提出修改请求。

更新情况:已更新至题号1115

黑盒测试

网上的在线OJ系统采用的黑盒测试分为:

  • 单点(多次运行,一次运行测试一组样例)
  • 多点(一次运行,运行后循环测试多组样例)

本仓库所用网站codeup.cn采用的是多点黑盒测试。

具体分为以下类型

  1. while……EOF

题目未给出输入结束条件。

while ( scanf("&d", &n) != EOF ) {
    // To do something
}

注:函数scanf()的返回值是按照给定格式字符串正确录入缓存区的参数个数(int值)。当在录入时遇到匹配不正确的参数时,录入就直接终止,返回已正确录入的参数个数。当发现录入值是EOF时,返回也是EOF(一般其值为-1)。EOF在控制台可用ctrl+z表示。

EOF只能出现在第一个录入参数,否则程序中断。

  1. 对于字符串的输入
while ( scanf("%s", str) != EOF ) {
    // To do something
}
while ( gets(str) != NULL ) {
    // To do something
}

注:scanf()和gets()都可以用来输入字符串,但在使用上有所差别。

gets()以回车结束读取,使用'\0'结尾,回车符'\n'被舍弃没有遗留在缓冲区。gets()读到EOF或读入错误返回NULL。

scanf()以空格或回车符结束读取,结尾自动加上'\0',空格或回车符会遗留在缓冲区。

  1. while……break

题目给出了输入结束的条件,如n=0时结束输入。

  1. while ( t-- )

题目给出了测试数据的组数

常见解题错误

  1. 用scanf处理字符或字符串时,忽视遗留在缓存区的空白符。

如某题,多组输入,每组输入先输入一个字符,再输入一个整数。这样对于不是第一组输入,都要先用getchar()吸收上组输入留在缓存区的换行符。否则,输入就会混乱。

  1. C语言中,对于浮点数输入时的占位符是%lf,输出是%f。
  2. 求并集的题目,结果数组大小为求并的两数组大小之和。
  3. 大数组要在全局范围内定义。

About

Codeup.cn 算法题(C语言源代码与解析)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages