热心的各位大侠,求效率较高的算法!!

mycoolu 2003-08-30 11:57:51
一个掌机里的程序,用纯C语言开发,对itoa,malloc,free一些函数不认!按掌机的规约只有通过数组发送!


现已知 SendBuffer[0]='S'
SendBuffer[1-10]="BIAOHAO"//表号为十位,由用户输入的字符串,假设现表号为:"0000000009"
SendBuffer[11-12]="为变量LS"//由用户输入路数,高16位与低16位之分;
SendBuffer[13-15]="29F"///固定的标识码.
SendBuffer[16]= "变量 1--F"
通过循环LS得到如下数据(字符串):
S00000000090129F0
S00000000090229F1
S00000000090329F2
S00000000090429F3
S00000000090529F4
S00000000090629F5
S00000000090729F6
S00000000090829F7
S00000000090929F8
S00000000091029F9
S00000000091129FA
S00000000091229FB
S00000000091329FC
S00000000091429FD
S00000000091529FE
S00000000091629FF

用户的要求是:最好能以函数形式输出!


...全文
28 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Godisme 2003-08-31
  • 打赏
  • 举报
回复
// 我是李汉鹏,你的要求我不是很清楚,不知道这样能不能帮你解决问题

#include <stdio.h>

char SendBuffer[18]=
{
'S',
'0','0','0','0','0','0','0','0','0','9', // 表号
0,0, // 变量LS
'2','9','F',
'0',
'\0' // 结束字符
};

