You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言数组查找唯一元素编译报错求助:expected expression

问题修复与代码优化

编译错误的直接修复

你调用uniqueElements时写的arr[]是错误写法——C语言中传递数组参数只需写数组名arr,不需要加[]。

其他隐藏问题及修复

  1. 变量n未初始化:你定义了int n;但未赋值,数组长度固定为10,必须把n初始化为10,否则函数使用未初始化的n会导致程序行为异常。
  2. 函数返回值不合理:uniqueElements的作用是打印唯一元素,不需要返回int类型值,应把返回类型改成void,同时去掉调用时的赋值语句。
  3. 逻辑错误导致功能失效:原函数里只要找到一个重复元素就直接return 0,会让函数提前退出,无法遍历整个数组找出所有唯一元素,必须删掉这个提前返回的语句;另外可以在找到重复后加break,避免不必要的比较。

修复后的完整代码

//Unique Elements Finder : Implement a C function to find all unique elements in an array.

#include <stdio.h>
#include <stdlib.h>

// 修改返回类型为void
void uniqueElements(int arr[], int n);
int main()
{
    system("clear");
    int arr[10];
    
    for(int i=0;i<10;++i)
    {
        printf("Please enter a number: ");
        scanf("%d", &arr[i]);
    }

    // 初始化n为数组长度10
    int n = 10;
   
    // 调用函数时仅传数组名arr,无需赋值给变量
    uniqueElements(arr, n);
    printf("\n\n");
    return 0;
}

// 修改返回类型为void
void uniqueElements(int arr[], int n)
{
    for (int i = 0; i < n;++i)
    {
        int isUnique = 1;
        for (int j = 0; j < n;++j)
        {
            if(i!=j && arr[i]==arr[j])
            {
                isUnique = 0;
                // 找到重复后跳出内层循环,减少不必要的比较
                break;
            }
        }
        if (isUnique)
        {
            printf("%d ", arr[i]); // 加空格优化输出格式
        }
    }
}

内容的提问来源于stack exchange,提问作者MEDOMAI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 06:43:10