说在前面——A12这份卷子确实特别恶心
准确来说就是超纲太多而且部分题目存在错中还错的情况,所以这一篇真的有点难做
尽最大的努力查到了知识点,希望有所帮助
20200317
经过同宿舍大佬LYchee的指点,第3、4题的bug已经成功修正,在此特别感谢我们的小仙女LYchee同学【爱你】
stack overflow——堆栈溢出的问题
网上的解释是在数组中输入的数字个数大于数组的大小
但是这里显然不是这个问题。
那么问题是什么呢?
有两个——①exit(0)缺少原型 ②不应该使用i++
①exit(0)是个什么
简单来说这玩意其实和return很像,但又不同
return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。
return是返回函数调用,如果返回的是main函数,则为退出程序 exit是在调用处强行退出程序,运行一次程序就结束
return是返回 , 函数返回 而exit是退出exit(1)表示异常退出.这个1是返回给操作系统的不过在DOS好像不需要这个返回值 exit(0)表示正常退出
啊反正我没看懂。
大概的意思是说exit是整个程序的退出,0表示正常退出,1表示异常推出。
另外exit()是一个函数,所以它是需要原型的。
它的原型在<stdlib.h>中。
②i++是错误的
因为return reverse(i++);直接进入下一个循环就没有执行++这个步骤了。所以应该改成++i。
奉上正确的代码
#include <stdio.h>
#include <stdlib.h>