/* ===== 模块8:综合 ===== * test17_integration — 综合测试 * 难度:3/5 * 验证点:多特性组合——指针 + 结构体 + 函数 + 循环 + 数组 + 切片 */ #[extern("vm")] fn vm_printf(fmt: *u8, ...) void; type Point = struct { x: i32, y: i32, } /* 计算点积 */ fn dot(a: *Point, b: *Point) i32 { ret a.x * b.x + a.y * b.y; } /* 递归斐波那契 */ fn fib(n: i32) i32 { if n <= 1 { ret n; } ret fib(n - 1) + fib(n - 2); } fn main() i32 { /* 综合:指针 + 结构体 + 函数 */ var p1: Point; p1.x = 3; p1.y = 4; var p2: Point; p2.x = 5; p2.y = 6; var d := dot(&p1, &p2); /* 3*5 + 4*6 = 15 + 24 = 39 */ if d != 39 { ret 1; } /* 综合:数组 + while 循环 */ var arr: [5]i32 = [5]i32{1, 2, 3, 4, 5}; var sum: i32 = 0; var i: i32 = 0; while i < 5 { sum = sum + arr[i]; i = i + 1; } if sum != 15 { ret 2; } /* 综合:切片 + for */ var sl: []i32 = arr[1..4]; var sl_sum: i32 = 0; for sl as val { sl_sum = sl_sum + val; } if sl_sum != 9 { ret 3; } /* 2+3+4 */ /* 综合:递归 */ var f := fib(10); if f != 55 { ret 4; } /* 综合:loop/break/continue */ var n: i32 = 0; var count: i32 = 0; loop { n = n + 1; if n == 2 { continue; } count = count + 1; if n >= 5 { break; } } /* 执行 n=1,3,4,5 共 4 次 (n=2 被 continue) */ if count != 4 { ret 5; } /* 综合:指针修改结构体 */ var pp: *Point = &p1; pp.x = 10; pp.y = 20; if p1.x != 10 { ret 6; } if p1.y != 20 { ret 7; } /* 综合:嵌套控制流 */ var mat: [3]i32 = [3]i32{1, 2, 3}; var outer_sum: i32 = 0; var j: i32 = 0; while j < 3 { var k: i32 = 0; while k < 3 { if mat[j] > mat[k] { outer_sum = outer_sum + 1; } k = k + 1; } j = j + 1; } if outer_sum != 3 { ret 8; } ret 0; }