// 把数字(0-15)转换为十六进制字符
char NumToHexChar(int Num)
{
static strTable[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
if(Num<0 || Num>15)
return '\0';
return strTable[Num];
}

// 把数字(两位正整数)转换为字符串
bool NumToStr(int Num,char* pBuf)
{
if(Num<0|| Num>99)
return false;
pBuf[0]='0'+Num/10; // 十位
pBuf[1]='0'+Num%10; // 个位
return true;
}

void PrintLow()
{
for(int i=0;i<16;i++)
{
NumToStr(i+1,SendBuffer+11);
SendBuffer[16]=NumToHexChar(i);
printf("%s\n",SendBuffer);
}
}

void PrintHigh()
{
for(int i=16;i<32;i++)
{
NumToStr(i+1,SendBuffer+11);
SendBuffer[16]=NumToHexChar(i-16);
printf("%s\n",SendBuffer);
}
}

void main()
{
PrintLow();
printf("==================================================\n");
PrintHigh();
}
mycoolu 2003-08-30
  • 打赏
  • 举报
回复
谢谢,我试试!
idontlikenickname 2003-08-30
  • 打赏
  • 举报
回复


白天有事没来csdn~
其实这个函数已经很接近你的要求了,我只能把组装字符串的函数写出来,具体发送函数我没法写~

// 定义就有固定内容的全局变量.
char g_szPrefix[] = { "S" },
g_szSuffix[] = { "2F9" };
// 定义全局变量用于保存用户输入的表号.
char g_szTableID[11];

char *AssembleStr(char *pPrefix, char *pTableID,
char *pSuffix, char *pOutput,
int nIndex)
{
int nTenth, nUnit, nMod;

// 保证下标的范围不出界(1 <= nIndex <= 32).
if(nIndex < 0 || nIndex > 32) return(pOutput);
// 计算生成序号所需的数字.
nUnit = nIndex % 10;
nTenth = nIndex / 10;
nMod = (nIndex > 16) ? nIndex - 16 : nIndex;

// 复制前缀.
while(*pPrefix) *pOutput++ = *pPrefix++;
// 复制表号.
while(*pTableID) *pOutput++ = *pTableID++;
// 生成序号1.
*pOutput++ = nTenth + '0';
*pOutput++ = nUnit + '0';
// 复制后缀.
while(*pSuffix) *pOutput++ = *pSuffix++;
// 生成序号2.
*pOutput++ = (nMod < 11) ? nMod - 1 + '0' : nMod - 11 + 'A';
// 添加终止符.
*pOutput = '\0';
// 返回结果字符串指针.
return(pOutput);
}

void SendData(int nStart, int nEnd)
{
int nIndex;
char SendBuffer[18];

for(nIndex = nStart; nIndex <= nEnd; nIndex ++)
{
// 调用组合字符串的函数,在此之前保证g_szTableID已经输入了正确内容.
AssembleStr(g_szPrefix, g_szTableID, g_szSuffix, SendBuffer, nIndex);
// 发送结果字符串SendBuffer.
// ...
}
}

这样行了吧?

niece 2003-08-30
  • 打赏
  • 举报
回复
关注 UP
cnxiaohai 2003-08-30
  • 打赏
  • 举报
回复
友情UP
mycoolu 2003-08-30
  • 打赏
  • 举报
回复
论坛上这么多的高手,难道怎么真就没人会了吗?
还是不屑回答这个问题呢???
郁闷ing........
mycoolu 2003-08-30
  • 打赏
  • 举报
回复
还漏了一点,以上结果是设高16位,通过对话框如果用户继续高低16位的话
数据是这样的!

S00000000091729F0
S00000000091829F1
S00000000091929F2
S00000000092029F3
S00000000092129F4
S00000000092229F5
S00000000092329F6
S00000000092429F7
S00000000092529F8
S00000000092629F9
S00000000092729FA
S00000000092829FB
S00000000092929FC
S00000000093029FD
S00000000093129FE
S00000000093229FF
你想当“李逍遥”式的“大侠”吗? 这里无需计算机基础,无需编程经验,你也不必是计算机专业的在校大学生....只要爱好游戏,怀揣梦想! 有一定自主学习能力,跟着刘老师从“编程小白”修炼为游戏研发“大虾”吧!!!学习好Unity,其先决条件是一定要有稳固、扎实的编程基础!课程 《C# For Unity系列之入门篇》配套学习资料链接:http://pan.baidu.com/s/1gflxreN 密码:sou5;刘老师讲Unity学员群(2) 497429806一、热更新系列(技术含量:中级):A:《lua热更新技术中级篇》https://edu.csdn.net/course/detail/27087B:《热更新框架设计之Xlua基础视频课程》https://edu.csdn.net/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.csdn.net/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.csdn.net/course/detail/27132E:《热更新框架设计之客户端热更框架(中)》https://edu.csdn.net/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.csdn.net/course/detail/27136二:框架设计系列(技术含量:中级): A:《游戏UI界面框架设计系列视频课程》https://edu.csdn.net/course/detail/27142B:《Unity客户端框架设计PureMVC篇视频课程(上)》https://edu.csdn.net/course/detail/27172C:《Unity客户端框架设计PureMVC篇视频课程(下)》https://edu.csdn.net/course/detail/27173D:《AssetBundle框架设计_框架篇视频课程》https://edu.csdn.net/course/detail/27169三、Unity脚本从入门到精通(技术含量:初级)A:《C# For Unity系列之入门篇》https://edu.csdn.net/course/detail/4560B:《C# For Unity系列之基础篇》https://edu.csdn.net/course/detail/4595C: 《C# For Unity系列之中级篇》https://edu.csdn.net/course/detail/24422D:《C# For Unity系列之进阶篇》https://edu.csdn.net/course/detail/24465四、虚拟现实(VR)与增强现实(AR):(技术含量:初级)A:《虚拟现实之汽车仿真模拟系统 》https://edu.csdn.net/course/detail/26618五、Unity基础课程系列(技术含量:初级) A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》 https://edu.csdn.net/course/detail/24643B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》https://edu.csdn.net/course/detail/24645 C:《Unity ECS(二) 小试牛刀》https://edu.csdn.net/course/detail/27096六、Unity ARPG课程(技术含量:初中级):A:《MMOARPG地下守护神_单机版实战视频课程(上部)》https://edu.csdn.net/course/detail/24965B:《MMOARPG地下守护神_单机版实战视频课程(中部)》https://edu.csdn.net/course/detail/24968C:《MMOARPG地下守护神_单机版实战视频课程(下部)》https://edu.csdn.net/course/detail/24979

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