使用默认元素值而不是用户在 C 中定义的值?

Default element value is used instead of user defined in C?

我是 C 初学者。我一直在编写程序代码来查找数组中的最大元素。 传递的值无法存储在类型数组中:float。 取而代之的是默认 Value:0 被存储。 怎么办?

#include <stdio.h>

// Largest Element

int main() {
    int n,i;
    float arr[100];

    printf("Enter Element Count in range(1,100):-");
    scanf("%d",&n);

    while(n>100 || n<1){
        printf("Enter Element Count in range(1,100) again:-");
        scanf("%d",&n);
    }

    for(i=0; i<n;i++){
        printf("Enter Element:-");
        scanf("%f",&arr[i]);
    }

    for(int k=0;k<n;k++){
        printf("Element-%d:-%d\n",k+1,arr[k]);
    }

    for(int j=0;j<n;j++){
        
        for(int k=j+1;k<n;k++){
            
            if (arr[j] < arr[k]){
                break;
            }
            else{
                printf("Largest Element:-%d\n",arr[j]);
                break;
            }
        }
        continue;   
    }

    return 0;
}

OUTPUT SCREEN

说明 在下面的两种情况下,您使用 %d 来打印浮点数。这就是为什么您打印的是 0 而不是实际数字。

像之前那样使用 %f 来读取 scanf 上的值,而不是 %d 来读取浮点值。

printf("Element-%d:-%d\n",k+1,arr[k]);
printf("Largest Element:-%d\n",arr[j]);

要输出 float 类型的值,您必须使用转换说明符 f。转换说明符 d 旨在输出整数值。

所以 printf 的这些调用

printf("Element-%d:-%d\n",k+1,arr[k]);

printf("Largest Element:-%d\n",arr[j]);

不正确。你必须写

printf("Element-%d:-%f\n",k+1,arr[k]);

printf("Largest Element:-%f\n",arr[j]);

此外,如果您要查找数组中的最大元素,那么这些 for 循环就没有意义。

for(int j=0;j<n;j++){
    
    for(int k=j+1;k<n;k++){
        
        if (arr[j] < arr[k]){
            break;
        }
        else{
            printf("Largest Element:-%d\n",arr[j]);
            break;
        }
    }
    continue;   
}

至少例如 continue 语句是多余的。而且里面的for循环也是多余的,因为if-else语句中的break语句一下子中断了

最大的元素只用一个 for 循环按下面的方式搜索。

int largest = 0;

for ( int i = 1; i < n; i++ )
{
    if ( arr[largest] < arr[i] ) largest = i;
}

printf( "Largest Element:-%f at position %d\n",arr[largest], largest );