C语言 对数组Assert

gj3fmq9x  于 2022-12-11  发布在  其他
关注(0)|答案(1)|浏览(139)
#include<stdio.h>
#include<assert.h>
const char *authour ="Alexandre Santos";
int ints_get(int *a)
{
    int result = 0;
    int x;
    while (scanf("%d", &x) !=EOF)
    {
        a[result++] = x;
    }
    return result;
}

int sum_odd(const int *a, int n)
{
    int sum = 0;
    for(int i = 0; i < n; i++)
        if(i%2 != 0)
            sum += a[i];
    return sum;
}
int sum_all(const int *a, int n)
{
    int sum = 0;
    for(int i = 0; i < n; i++)
        sum = sum + a[i];
    return sum;
}

int final(const int *a, int n)
{
    return sum_all(a,n) - sum_odd(a,n);
}

void unit_test_even_values_minus_odd_values(void){
    int a1[8] = {1,2,3,4,5,6,7,8};
    assert(final(a1, 8) == 4);
    assert(final(a1, 6) == 3);
    assert(final(a1, 4) == 2);
    assert(final(a1, 2) == 1); 
}

void unit_tests(void){
    unit_test_even_values_minus_odd_values();
}

void test_sum(void)
{
    int a[100];
    int n = ints_get(a);
    int total = final(a,n);
    printf("%d\n", total);
}


int main()
{
    test_sum();
    return 0;
}

我有一个程序,但我不明白这里的Assert是如何工作的我的主要问题是第二个数字代表什么。例如,我知道assert(final(a1, 8) == 4),我知道a1是上面一行中确定的数组,但我不知道第二个数字(8) ......有人能给我解释一下这是如何工作的吗?我试着搜索了一下,但我还是不知道。我不明白...

yyyllmsg

yyyllmsg1#

final的第二个参数是数组中要处理的值的个数(从开头开始)。
final(a1, 8)对所有八个值求和。final(a1, 6)仅对前六个值求和。

相关问题