开放式c语言题目

2017-10-10  本文已影响28人  红尘赌客

请提交两份材料

  • 可在linux下编译运行的c程序源文件,linux命令行编译指令,以及参数使用说明。
  • 代码思路的说明。可以使用文字、流程图、伪代码等各种方式,重点是把思路讲清楚。
  1. 实现一个英文单词记数程序。程序接受一个文件路径作为参数,统计并输出每个单词以及单词出现的次数。单词由连续的英文字母和数字组成,所有非字母数字的字符都认为是分隔符。

示范输出

a 10
count 3
word 5

  1. 人民币的硬币,具有1元,5角,5分,2分,1分这几种面值。假设一台自动售货机里面各种面值的硬币数量充足。请实现一个程序,计算顾客付款购货后应该怎么找钱。注意,找钱方案要求找给顾客的硬币数量最少。程序的输入是顾客付款金额和货品价格,程序应该输出具体的找钱方案。

  2. 下面的程序使用二维字符数组表示迷宫,'#'表示墙壁,'@'表示通路,'x'表示行走路径。迷宫四周是封闭的外墙,起点是maze[1][1]的位置(左上角),终点是maze[n-2][m-2](右下角)。请实现find_path函数,找到一条路径,并将每一步设置为'x'。

提示:这道题的得分有三个档次,能够找到一条路径可以拿到基本分数,能够找到最短路径可以拿到更高的分数,能够使用高效算法找到最短路径可以拿到最高档次的分数。此外,实现generate_maze函数,是一个加分项。

#include <stdio.h>
#include <stdlib.h>

void print_maze(char *maze, int row_size, int col_size)
{
    int i;
    int j;
    char item;
    for (i = 0; i < row_size; i++) {
        for (j = 0; j < col_size; j++) {
            item = *(maze + (i * col_size + j));
            printf("%c", item);
        }
        printf("\n");
    }
}

// 随机生成迷宫
char *generate_maze(int row_size, int col_size)
{
    char *maze;
    int i;
    int j;
    char *p_item;
    maze = (char *) malloc(row_size * col_size * sizeof(char));
    // TODO 随机生成迷宫
    return maze;
}

void free_maze(char *maze)
{
    free(maze);
}

// 搜寻路径,并使用'x'标识
void find_path(char *maze, int row_size, int col_size)
{
    // TODO
}

int main(void)
{
    // 示例迷宫
    char maze[9][9] = {
        {'#', '#', '#', '#', '#', '#', '#', '#', '#'},
        {'#', '@', '#', '#', '@', '@', '@', '@', '#'},
        {'#', '@', '@', '@', '@', '#', '#', '#', '#'},
        {'#', '@', '#', '#', '@', '@', '@', '@', '#'},
        {'#', '@', '@', '@', '#', '#', '#', '#', '#'},
        {'#', '#', '#', '@', '@', '@', '@', '@', '#'},
        {'#', '#', '#', '#', '#', '@', '#', '@', '#'},
        {'#', '#', '#', '#', '#', '@', '#', '@', '#'},
        {'#', '#', '#', '#', '#', '#', '#', '#', '#'}
    };
    print_maze(&maze[0][0], 9, 9);
    return EXIT_SUCCESS;
}
上一篇 下一篇

猜你喜欢

热点阅读