zoukankan      html  css  js  c++  java
  • C语言 入门程序

    #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);
    void rearrange(char *output,char const *input,int n_columns,int const columns[]);
    /*
    	这个程序从标准输入中读取输入行并在标准输出中打印这些输入行
    	每个输入行的后面一行是该行内容的一部分
    	输入的第一行是一串列标号,串的最后以一个负数结尾
    	这些列标号成对出现,说明需要打印的输入行的列的范围
    	例如: 0 3 10 12 -1 表示第0列到第三列,第10列到第12列的内容被打印。
    */
    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
    ",input);
    		rearrange(output,input,n_columns,columns);
    		printf("rearrange line:%s
    ",output);
    	}
    	return EXIT_SUCCESS;
    }
    int read_column_numbers(int columns[],int max)
    {
    	int num=0;
    	int ch;
    	while(num<max&&scanf("%d",&columns[num])==1&&columns[num]>=0)
    		num+=1;
    	if(num%2!=0)
    	{
    		puts("Last column number is not paired.");
    		exit(EXIT_FAILURE);
    	}
    	while((ch=getchar())!=EOF&&ch!='
    ');
    	return num;
    }
    void rearrange(char *output,char const *input,int n_columns,int const columns[])
    {
    	int col;
    	int output_col;
    	int len;
    	len = strlen(input);
    	output_col = 0;
    	/*
    		处理每对列标号
    	*/
    	for(col=0;col<n_columns;col+=2)
    	{
    		int 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] = '';
    }


  • 相关阅读:
    [LeetCode] Longest Common Prefix
    [LeetCode] Path Sum II
    [LeetCode] Path Sum
    [LintCode] 寻找缺失的数
    [LintCode] 最多有多少个点在一条直线上
    [LeetCode] Max Points on a Line
    [LeetCode] Binary Tree Right Side View
    [LeetCode] Populating Next Right Pointers in Each Node II
    [LeetCode] Populating Next Right Pointers in Each Node
    apache php 60 503
  • 原文地址:https://www.cnblogs.com/zhengwenqiang/p/6804642.html
Copyright © 2011-2022 走看看