求一个学编程的大佬,这道题的代码和解题思路怎么写?

从键盘输入一个字符串a,并在串a中的最大元素后面插入字符串b(b[]=“ab”),输出字符串a。

#include <stdio.h>

#include <string.h>

int main()

{ char a[100],b[]="ab",*p,*q,*max; 

  gets(a);

  for(p=max=a;*p;p++)        //扫描原串

    if(*p>*max)max=p;        //找到最大元素

  for(q=p+strlen(b);p>max;)*q--=*p--;      //最大元素后面的字符(包括'\0')后移b[ ]的串长

  for(max++,p=b;*p;)*max++=*p++;         //插入b[ ]的内容

  printf("%s\n",a);

  return 0;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-04-05
用指针p找到字符串a的结尾的0值位置
用指针q找到字符串b到起始位置
循环:条件是q指向的位置的值不是0
循环体:将q指向的字符复制到p指向的位置,p和q分别指向顺序下一个位置
p指向的当前位置赋值为字符串结束符'\0'
#include<stdio.h>
void main() { char a[256],b[]={"ab"},*p,*q;
p=a; while ( *p ) p++;
q=b; while ( *q ) { *p=*q; p++; q++; }
*p=0;
printf("%s\n",a);
}

求C语言编程大佬帮忙!这道题的逻辑哪里出错了!找了几个小时了没搞明白...
思路如下:这个问题实际上是生成0~9的全排列,然后根据每个数在格子里的位置判断每个排列是否符合要求。百度了一个全排列算法稍做修改,得到以下代码,输出的有效方案数是1580,在我这里输出大约在70ms到100ms左右。百度这个代码排版垃圾得无以复加,vs里面排得好好复制过来全乱,不再重排了。另外,生成...

哪位大佬可以帮忙解答,matlab如何做这道题?
1、假设给出的数据,符合抛物线回归函数,即 y=b1x²+b2x+b3 2、根据已知x变量序列,创建一个新的X变量矩阵和Y变量矩阵,即 3、用matlab的regress多重线性回归函数,求出抛物线回归函数的系数,即 [b,bint,r,rint,stats] = regress(Y,X)这里,b—系数,bint—b的置信区间,r—残值向量...

哪位大佬能帮看看这道c语言?
a,b都是默认输入升序的数(题目没要求验证,我的代码也不验证,请按升序输入,如需验证升序输入,只需定义一个变量记录输入的数字,并在下次循环输入时比大小。)所以,定义2个指针分别指向a,b最后一个输入的元素地址,嵌套循环,分别往前移动,同时比较两数组元素,每次找到对应位置就将a移位并插入b的...

下面这道题的代码怎么改能运算耗时更短?
注意到好数仅由4或7组成,而n最大为12位 可换个思路,遍历所有不大于n的好数,判断是否有能被n整除的即可 而12位好数最多为2^12个,所以遍历所有的好数会很快 这里给出使用递归遍历所有好数并判断是否能被n整除的代码,运行结果如下:输出符合样例,望采纳~附源码:include <stdio.h> typedef ...

C++一道简单算法题,大佬们看下为什么我的代码不能满分通过?
按题目的意思n<=2*10^9 图中红色框内代码i*j是有可能超过这个范围的,造成整数最大溢出得不到正确结果。应该改为一个for循环,从最大的数开始往小的数搜索,不要用乘法,用除法。for(int i = n-1; n >= sqrt(n); i--){ if(n%i==0)maxNum= i;break;} 当然这些要保证输入的n一定...

这个c语言题目有点难,求大佬帮忙
分别除以1000和取余10即可得到,主要就是百位和十位,给您一个思路:象这种中间的数字,想办法把它变成旁边的数,比如3721,取余1000后就变成了721,再提取7就可以用前面我讲的方法了,十位上的2也是用类似的方法哦。以上是我对您提出问题的解答,希望能帮助到您,不当之处,敬请批评指正。

大佬们求教,这道c语言题目怎么写啊?
题目要求用函数做,如果不用函数编程为:include<stdio.h> void main() { int i,x; double s,t,fz,fm,w;s=1; fz=fm=1; i=1; scanf("%d",&x);while ( 1 ) { \/\/由于不知道循环次数,因此这里设置死循环,然后循环中用if语句退出循环 fz=fz*x; fm=fm*i; t=fz\/fm; if ( t...

这道C语言怎么写?麻烦大佬了
代码没错,更严谨的话应该把sqrt(m+1)改为sqrt(m)我运行是没问题的:如上图所示,成功输出了所有的素数 所以应该是编译器的问题,可以搜索下错误提示具体看看是什么原因 实在不行就重装Visual Studio或者换其他的编译器 其实一些简单的代码在网上随便搜一个在线编译的平台都可以跑,比如python123.io ...

大佬可以说一下这个题的详细步骤吗?
不要研究这种代码,这是浪费时间,因为:编译器会警告你,不要这样写 warning: multiple unsequenced modifications to 'i'warning: multiple unsequenced modifications to 'j'如果你的编译器没有警告,说明正在用的这个编译器已经完成它的历史使命,赶紧升级或者更换吧。

求大佬解决C语言问题
下面是代码:include <stdio.h> include <malloc.h> define JG 60\/\/及格分数线 define MS 3\/\/学生人数 define MC 4\/\/课程数量 int **input();int main(){ int i,j,*p[MS]={NULL},cnt=0;int **stus=NULL;printf("输入的%d个学生%d科成绩分别为:\\n",MS,MC);stus=input();\/\/1、...

相似回答