Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4602902
  • 博文数量: 385
  • 博客积分: 21208
  • 博客等级: 上将
  • 技术积分: 4393
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-30 13:40
文章分类

全部博文(385)

文章存档

2015年(1)

2014年(3)

2012年(16)

2011年(42)

2010年(1)

2009年(2)

2008年(34)

2007年(188)

2006年(110)

分类: C/C++

2006-11-28 21:39:33

1: 从由数字,字母组成的字符串之中找出数字串长度最大的那一个



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




int GetMaxLengthDigitalString(char *outputstr, char *intputstr)
{
    int i;
    int k;
    int pos;
    int max;
    
    pos=max=i=k=0;
    
    while(1)
    {
        if (intputstr[i]>='0' && intputstr[i]<='9') k++;
        else
            {
                if (max<k)
                {     
                    max=k;
                    pos=i-max;
                }
                if (intputstr[i]=='\0') break;
                k=0;
            
            }
        i++;
    }
    if (max==0) outputstr=NULL;
    else
        memcpy(outputstr, intputstr+pos, max);
    
    return max;
    
}

int main()
{
    //char str[300]="ab1234e67371fg7889900000";

    char str[300]="8793428797897889900000";
    char digitStr[300];
    
    printf("in str :%s \nhave max digitalString len is %d\n is: %s\n",
        str,
        GetMaxLengthDigitalString(digitStr,str),
        digitStr
        );
        
    return 0;

}





2: 有十三张牌, 将最上面的抽出来放在最下面,之后将最上面的牌抽走, 若抽走的顺序是
1 2 3 4 5 6 7 8 9 10 11 12 13 问原始的顺序是什么?  编程求出




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


typedef struct ListNode
{
    int data;
    struct ListNode* next;

}ListNode;

void Print(ListNode *head)
{
    ListNode *p =head;
    while(p)
    {
        printf("%d\t",p->data);
        p=p->next;
    }
    printf("\n");

}

int main()
{
    ListNode* head;
    ListNode* tail;
    ListNode* p;
    
    int i;
    
    int b[13];
    
    head=tail=NULL;
    
    for (i=13; i>0 ; i--)
    {
        p=(ListNode*)malloc(sizeof(ListNode));
        
        p->data=i;
        p->next=head;
        
        head=p;
        if (i==13) tail=p;
        
    
    }
    Print(head);
    
    for(i=1; i<14;i++)
    {
        p=head->next;
        if(!p) p=head; //最后一个节点

        
        tail->next=head;
        head->next=NULL;
        tail=head;
        
        
        
        printf("pos %d is %d\n",p->data,i);
        b[p->data - 1]=i;
        
        
        head=p->next;
        
        free(p);
    
    
    
    }
    
    for (i=0;i<13;i++)
    printf("%d\t",b[i]);
    
    printf("\n");
    
    return 0;

}

#include <stdio.h>

int main(int argc, char *argv[])
{
    int array[13] = { 0 };
    int i, j;

    for(i = j = 0; i < 13; ++i)
    {
        for( ; array[j % 13] != 0; j++)
            ;
        for( ; array[++j % 13] != 0; )
            ;
        array[j % 13] = i + 1;
    }

    for(i = 0; i < 13; ++i)
    {
        printf("%d ", array[i]);
    }
    printf("\n");
    return 0;
    
}

阅读(2571) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~