文章

63

粉丝

0

获赞

0

访问

2.5k

头像
2018年计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年10月13日 14:17
阅读数 45

(1)将数组a从大到校排序,先找到第一个正整数的位置,正整数应该是1,2,3,4,5....如果有哪个整数没有则输出为未出现的最小正整数

(2) int f(int a[]){

            sort(a,sizeof(s));

            for(int i=0;i<sizeof(s);i++){

                 if(a[i]>0)break;

              }

        int j=1;

          for(;i<sizeof(s);i++){

while(a[i+1]==a[i])i++;   //若有相同的数字,则跳到最后一个相同的数字

if(a[i]!=j)rentun j;

j++;

}

(3)时间复杂度:O(n)

  空间复杂度:O(1)


评分及理由

(1)得分及理由(满分3分)

得分:1分

理由:学生提出了排序后遍历查找的思路,基本方向正确,但设计思想描述不够清晰完整。没有说明如何处理重复元素和连续正整数的匹配逻辑,也没有考虑所有正整数都出现时返回n+1的情况。相比标准答案的原地哈希法,这种方法虽然可行但效率较低。

(2)得分及理由(满分8分)

得分:3分

理由:代码存在多处严重问题:
1. sizeof(s)使用错误,s未定义
2. 排序函数调用格式错误,缺少必要的头文件和参数
3. 变量i的作用域问题,第一个循环结束后i的值在第二个循环中使用
4. while循环中i++可能导致数组越界
5. 缺少处理所有正整数都出现时返回n+1的逻辑
6. 代码语法错误(rentun应为return)
7. 代码不完整,缺少函数结束的大括号

虽然整体思路方向正确,但代码实现存在大量逻辑错误和语...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发