现在的位置: 首页 > 14 二级C语言 > 正文

2011春江苏省二级C上机真题C01 编程题

2011年09月17日 14 二级C语言 ⁄ 共 351字 ⁄ 字号 暂无评论
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;
    }
}

上面的程序还只是将结果输出到屏幕。 而根据题目的要求,还需要将结果输出到文件。

抱歉!评论已关闭.