C中的数组元素

juzqafwq  于 2023-06-21  发布在  其他
关注(0)|答案(3)|浏览(107)

我尝试从用户处获取输入并将其存储到数组中,然后使用for循环列出数组中的项。代码如下:

#include <stdio.h>

int a[5], i, i1;

int main()
{
    printf("insert 5 integers");
    for(i=0, i<5, i++){
        scanf("%d\n", &a[i]);
    }
    for(i1=0, i<5, i++){
        printf("%d\n", &a[i1]);
    }
    return 0;
}

所以在代码中,我得到以下错误:“expected”;' before ')' token”和“expected expression before ')' token”。当我尝试编码时,我似乎经常遇到这些错误。任何帮助都将不胜感激,让这个代码工作。
PS:我们被给出的一个具体的相关问题是“如何使用指针来遍历数组的元素”。我看不出使用指针有什么帮助。这里需要他们吗?

**更新:**感谢您的回复,我已经将逗号改为分号,并删除了i1变量。我还去掉了scanf中的“\n”和最后一个printf中的“&”,因为它会打印地址而不是值。下面是现在的工作代码:

#include <stdio.h>

int a[5], i;

int main()
{
    printf("insert 5 integers\n");
    for(i=0; i<5; i++){
        scanf("%d", &a[i]);
    }
    for(i=0; i<5; i++){
        printf("%d\n", a[i]);
    }
    return 0;
}
sshcrbum

sshcrbum1#

“期待”;' before ')' token”消息只是编译器告诉您在for循环语句中缺少分号。
你的第一个for循环应该是:

for(i=0; i<5; i++){
    scanf("%d\n", &a[i]);
}

请注意逗号是如何被分号替换的。
在第二个循环中,当您想要迭代i1变量时,您正在迭代i变量。所以,你的第二个for循环应该是:

for(i1=0; i1<5; i1++){
    printf("%d\n", a[i1]);
}

注意printf的表达式中如何省略&。如果包含&,则将打印出数组中内容的地址(在内存中)。使用scanf时需要&(以便写入内存中的内容),但打印内容本身时不需要。
至于指针的情况,数组和指针在C中是紧密相连的.事实上,简单地写

printf("%d", *a);

会给予你数组的第一个元素。数组是指针算术的缩写。因此,您可以将a视为指向数组开头的指针(即索引0处的元素)。那么,(a+1)就是索引为1的元素。因此,要打印位于index i的元素,只需要解引用正确的指针:

printf("%d", *(a+i));
5hcedyr0

5hcedyr02#

你的for loop的语法是错误的,它应该是for(i=0; i<5; i++),因为另一个for(;;)的正确语法是错误的,这就是为什么你在代码中出现错误,它说'token'和expected expression

dfty9e19

dfty9e193#

使用分号,你也应该取代行

for(i1=0, i<5, i++){
    printf("%d\n", &a[i1]);

for(i=0;i<5;i++){printf("%d\n", &a[i]);}

因为在for循环中使用了i1而不是i

i1<0,i<5

没有意义,因为你只需要在一个变量i1或i之后进行迭代,或者你可以将其命名为j或任何你想要的,但for循环中的变量应该与你的迭代相同。

相关问题