1 2 3 4 5 | 27 16 0 11 12 0 6 9 0 7 13 0 8 5 0 |
建议先编写好 main 函数,如下所示。 这段程序应该很容易得分的。
1 2 3 4 5 | 27 16 1 6 9 1 8 5 2 11 12 3 7 13 4 |
计算素数的函数是非常简单的,你应该很快的就能写出来了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> int is_prime(int n) { } void cresort(int a[][3], int n) { } int main(int argc, char *argv[]) { int v[5][3]; return 0; } |
cresort 函数可以分成两个部分:计算第3列数;进行排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | int main(int argc, char *argv[]) { int i, j; int v[5][3] = { { 27, 16, 0}, { 11, 12, 0}, { 6, 9, 0}, { 7, 13, 0}, { 8, 5, 0} }; cresort(v[5][3], 5); for (i=0; i<5; i++) printf("%d %d %d\n", v[i][0], v[i][1], v[i][2]); return 0; } |
冒泡法程序应该熟记
1 2 3 4 5 6 7 8 9 | int is_prime(int n) { int i; if (n==2) return 1; for (i=2; i*i<=n; i++) if (n%i == 0) return 0; return 1; } |
冒泡排序法的记忆口诀
n 个数字来排队,
两两相比小靠前,
外层循环 n-1,
内层循环再减 i
完整的程序如下:
1 2 3 4 5 6 7 8 9 10 | void cresort(int a[][3], int n) { int i, j; for (i=0; i<=n; i++) { if (!is_prime(a[i][0]) && !is_prime(a[i][1])) a[i][2] = 1; if (!is_prime(a[i][0]) && is_prime(a[i][1])) a[i][2] = 2; if (is_prime(a[i][0]) && !is_prime(a[i][1])) a[i][2] = 3; if (is_prime(a[i][0]) && is_prime(a[i][1])) a[i][2] = 4; } } |
上面的程序还只是将结果输出到屏幕。 而根据题目的要求,还需要将结果输出到文件。