gpt4 book ai didi

c - 如何在 C 中定义数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:30:37 26 4
gpt4 key购买 nike

我正在阅读“Cracking the Coding Interview”一书,其中包含几个 C 语言的算法示例。我想编写实现这些算法的程序并在我进行时运行它们。

一种这样的算法是“Min and Max 1”(来自“Big O”一章):

int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for (int x : array) {
if (x < min) min = x;
if (x > max) max = x;
}

我尝试如下“围绕此编写程序”:

#include<stdio.h>

int array[5] = [1, 3, 2, 5, 4];

int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;

int main(void):
{
for (int x : array) {
if (x < min) min = x;
if (x > max) max = x;
}
printf("The minimum is %i", min)
printf("The maximum is %i", max)
}

但是,如果我尝试编译并运行它,我会收到 错误:数字常量 int 数组 [5] 之前的预期标识符 = [1, 3, 2, 5, 4];。我将如何为这个示例输入数组正确实现这个算法?

最佳答案

你的意思是下面的

#include <stdio.h>
#include <limits.h>

#define N 5

int main( void )
{
int array[N] = { 1, 3, 2, 5, 4 };

int min = INT_MAX;
int max = INT_MIN;

for ( size_t i = 0; i < N; i++ )
{
if ( array[i] < min ) min = array[i];
if ( max < array[i] ) max = array[i];
}

printf( "The minimum is %i\n", min );
printf( "The maximum is %i\n", max );

return 0;
}

程序输出为

The minimum is 1
The maximum is 5

至于你的程序,那么根据 C 语法,它包含无效的结构。

在 C++ 中,循环看起来与您展示的方式相同。

#include <iostream>
#include <limits>

int main()
{
const size_t N = 5;
int array[N] = { 1, 3, 2, 5, 4 };

int min = std::numeric_limits<int>::max();
int max = std::numeric_limits<int>::min();

for ( int x : array )
{
if ( x < min ) min = x;
if ( max < x ) max = x;
}

std::cout << "The minimum is " << min << std::endl;
std::cout << "The maximum is " << max << std::endl;

return 0;
}

请注意,将数组声明为全局数组是没有意义的。

至于C中的数组定义,你可以这样定义它

int array[5] = { 1, 3, 2, 5, 4 };

(或使用一些命名常量而不是数字 5)

或者喜欢

int array[] = { 1, 3, 2, 5, 4 };

在最后一种情况下,元素的数量等于初始化器的数量。或者甚至您可以使用以下初始化

int array[] = { [0] = 1, [1] = 3, [2] = 2, [3] = 5, [4] = 4 };

关于c - 如何在 C 中定义数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39169837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com