|
发表于 2021-11-13 15:38:28
|
显示全部楼层
本帖最后由 zy8818 于 2021-11-13 19:30 编辑
//参数int版本
//getAllnumber(几位数,第一个数, 第二个数, 第三个数)
char* getAllnumber(int n, int a, int b, int c)
{
char *pAll = new char[n * 3+1];//总和数
memset(pAll, 0, n * 3 + 1);//pAll内存空间值全部清零
char*err = "error";
if (n<0 || n>9)//32位系统最大10位整数
{
goto error;
}
int temp = 1;//取模基数
int j = 0,n2=n;
while (n2--)
{
temp *= 10;//获取n位数取模基数
}
a %= temp;//截断n位数以上的数
b %= temp;
c %= temp;
temp /= 10;
if (a / temp > 0 && b / temp > 0 && c / temp > 0)//保证三个数都是n位数
{
char *pa = new char[n+1];
char *pb = new char[n+1];
char *pc = new char[n+1];
itoa(a, pa, 10);//整数转字符串
itoa(b, pb, 10);
itoa(c, pc, 10);
for (int i = 0; i < n; i++)//整合三个字符串
{
//此处代码论坛显示有问题 我用小括号代替中括号
pAll[j++] = pa(i);
pAll[j++] = pb(i);
pAll[j++] = pc(i);
}
delete[]pa;
delete[]pb;
delete[]pc;
return pAll;
}
else
{
error:
for (int i = 0; i < 5; i++)
{
pAll(i) = err(i);//此处代码论坛显示有问题 我用小括号代替中括号
}
return pAll;//传入的数位数不正确返回错误
}
}
//int argc参数个数,char* argv[]命令字符串
int main(int argc,char* argv[])
{
int n = 4,a=1111,b=2222,c=3333;
getAllnumber(n, a, b, c);//此处的参数n a b c变量值替换成键盘输入值即可
char*pAll = getAllnumber(n, a, b, c);
printf("%s\n",pAll);
delete[]pAll;
system("pause");
return 0;
} |
|