[英]C program to display largest and smallest number from 3 number which is taken input from user
[英]I'm creating a program that take five input from user and display the largest by using another function
我創建了一個程序,該程序使用int類型的數組從用戶處獲取輸入,並且我想使用用戶定義函數來顯示數組中最大的元素,問題是我通過函數傳遞了數組,但是它沒有告訴我最大的因素
#include <stdio.h>
#define size 5
void get_max(int list[size]);
int main()
{
int list[size];
printf("Enter five numbers : ");
int i;
for (i=0;i<5;i++)
{
scanf("%d",&list[i]);
}
printf("\n");
for(i=0;i<5;i++)
{
printf("Element in array list[%d] = %d\n",i,list[i]);
}
get_max(list[size]);
}
void get_max(int list[size])
{
int large,i;
for (i=0;i<5;i++)
{
if(large < list[size])
{
large=list[size];
}
}
printf("\nLargest element in array list %d",large);
}
我想在獲得用戶的輸入后在元素中打印最大值,
謝謝
您的代碼中主要有三個錯誤。
您正在使用get_max(list[size]);
調用該函數get_max(list[size]);
代替get_max(list);
。 當將list[size]
用作參數時,它指向第6個元素(list [5]數組索引從0開始-size-1)。 因此,本身就有兩個錯誤。 沒有第六個元素,數組將超出范圍,這可能會導致不確定的行為。 同樣,即使您要使用list[4]
也存在邏輯錯誤,即您正在傳遞數組最后一個元素的地址。 因此,它肯定會超出范圍,並導致函數內部發生未定義的行為。 get_max(list);
是正確的方法。
您已經在get_max()
函數中使用了large=list[size]
, get_max()
函數將創建未定義的行為,如第一點所述。(數組索引從0開始,即0-(size-1)是有效的訪問)。
例如: if(large < list[size])
具有未定義的行為。 它應該在程序中list[i]
。 您必須遍歷所有數組元素以找到最大數量。
變量large
是不確定的。 您應該在if(large < list[size])
之前設置它,否則可能導致應用程序中的行為不確定。 因此,設置large=list[0]
。
另一個提示是,當您嘗試查找最大(或最小)數字時,應按以下代碼所示設置large=list[0]
(或輸入數組中的任何元素)。 否則,如果您最初設置large=0
,並且所有輸入數字均為負,則程序將輸出錯誤的結果。
修復上述錯誤將使您的代碼運行。 見下文:
#include <stdio.h>
#define size 5
void get_max(int list[size]);
int main()
{
int list[size];
printf("Enter five numbers : ");
int i;
for (i=0;i<5;i++)
{
scanf("%d",&list[i]);
}
printf("\n");
for(i=0;i<5;i++)
{
printf("Element in array list[%d] = %d\n",i,list[i]);
}
get_max(list);
}
void get_max(int list[size])
{
int large,i;
large=list[0];
for (i=1;i<5;i++)
{
if(large < list[i])
{
large=list[i];
}
}
printf("\nLargest element in array list %d",large);
}
large
未初始化,將具有不確定的值,這會影響您的計算結果。
訪問list[size]
是未定義的行為,可能您的意思是list[i]
。
void get_max(int list[size])
{
int large = 0,i = 0;
for (i=0;i<5;i++)
{
if(large < list[i])
{
large=list[i];
}
}
printf("\nLargest element in array list %d",large);
}
當您調用get_max ...作為參數時,您只需要放置list,而不是list [size] ... An
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.