将int与double数组进行比较

时间:2017-11-19 21:50:58

标签: c compare double

我正在尝试学习C而我想制作一个程序,将我输入的数字与数组中的数字进行比较。唯一的问题是它实际上并没有这样做。即使我输入一个来自该数组的数字,它也表明该数字不是来自该数组。

    #include <stdio.h>
    void getMark(int findMark, double crswk1[]);
    void changePartMark(double crswk1[], int findMark);

    int main()
    {
    int findMark;
    double crswk1[10]={67, 77, 80, 40};

    getMark(findMark, crswk1);
    changePartMark(crswk1, findMark);
}

void getMark(int findMark, double crswk1[])
{
    printf("Enter the mark you want to change: ");
    scanf("%d", &findMark);

}

void changePartMark(double crswk1[], int findMark)
{
    int i;
        if(findMark == crswk1[i])
            {
            printf("It is equal");
            }
        else
            {
            printf("It is not equal");
            }
}

2 个答案:

答案 0 :(得分:2)

您正在阅读的号码永远不会回到findMark功能中的main

void getMark(int findMark, double crswk1[])
{
    printf("Enter the mark you want to change: ");
    scanf("%d", &findMark);

}

此函数在本地参数findMark中保存一个值。由于C中的所有参数都是按值传递的,因此对此局部变量的更改不会反映在调用者中,因此findMark中的main永远不会更改。

您需要更改此函数以获取`int

地址
void getMark(int *findMark, double crswk1[])
{
    printf("Enter the mark you want to change: ");
    scanf("%d", findMark);
}

然后你从main这样调用这个函数:

getMark(&findMark, crswk1);

通过传入findMark的地址,该函数可以写入该地址。

此外,您的changePartMark函数不会搜索整个数组。它只查看索引i。但即使这是一个问题,因为你从未设置i

您需要遍历数组以检查数组中每个元素的值。

int i;
for (i=0; i<4 i++) {
    if(findMark == crswk1[i])
        {
        printf("It is equal");
        }
    else
        {
        printf("It is not equal");
        }
}

答案 1 :(得分:1)

两个主要问题:

首先,您输入的号码永远不会被传回。当你写

void getMark(int findMark, double crswk1[]) {
    printf("Enter the mark you want to change: ");
    scanf("%d", &findMark);
}

然后您读入本地副本findMark中的值,而不是调用者使用的值。 BTW:未使用crswk1;所以我建议写

int getMark() {
    int findMark = 0;
    printf("Enter the mark you want to change: ");
    scanf("%d", &findMark);
    return findMark;
}

其次,您的void changePartMark(double crswk1[], int findMark)缺少循环,i未初始化。代码可能如下所示:

void changePartMark(double crswk1[], int findMark)
{
    for (int i=0; i<4; i++) {
        if(findMark == crswk1[i])
            {
            printf("It is equal");
            }
        else
            {
            printf("It is not equal");
            }
    }
}