排序(hdu1106 strtok函数的使用)

来源:互联网 发布:政府大数据应用 编辑:程序博客网 时间:2024/06/05 00:41

题意:

输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。

你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。

思路:strtok分割字符串

strtok的使用

函数名: strtok 

功  能: 查找由在第二个串中指定的分界符分隔开的单词 

用  法: char *strtok(char *str1, char *str2); 

strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串(此时返回分割符前面的字符串),往后的调用则将参数s设置成NULL(返回分隔符后的字符串)。每次调用成功则返回被分割出片段的指针,当没有被分割的串时则返回NULL。

#include <string.h> #include <stdio.h> int main(void) {    char input[16] = "abc,d";    char *p;    /**//* strtok places a NULL terminator    in front of the token, if found */    p = strtok(input, ",");    if (p)   printf("%s\n", p);    /**//* A second call to strtok using a NULL    as the first parameter returns a pointer    to the character following the token  */    p = strtok(NULL, ",");    if (p)   printf("%s\n", p);    return 0; }


第一次输出 abc 

第二次输出 d

题目是按照5分割,然后保存的分割后的串,排序

#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;char s[10000];int b[10000];int main(){    while(scanf("%s",s) != EOF)    {        char *p;        int k = 0;        p = strtok(s,"5");        while(p != NULL)        {            sscanf(p,"%d",&b[k++]);            p = strtok(NULL,"5");        }        sort(b,b+k);        printf("%d",b[0]);        for(int i = 1; i < k; i++)            printf(" %d",b[i]);        printf("\n");    }    return 0;}



原创粉丝点击