首页 > 解决方案 > 变量只显示其最近的值

问题描述

我需要帮助解决我在学校遇到的这个问题。这个问题是用塞尔维亚语写的,我会尽力翻译它。

编写一个程序,输入一维数组的 n 个元素,然后显示它们的序数、索引和值(参见测试示例)

截屏

测试示例也是塞尔维亚语的,但我想你可以猜到你需要做什么。这是我试图做的:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n,i,clan,broj=0,b,a;
    a=1;
    printf("Unesi broj elementa niza:\n");
    scanf("%d", &n);
    for (i=1;i<=n;i++)
    {
        printf("Unesi %d clan niza:\n", i);
        printf("a[%d]=", broj);
        broj++;
        scanf("%d", &clan);
    }
    for (b=1;b<=n;b++)
    {
        printf("%d. clan niza je a[%d]=%d\n", a, b, clan);
        a++;
    }
    return 0;
}

一切正常,除了“氏族”只会显示为最新输入的数字。

标签: c

解决方案


“......只有最后输入的号码会被打印回给我,我找不到解决方案......”

使用数组。

该变量clan一次不能包含多个int值,但是,数组变量int clan[n];可以容纳多个n int值。以下是修改后的代码以使用VLA容纳数组n元素:clan

int main(void)
{
    int n,i,broj=0,b,a;//remove clan
    a=1;
    printf("Unesi broj elementa niza:\n");
    if(scanf("%d", &n) == 1)//test for success here, exit if fail
    {
        int clan[n];//use user input value to help create array of clan
        for (i=0;i<n;i++)//array index is from 0 to n-1
        {
            printf("Unesi %d clan niza:\n", i);
            printf("a[%d]=", broj);
            broj++;
            scanf("%d", &clan[i]);//modify to populate 1 element of clan array
        }
        for (b=0;b<n;b++)
        {
            printf("%d. clan niza je a[%d]=%d\n", a, b, clan[i]);//modify to oupput 1 element of clan array
            a++;
        }
    }
    else
    {
        printf("scanf() call failed.  Exiting.");
    }
    return 0;
}

推荐阅读