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) |