首页
社区
课程
招聘
征集算法
发表于: 2010-11-20 23:13 4758

征集算法

2010-11-20 23:13
4758
需求: 在字符串中插入字符串
具体如下:
1、比如S="abcdef"
2、在字符串S首位插入一个1-9的随机数 比如是5
   则字符串S="5abcdef"
3、在新字符串S的第2位原字符串第1位后(即5a后)插入5个1-9的随机数  比如65869
   则字符串S="5a65869bcdef"
4、在新字符串S的第8位原字符串第2位后(即5a65869b后)插入9(取自原字符串b前的一个数值,本例中=9)个1-9的随机数  比如355466782
   则字符串S="5a65869b355466782cdef"
5、在新字符串S的第18位原字符串第3位后(即5a65869b355466782c后)插入2(取自原字符串c前的一个数值,本例中=2)个1-9的随机数  比如34
   则字符串S="5a65869b355466782c34def"
6、在新字符串S的第21位原字符串第4位后(即5a65869b355466782c34d后)插入4(取自原字符串d前的一个数值,本例中=4)个1-9的随机数  比如3431
   则字符串S="5a65869b355466782c34d3431ef"
7、在新字符串S的第26位原字符串第5位后(即5a65869b355466782c34d3431e后)插入1(取自原字符串d前的一个数值,本例中=1)个1-9的随机数  比如8
   则字符串S="5a65869b355466782c34d3431e8f"
至此,最终结果形成 S="5a65869b355466782c34d3431e8f"

要求:要写成一个函数,一个输入参数本例中的"abcdef"
                      一个返回值本例中的"5a65869b355466782c34d3431e8f"
      原始字符串S长度未知(属于函数的输入参数) 也就是说上述7个步骤 可能是1步 也可能是N步
      所以上述7个步骤应该在循环中来完成
      编程工具随意,但是不能使用编程工具特有的封装函数(WINDOWS标准API函数除外)

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 1022
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
如果有第6个字符,应该插入几个随机数呢?
这个算法可以先生成一序列随机数,然后在相应位置插入原始字符串即可。
2010-11-21 10:36
0
雪    币: 349
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
都是插入随机数啊,输入的字符串判断是第几部是关键
2010-11-21 11:03
0
雪    币: 125
活跃值: (161)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
写了一个貌似能符合LZ的要求~
用法有点复杂 直接看main函数里的用法。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>

int Generate_Rand()
{
	int num = rand()%9+1;
	return num;
}

void code(char str[],char* p)
{
	char s[9];
	int len = strlen(str);
	int i,j,pre=1,number,temp;
	p[0]='\0';
	for(i=0;i<len;i++)
	{
		number=0;
		for(j=0;j<pre;j++)
		{
			temp = Generate_Rand();
			number = number*10+temp;
		}
		pre=temp;
		sprintf(s,"%d",number);
		strcat(p,s);
		int base=strlen(p);
		p[base]=str[i];
		p[base+1]='\0';
	}
}

int main()
{
	char str[100]="abcdef";
	char *p;
	srand((unsigned)time( NULL)); //调用srand
	p=(char*)malloc(sizeof(char)*strlen(str)*9); //申请足够的存储空间
	code(str,p); //调用函数,函数的第二个参数为所需要的返回值
	printf("%s\n",p);
	return 0;
}

2010-11-22 11:43
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
a4b3973c916d577759e445376937f

多谢楼上的  你的代码 很准确

不过我加了一个这个  才能编译运行
#pragma  comment(linker,"/subsystem:\"console\" /entry:\"mainCRTStartup\"") //设置入口地址
2010-11-23 10:52
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
哦  还差一点点  你不是在首位插入  而是在第二位 插入的   不过不重要了
2010-11-23 10:54
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
标记一下4楼的代码  有空研究一下
..................贴的不对  已删除
2010-11-23 11:22
0
雪    币: 125
活跃值: (161)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
不好意思 没看清楚题目。
我修改了一下 这次应该可以了~
2010-11-23 12:59
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
#pragma  comment(linker,"/subsystem:\"console\" /entry:\"mainCRTStartup\"") //设置入口地址
不添加这个东东  就会编译错误  怎么弄这个东东  我用的是VC6.0
2010-11-23 14:57
0
雪    币: 125
活跃值: (161)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
因为我建的是控制台程序~~~
2010-11-23 20:09
0
游客
登录 | 注册 方可回帖
返回
//