如何在C中将全局变量更改为局部变量?

还是MK

我已经完成了分配工作,一切都可以按我的意愿进行,但是事情是我不允许在此项目中使用全局变量,因此每件事都应该放在函数中。因为我是C语言的新手,所以我真的不知道如何进行这项工作,我的意思是如何将全局变量更改为局部变量。

感谢你的帮助!

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int tal[99] = { -1 };
int bubbles, byte, c, d, val;

/* Function for number gen*/
int talserie() {
    srand(time(NULL));
    for (c = 0; c < 100; c++) {

        tal[c] = rand() % 901;
        printf(" %d ", tal[c]);

        if ((c + 1) % 10 == 0)
            printf("\n");
    }
}
/* Funktion för bubble sort*/
int bubbel() {
    for (c = 0; c < (99); c++)
    {
        for (d = 0; d < 99 - c; d++)
        {
            if (tal[d] > tal[d + 1])
            {
                byte = tal[d];
                tal[d] = tal[d + 1];
                tal[d + 1] = byte;
            }
        }
    }

    for (c = 0; c < 100; c++) {
        printf(" %d ", tal[c]);
        if ((c + 1) % 10 == 0)
            printf("\n");
    }
}

/* Funktion för median-, max/min- och medelvärde*/
int varde() {
    printf("\nMaxvärdet är: %d", tal[99]);
    printf("\nMinvärdet är: %d", tal[0]);

    int total = 0;
    for (c = 0; c < 100; c++) {
        total = total + tal[c];
    }

    printf("\nMedelvärdet är: %d", total / 100);
    printf("\nMedianvärdet är: %d", ((tal[49] + tal[50]) / 2));
}

/*Funktion leta siffra*/
int siffra() {
    printf("\nSkriv in en siffra: ");
    scanf("%d", &val);
    d = 0;
    for (c = 0; c < 100; c++) {
        if (tal[c] == val) {
            d = 1;
            printf("\nFinns i talföljden på plats: ");
            if (c <= 9)
                printf(" Rad 1 och Kolumn %d\n", c + 1);
            else if (c > 9 && c <= 19)
                printf(" Rad 2 och Kolumn %d\n", (c + 1) - 10);
            else if (c > 19 && c <= 29)
                printf(" Rad 3 och Kolumn %d\n", (c + 1) - 20);
            else if (c > 29 && c <= 39)
                printf(" Rad 4 och Kolumn %d\n", (c + 1) - 30);
            else if (c > 39 && c <= 49)
                printf(" Rad 5 och Kolumn %d\n", (c + 1) - 40);
            else if (c > 49 && c <= 59)
                printf(" Rad 6 och Kolumn %d\n", (c + 1) - 50);
            else if (c > 59 && c <= 69)
                printf(" Rad 7 och Kolumn %d\n", (c + 1) - 60);
            else if (c > 69 && c <= 79)
                printf(" Rad 8 och Kolumn %d\n", (c + 1) - 70);
            else if (c > 79 && c <= 89)
                printf(" Rad 9 och Kolumn %d\n", (c + 1) - 80);
            else if (c > 89 && c <= 99)
                printf(" Rad 10 och Kolumn %d\n", (c + 1) - 90);
            break;
        }
    }
    if (d == 0);
    {
        printf("\n%d Finns inte i talföljden", val);
    }
}
/* Main funktion med switch meny*/
int main()
{
    while (val != 5) {
        printf("\n1. Generera en talföljd med 100 tal mellan 0-900.");
        printf("\n2. Sortera talföljden i storleksordning.");
        printf("\n3. Räkna ut medelvärde, median och maxvärde.");
        printf("\n4. Sök efter valfritt tal.");
        printf("\n5. För att avsluta\n");
        printf("Skriv in ett val (1-5): ");



        scanf("%d", &val);

        switch (val) {

        case 1:
            talserie();
            break;

        case 2:
            if (tal[0] == -1)
                printf("\nFel! Generera en talföljd först!\n");
            else
                bubbel();
            break;

        case 3:
            if (tal[0] == -1) /* Arrayen innehåller -1 i [0] innan talföljden genereras"*/
                printf("\nFel! Generera en talföljd först!\n");
            else if (tal[0] <= tal[1] && tal[1] <= tal[2] && tal[2] <= tal[3])

                varde();
            else
                printf("\nFel! Sortera talföljden i storleksordning först!\n");
            break;

        case 4:
            if (tal[0] == -1)
                printf("\nFel! Generera en talföljd först!\n");
            else if (tal[0] <= tal[1] && tal[1] <= tal[2] && tal[2] <= tal[3])
                siffra();
            else
                printf("\nFel! Sortera talföljden i storleksordning först!\n");
            break;

        }
    }
    return 0;
}
戴维德

我一般来说,那么您将在程序中进行特定的更改。

假设您在函数中使用了全局变量之一foo()如果您希望变量不再是全局变量,则需要将其foo()作为参数之一传递给

