#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)
......有人能给我解释一下这是如何工作的吗?我试着搜索了一下,但我还是不知道。我不明白...
1条答案
按热度按时间yyyllmsg1#
final
的第二个参数是数组中要处理的值的个数(从开头开始)。final(a1, 8)
对所有八个值求和。final(a1, 6)
仅对前六个值求和。