C语言数组查找最小值函数运行异常及传参问题求助
报错原因说明
你修改后的nilaiTerkecil函数中使用了inputNilai[i]的下标访问写法,但参数声明为int inputNilai是单个整型变量,并非数组/指针类型,无法执行下标运算,因此编译器会提示需要指针类型的参数。
数组作为参数传入自定义函数的方法
C语言中数组传入函数时,本质传递的是数组首元素的内存地址,形参有两种等价的声明方式:
- 指针形式声明:
int nilaiTerkecil(int *inputNilai, int inputJumlahMahasiswa) - 数组形式声明:
int nilaiTerkecil(int inputNilai[], int inputJumlahMahasiswa)
调用时直接传递数组名即可,不需要加下标,示例调用写法:kecil = nilaiTerkecil(nilaiUser, jumlahSiswa);
原有代码其他导致结果错误的问题
- 数组下标访问错误:C语言数组下标从0开始计数,你输入循环中
i从1遍历到jumlahSiswa,会越界访问nilaiUser[jumlahSiswa],触发未定义行为。 - 最小值函数逻辑错误:原有
nilaiTerkecil函数在循环第一次判断时就会执行return,不会遍历完整数组,无法正确比对所有元素得到最小值。 - 函数调用时机错误:你将
nilaiTerkecil的调用放在输入循环内部,每次输入一个值就调用一次,最终kecil存储的是最后一次输入(65)的调用结果,和预期逻辑不符,应该在所有值输入完成后再调用一次最小值函数即可。 - 函数声明不匹配:原有头部的函数声明没有指定参数列表,和后续定义的参数不匹配,需要同步修改。
- 平均值函数精度问题:两个int类型做除法会自动截断小数部分,如果需要保留小数可以将返回值改为float类型。
修正后的完整代码
#include <stdio.h> // 修正函数声明,匹配后续定义的参数列表 float nilaiRataRata(int inputRataRata , int inputJumlahMahasiswa); int nilaiTerkecil(int inputNilai[], int inputJumlahMahasiswa); int nilaiTerbesar(); int totalLulus(); int totalTidakLulus(); int main(){ int i; int jumlahSiswa; printf("Masukan Jumlah Siswa : "); scanf("%d", &jumlahSiswa); // 声明数组 int nilaiUser[jumlahSiswa]; int jumlahNilai = 0; int kecil; // 输入所有值,下标从0开始 for(i = 0; i < jumlahSiswa; i++ ){ printf("Masukan Nilai Mahasiswa Ke-%d : ", i+1); scanf("%d", &nilaiUser[i]); jumlahNilai += nilaiUser[i]; } // 所有值输入完成后再调用最小值函数 kecil = nilaiTerkecil(nilaiUser, jumlahSiswa); printf("Rata Ratanya adalah : %.2f\n", nilaiRataRata(jumlahNilai, jumlahSiswa)); printf("Kecil : %d ", kecil); return 0; } // 平均值函数修改返回值为float保留小数 float nilaiRataRata(int inputRataRata , int inputJumlahMahasiswa ){ return (float)inputRataRata / inputJumlahMahasiswa; } // 修正后的最小值函数 int nilaiTerkecil(int inputNilai[], int inputJumlahMahasiswa ){ int i; // 初始值设为数组第一个元素,避免预设100大于所有元素的异常情况 int counter = inputNilai[0]; for(i = 1; i < inputJumlahMahasiswa; i++ ){ if (inputNilai[i] < counter) { counter = inputNilai[i]; } } // 遍历完全部元素后再返回结果 return counter; }
内容的提问来源于stack exchange,提问作者Nico A.L
相关产品推荐
相关产品推荐

