我創建了函式 totalLulus(計算從 int kkm 傳遞的人數)和 nilaiTerbesar(從 nilaiUser 中查找最高數字),??但是當我輸入的數字小于 56(kkm) 時,函式 totalLulus 將發送輸出 1,但我預計為 0,因為這意味著沒有人通過 kkm。
然后當我插入 jumlahSiswa 超過 4 時,函式 nilaiTerbesar 會發送像 1975579936 這樣的輸出亂數,這讓我一直困惑到現在??,有人能告訴我為什么嗎?,這是我的代碼謝謝
#include <stdio.h>
int nilaiRataRata();
int nilaiTerkecil();
int nilaiTerbesar();
int totalLulus();
int totalTidakLulus();
int main(){
int i;
int jumlahSiswa;
printf("Masukan Jumlah Siswa : "); scanf("%d", &jumlahSiswa);
// Declare Array Size & More
int nilaiUser[jumlahSiswa];
int jumlahNilai = 0;
// Input Nilai
for( i = 1; i <= jumlahSiswa; i ){
printf("Masukan Nilai Mahasiswa Ke-%d : ", i); scanf("%d", &nilaiUser[i]);
jumlahNilai = nilaiUser[i];
}
printf("Rata Ratanya adalah : %d\n", nilaiRataRata( jumlahNilai, jumlahSiswa ));
printf("Nilai Terkecil : %d\n", nilaiTerkecil( nilaiUser, jumlahSiswa ));
printf("Nilai Terbesar : %d\n", nilaiTerbesar( nilaiUser, jumlahSiswa ));
printf("Total Tidak Lulus : %d\n", totalTidakLulus( nilaiUser, jumlahSiswa ));
printf("Total Lulus : %d\n", totalLulus( nilaiUser, jumlahSiswa ));
}
// Function Lulus
int totalLulus( int *inputNilai, int inputJumlahSiswa ){
int i;
int kkm = 55;
int totalLulus = 0;
for( i = 0; i <= inputJumlahSiswa; i ){
if ( inputNilai[i] > kkm )
{
totalLulus ;
}
}
return totalLulus;
}
// Function Tidak Lulus
int totalTidakLulus( int *inputNilai, int inputJumlahSiswa ){
int i;
int kkm = 56;
int totalTidakLulus = 0;
for( i = 0; i <= inputJumlahSiswa; i ){
if ( inputNilai[i] < kkm )
{
totalTidakLulus ;
}
}
return totalTidakLulus;
}
// Function Nilai Rata - Rata
int nilaiRataRata( int inputRataRata , int inputJumlahMahasiswa ){
float hasilRataRata;
hasilRataRata = inputRataRata/inputJumlahMahasiswa;
return hasilRataRata;
}
// Function Nilai Terkecil
int nilaiTerkecil( int *inputNilai, int inputJumlahMahasiswa ){
int i = 0;
int counter = 100;
for( i = 0; i < inputJumlahMahasiswa; i ){
if ( inputNilai[i] < counter )
{
counter = inputNilai[i];
}
}
return counter;
}
// Function Nilai Terbesar
int nilaiTerbesar( int *inputNilai, int inputJumlahMahasiswa ){
int i = 0;
int counter = 0;
for( i = 0; i <= inputJumlahMahasiswa; i ){
if ( inputNilai[i] > counter )
{
counter = inputNilai[i];
}
}
return counter;
}
結果
我預計:總 Lulus = 2;汝來特貝沙 = 88;
uj5u.com熱心網友回復:
如果陣列有N元素,則索引的有效范圍是[0, N)。
但是您正在通程序式使用無效索引,例如
// Input Nilai
for( i = 1; i <= jumlahSiswa; i ){
printf("Masukan Nilai Mahasiswa Ke-%d : ", i); scanf("%d", &nilaiUser[i]);
jumlahNilai = nilaiUser[i];
}
或者
for( i = 0; i <= inputJumlahSiswa; i ){
if ( inputNilai[i] > kkm )
{
totalLulus ;
}
}
也在這個函式中
// Function Nilai Rata - Rata
int nilaiRataRata( int inputRataRata , int inputJumlahMahasiswa ){
float hasilRataRata;
hasilRataRata = inputRataRata/inputJumlahMahasiswa;
return hasilRataRata;
}
將變數宣告hasilRataRata為具有 float 型別是沒有意義的,因為它被分配了一個整數,而且該函式具有回傳型別 int。
并使用英文單詞來命名識別符號。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/351343.html
下一篇:For回圈不在串列范圍內回圈多次
