c语言fun函数两束合并 c语言字符串合并函数

C语言编程 自定义两个两位数的整数合并函数:

首先假设合并函数的功能:将两个两位数的整数 a、b 合并成一个整数放在 c 中。合并的方

“真诚服务,让网络创造价值”是我们的服务理念,成都创新互联公司团队10年如一日始终坚持在网站建设领域,为客户提供优质服。不管你处于什么行业,助你轻松跨入“互联网+”时代,PC网站+手机网站+公众号+成都微信小程序。

式是:将 a 的十位和个位数依次放在 c 数千位和十位上,b 数的十位和个位数依次放在 c 数的个位和百位上。

实现方法如下:

C语言编程:将a、b的两个两位正整数合并成一个新的整数放在c中。(设计子函数fun实现此功能)?

int fun(int a,int b){

int c=a%10;

c=(a/10)*100+c;

c=(b%10)*10+c;

c=(b/10)*1000+c;

return c;

}

C语言问题,解释下fun函数部分

先说结果:fun函数其实是用来将两个字符串轮流交叉合并。

也就是说,若a[]=dfg,b[]=678,则fun(a,b)后,a[]=d6f7g8

对于一些特殊情况,

1.当strlen(a)strlen(b),如a[]=dfg,b[]=67899,则运行后a[]=d6f7g899,不用再交叉,直接补上多出来的b字符串的部分99

2.当strlen(a)strlen(b),如a[]=dfghjk,b[]=678,则运行后a[]=d6f7g8hjk,不用再交叉,直接补上多出来的来自a字符串的部分hjk

以下是分析:

先看内层循环for(k=strlen(s1);k=i;k--) s1[k+1]=s1[k];

这实际上就是将字符串s1从s1[i]开始到末尾依次后移1位,这样s1[i]的位置就空出(这里的空出其实是有值的,但由于已经令s1[i+1]=s1[i],所以s1[i]相当于空出)以便插入s2[j]到sa[i]

s1[i]=s2[j];

j++;i++;

if(s1[i]) i++;

这一段,实际上是在执行插入赋值,每一次赋值后,i,j分别顺移一位,其实你可能也注意到了,s1其实应该要移两位,因为一位是保留s1的下一位,s2要插的位置是s1的下下位

所以,他有两个i++(i对应的是s1的序号),

但是他前面有个条件if(s1[i])

这个条件主要是针对s1比s2长设置的,当s2还有值没有插入,而s1已经到字符串尾部,即有s1[i]=0(注意,这里的0不是指数值0,而是char=0,也就是空"\0"),此时,i就不用+2,+1即可,因为s2[j]只要插入到下一位,不用下下位

如果没有这个条件,则每次都加入到下下为的话,由于s1序列中的\0没有被s2覆盖,则输出时,到这个\0就已经截止,如上面的特殊情况1,输出就是a[]=d6f7g8,而不会是a[]=d6f7g899

然后外层循环就是为了保证s2序列全部遍历

终于完了。。。嗯,不懂可以追问

将两个数组合并到一个数组并排序的c语言程序编写

这里是借用第三个数组。

原理:先将两个数组复制到第三个数组中,然后对第三个数组排序

如果不使用第三个函数,那么下面这个函数一样可以做到,不过函数声明就要改成:

char* fun(char *dest, char *str, char *dest)

/*------------------------------函数--------------------------------*/

char* fun(char *str1,char *str2,char *dest) //前提,目标数组能偶容纳两个数组

{

char *tmp=dest;

char *tmp_dest=dest;

if(!dest)

return NULL;

while(*str1) //将str1复制进dest

*tmp++=*str1++;

while(*str2) //将str2复制进dest

*tmp++=*str2++;

tmp_dest--; //

while(*++tmp_dest) //选择排序法

{

char *tmp_px=NULL;

tmp=tmp_dest;

while(*++tmp) //找到后面一串的最值

{

if(*tmp_dest*tmp)

tmp_px=tmp;

}

if(!tmp_px)

{

char ch=*tmp_dest;

*tmp_dest=*tmp_px;

*tmp_px=ch;

}

}

return dest;

}

编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。

代码如下:

#include stdio.h

int fun(int a,int b){

int c=10*(b%10)+(a/10)+1000*(b/10)+100*(a%10);

return c;

}

int main() {

int a;

int b;

printf("请输入第一个两位数a:");

scanf("%d",a);

printf("请输入第二个两位数b:");

scanf("%d",b);

int c=fun(a,b);

printf("结果为:%d",c);

return 0;

}

扩展资料

C语言自定义函数

强调一点,C语言不允许函数嵌套定义;也就是说,不能在一个函数中定义另外一个函数,必须在所有函数之外定义另外一个函数。main() 也是一个函数定义,也不能在 main() 函数内部定义新函数。

注意:main 是函数定义,不是函数调用。当可执行文件加载到内存后,系统从 main 函数开始执行,也就是说,系统会调用我们定义的 main 函数。

求大神帮忙做道(C语言)的题! 编写函数fun,其功能是:将两个两位数的正整数a,b合并成一个整数放在c中

怎么合并呢?

连接: 如65,23,合并为6523还是2365,还是6253,还是2635呢?

/*

请输入两个两位正整数(任意一个为0则结束): 45 12

45和12的组合结果为 : 1524

请输入两个两位正整数(任意一个为0则结束): 36 20

36和20的组合结果为 : 2603

请输入两个两位正整数(任意一个为0则结束): 0 0

Press any key to continue

*/

#include stdio.h

int main() {

int a,b,n;

while(1) {

printf("请输入两个两位正整数(任意一个为0则结束): ");

scanf("%d%d",a,b);

if(a == 0 || b == 0) break;

n = 1000 * (b / 10); // 取b的十位放到千位上

n += 100 * (a % 10); // 取a的个位放到百位上

n += 10 * (b % 10); // 取b的个位放到十位上

n += a/10; // 取a的十位放到个位上

printf("%d和%d的组合结果为 : %d\n",a,b,n);

}

return 0;

}


当前题目:c语言fun函数两束合并 c语言字符串合并函数
URL分享:http://scyanting.com/article/hheoog.html