因此,您可以在要调用的函数中将变量声明为局部变量 foo()

void caller( void )
{
    int local;
   
    foo( local );
}

void foo( int var )
{
...Some code...
}

那是一个按值传递,如果您需要foo()修改变量,那么就需要按引用传递

void caller( void )
{
    int local;
   
    foo( &local );
}

void foo( int *pointerToVar )
{
...Some code...
}

编辑:这是一个回答您的评论的示例。总的来说你会

int main()
{
    int tal[99], c;

    talserie(tal, c);
    ...
}

你的功能将是

talserie(int tal[99], int c)
{
    ...
}

但是,如果你不需要使用c主,你可以直接把它声明成talserie,你只通过tal

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python - 将局部变量更改为全局变量

来自分类Dev

如何使用局部变量更改全局变量

来自分类Dev

如何在JavaScript中将局部变量变成全局变量

来自分类Dev

如何在JavaScript中将局部变量转换为全局变量

来自分类Dev

在Java中将局部变量转换为全局变量

来自分类Dev

如何在不更改全局变量的情况下更改分配给全局变量值的局部变量?

来自分类Dev

C#中存在具有相同名称的局部变量时,如何在函数中更改全局变量的值

来自分类Dev

C:同名的全局变量和局部变量

来自分类Dev

Python局部变量与全局变量

来自分类Dev

是局部变量还是全局变量?

来自分类Dev

局部变量和全局变量

来自分类Dev

Kotlin - 局部变量与全局变量

来自分类Dev

如何更改与 Rebol 或 Red 中的局部变量同名的全局变量?

来自分类Dev

当存在具有相同名称的局部变量时,如何在C中使用全局变量?

来自分类Dev

如何在C中访问具有相同名称的局部变量和全局变量

来自分类Dev

如何在节点js中分配全局变量和局部变量

来自分类Dev

当函数具有同义局部变量时,如何在函数中获取全局变量?

来自分类Dev

如何在python中的字符串中插入全局变量和局部变量

来自分类Dev

如何引用与C ++中的局部变量同名的全局变量?

来自分类Dev

如何使用ASP.NET MVC 4在C#中将2个局部变量合并为1个全局变量

来自分类Dev

如何使用ASP.NET MVC 4在C#中将2个局部变量合并为1个全局变量

来自分类Dev

JS for循环中的局部变量到全局变量,循环结束后更改值

来自分类Dev

Java:为什么更改局部变量会影响全局变量原始副本?

来自分类Dev

将Lua中的全局变量从“全局”更改为C

来自分类Dev

允许局部变量与全局变量同名吗?

来自分类Dev

javascript:从局部变量修改全局变量

来自分类Dev

Java中的局部变量与全局变量同名

来自分类Dev

用局部变量覆盖全局变量

来自分类Dev

MSAccess:全局变量与局部变量声明

Related 相关文章

  1. 1

    Python - 将局部变量更改为全局变量

  2. 2

    如何使用局部变量更改全局变量

  3. 3

    如何在JavaScript中将局部变量变成全局变量

  4. 4

    如何在JavaScript中将局部变量转换为全局变量

  5. 5

    在Java中将局部变量转换为全局变量

  6. 6

    如何在不更改全局变量的情况下更改分配给全局变量值的局部变量?

  7. 7

    C#中存在具有相同名称的局部变量时,如何在函数中更改全局变量的值

  8. 8

    C:同名的全局变量和局部变量

  9. 9

    Python局部变量与全局变量

  10. 10

    是局部变量还是全局变量?

  11. 11

    局部变量和全局变量

  12. 12

    Kotlin - 局部变量与全局变量

  13. 13

    如何更改与 Rebol 或 Red 中的局部变量同名的全局变量?

  14. 14

    当存在具有相同名称的局部变量时,如何在C中使用全局变量?

  15. 15

    如何在C中访问具有相同名称的局部变量和全局变量

  16. 16

    如何在节点js中分配全局变量和局部变量

  17. 17

    当函数具有同义局部变量时,如何在函数中获取全局变量?

  18. 18

    如何在python中的字符串中插入全局变量和局部变量

  19. 19

    如何引用与C ++中的局部变量同名的全局变量?

  20. 20

    如何使用ASP.NET MVC 4在C#中将2个局部变量合并为1个全局变量

  21. 21

    如何使用ASP.NET MVC 4在C#中将2个局部变量合并为1个全局变量

  22. 22

    JS for循环中的局部变量到全局变量,循环结束后更改值

  23. 23

    Java:为什么更改局部变量会影响全局变量原始副本?

  24. 24

    将Lua中的全局变量从“全局”更改为C

  25. 25

    允许局部变量与全局变量同名吗?

  26. 26

    javascript:从局部变量修改全局变量

  27. 27

    Java中的局部变量与全局变量同名

  28. 28

    用局部变量覆盖全局变量

  29. 29

    MSAccess:全局变量与局部变量声明

热门标签

归档