XiaoHui.net 笑汇程序员论坛首页
工作并快乐着,职业并休闲着
寻梦的岁月从不言辛苦几许,
不问收获几多……
» 游客:  申请新用户 | 登录 | 会员 | 统计 | 帮助 » XiaoHui.Net 笑汇程序员论坛 | 纯文字版 | 全站索引 | XiaoHui.com


[算法讨论] 请看看这个小程序实现的是什么功能?结果我分析出来了,就是不知道是什么功能

RSS 订阅当前论坛  

上一主题 下一主题
     

标题: [算法讨论] 请看看这个小程序实现的是什么功能?结果我分析出来了,就是不知道是什么功能  
 
百年孤独
小水手
Rank: 1



UID 19889
精华 0
积分 14
帖子 14
阅读权限 10
注册 2003-8-8
状态 离线
请看看这个小程序实现的是什么功能?结果我分析出来了,就是不知道是什么功能

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

#define MAX_COLS 20
#define MAX_INPUT 1000

int read_column_numbers(int columns[], int max)
{
        int num = 0;
        int ch;

        printf("Please input the Double num end with -1[(0-1000) eg. 1 3 7 9 -1]\n");
        while((num < max) && (scanf("%d", &columns[num]) == 1) && (columns[num] >= 0))
        {
                num++;
        }
       
        if(num % 2 != 0)
        {
                puts("Last column number is not paride");
                exit(EXIT_FAILURE);
        }

        while((ch = getchar()) != EOF && ch != '\n')
        {
                ;
        }

        return num;
}

void rearrange(char *output, char const *input, int n_columns, int const columns[])
{
        int col;
        int output_col;
        int len;
        int nchars;

        len = strlen(input);
        output_col = 0;

        for(col = 0; col < n_columns; col += 2)
        {
                nchars = columns[col + 1] - columns[col] +1;

                if(columns[col] >= len || output_col == MAX_INPUT - 1)
                {
                        break;
                }

                if(output_col + nchars > MAX_INPUT - 1)
                {
                        nchars = MAX_INPUT - output_col - 1;
                }

                strncpy(output + output_col, input + columns[col], nchars);
        output_col += nchars;
        }

        output[output_col] = '\0';
}

int main(void)
{
        int n_columns;
        int columns[MAX_COLS];
        char input[MAX_INPUT];
        char output[MAX_INPUT];

        n_columns = read_column_numbers(columns, MAX_COLS);

        while(gets(input) != NULL)
        {
                printf("Original input: %s\n", input);
                rearrange(output, input, n_columns, columns);
                printf("Rearrange: %s\n", output);
        }

        return 0;
}
2006-5-19 12:13#1
查看资料  Blog  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题  


 


所有时间为 GMT+8, 现在时间是 2008-12-3 06:55 Powered by Discuz! 4.1.0 清除 Cookies - XiaoHui.Net 笑汇程序员论坛 - Archiver