我試圖做一個簡短的程序C爲了創建函數來計算數字立方體的總和(例如2 * 2 * 2),但是我得到這個消息時,我試圖啓動程序:C - Check_expect_i和段錯誤(核心轉儲)
「分割默認(核心轉儲)」
sum_even_cubes.c,第14行:檢查傳遞sum_even_cubes.c,第15行: 檢查合格sum_even_cubes。 c,第16行:檢查傳遞的sum_even_cubes.c, 第17行:檢查傳遞的sum_even_cubes.c,第18行:檢查傳遞
sum_even_cubes.c 56行:檢查傳遞sum_even_cubes.c 57行: 檢查通過分割故障(核心轉儲)
下面我的程序Ç:(錯誤可能是在發生功能sum_even_cubes_rec())
#include "base.h"
int sum_even_cubes(int n);
void sum_even_cubes_test(void) {
// a)
check_expect_i(sum_even_cubes(0), 0);
check_expect_i(sum_even_cubes(1), 0);
check_expect_i(sum_even_cubes(2), 8);
check_expect_i(sum_even_cubes(3), 8);
check_expect_i(sum_even_cubes(4), 72);
}
int sum_even_cubes(int n) {
// b)
int sum_even_cubes = 0 ;
if(n%2==0){
for(int i=0 ; i<=n ; i+=2){
sum_even_cubes = (sum_even_cubes + (i*i*i));
}
return sum_even_cubes;
}
if(n%2!=0){
for(int i=0 ; i<=(n-1) ; i+=2){
sum_even_cubes = (sum_even_cubes + (i*i*i));
}
return sum_even_cubes;
}
return 404;
}
int sum_even_cubes_rec(int n);
void sum_even_cubes_rec_test(void) {
// a)
check_expect_i(sum_even_cubes_rec(0), 0);
check_expect_i(sum_even_cubes_rec(1), 0);
check_expect_i(sum_even_cubes_rec(2), 8);
check_expect_i(sum_even_cubes_rec(3), 8);
check_expect_i(sum_even_cubes_rec(4), 72);}
int sum_even_cubes_rec(int n) {
// c)
if(n%2==0){
if(n==0){return 0;}
if(n!=0){return (sum_even_cubes_rec(n) + sum_even_cubes_rec((n-2)) ) ;}
}
if(n%2!=0){
if(n==1){return 0;}
if(n!=1){return (sum_even_cubes_rec((n-1)) + sum_even_cubes_rec((n-3))) ;}
}
return 404;
}
int sum_even_cubes_rec2(int n, int acc);
void sum_even_cubes_rec2_test(void) {
// a)
check_expect_i(sum_even_cubes_rec2(0,0), 0);
check_expect_i(sum_even_cubes_rec2(1,0), 0);
check_expect_i(sum_even_cubes_rec2(2,0), 8);
check_expect_i(sum_even_cubes_rec2(3,0), 8);
check_expect_i(sum_even_cubes_rec2(4,0), 72);
}
int sum_even_cubes_rec2(int n, int acc) {
// d)
if(n%2==0){
if(n==0){return acc;}
if(n!=0){return (sum_even_cubes_rec2(n-2, acc + n*n*n));}
}
if(n%2!=0){
if(n==1){return acc;}
if(n!=1){return (sum_even_cubes_rec2(n-2, acc + (n-1)*(n-1)*(n-1))) ;}
}
return 404;
}
int main(void) {
sum_even_cubes_test();
printf("\n");
sum_even_cubes_rec_test();
printf("\n");
sum_even_cubes_rec2_test();
}
很抱歉的源代碼,我沒有得到如何完全凸顯它作爲ç編程源代碼。
這是什麼都與期望腳本工具呢? – Barmar
'sum_even_cubes_rec(n)'在sum_even_cubes_rec(n)中' – BLUEPIXY