【高分悬赏】C语言编程题 指针

1.用指针法实现:有一个字符串,包括n个字符。写一个函数(该函数参数是字符指针),将此字符串从第m个字符开始的全部字符复制成另一个字符串。要求在主函数输入字符串及m值并输... 1.用指针法实现:有一个字符串,包括n个字符。写一个函数(该函数参数是字符指针),将此字符串从第m个字符开始的全部字符复制成另一个字符串。要求在主函数输入字符串及m值并输出复制结果。

2..实现从键盘输入两个字符串,分别存入两个不同的字符数组中;将两个字符串连接为一个字符串,并打印输出连接后的整个字符。不用strcat函数实现字符串连接功能函数strcat的功能.请编写并调试运行程序,要求用指针实现。

3.在一个已排好序(由小到大)的数组中查找待插入数据x应插入的位置,使其插入后,数组元素仍保持由小到大的顺序。要求插入算法分别用以下方法实现:1.)实参用数组名,形参也用数组名 2.)实参用数组名,形参用指针变量

4.编写并调试程序:在一个数组中删除指定元素的,要求:删除功能放在一自定义函数中,并用指针变量做函数形参,在主函数中输入数组并输出删除元素后的数组。
只要解答第四题即可,前三道题本人已经想出来了
展开
 我来答
georangel
2010-05-05 · TA获得超过541个赞
知道小有建树答主
回答量:319
采纳率:0%
帮助的人:356万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 20
#define MAX_DST 200
char *sub_str_cp(char *src, char *dst, int m)
{
char *dst_o = dst;
if (NULL==src || NULL==dst ||
strlen(src)>MAX_N || m<1 || m>MAX_N)
return NULL;
src += m-1;
while (*(dst++) = *(src++));
return dst_o;
}

char *str_join(char *src1,char *src2,char *dst)
{
char *dst_o = dst;
if (NULL==src1 || NULL==src2 || NULL==dst)
return NULL;
while (*(dst++) = *(src1++));
dst -= 1;
while (*(dst++) = *(src2++));
return dst_o;
}

int ins_sort(int iArr[],int num,int new_one)
{
if (NULL == iArr || num+1 >= MAX_DST)
return 0;
int *p = iArr + num - 1;
while (p >= iArr && new_one < *p)
{
*(p+1) = *(p);
p--;
}
*(p+1) = new_one;
return num+1;
}

// 删除从字符数组dst中首次出现的字符del_c
char *del_char(char *dst,char del_c)
{
int idx = 0;
char *dst_o = dst;
if (NULL == dst) return NULL;
while ('\0' != *dst)
{
if (*(dst++) != del_c)
*(dst_o + idx++) = *(dst-1);
}
return dst_o;
}

int main()
{
char src[MAX_N+1],src1[MAX_N+1],src2[MAX_N+1];
char dst[MAX_DST+1];
char cA;
int ins_new,num_of_iArr,iA;
int iSort[MAX_DST] = {12,23,32,55,100,101,205,309};
// sub str cp
int m;
printf("subject 1. strcpy\n");
printf("input string(length <= %d):",MAX_N);
scanf("%s",src);
printf("copy string from position(1=<m<=%d):",MAX_N);
scanf("%d",&m);
printf("string have been copied:%s\n",sub_str_cp(src,dst,m));

// str join
printf("\nsubject 2. strcat\n");
printf("input string1(length <= %d):",MAX_N);
scanf("%s",src1);
printf("input string2(length <= %d):",MAX_N);
scanf("%s",src2);
printf("string after joining:%s\n",str_join(src1,src2,dst));

// array sort
printf("\nsubject 3. sorting\n");

num_of_iArr = 8;
printf("oringinal array:\n");
for (iA=0; iA<num_of_iArr; iA++)
printf("%d\t",iSort[iA]);

printf("\ninsert an integer:");
scanf("%d",&ins_new);
num_of_iArr = ins_sort(iSort,num_of_iArr,ins_new);
printf("array after sorting:\n");
for (iA=0; iA<num_of_iArr; iA++)
printf("%d\t",iSort[iA]);
printf("\n");

// del elem of array
getchar();
printf("\nsubject 4. del\n");
printf("string:%s\n",dst);
printf("del ? character from above string:");
scanf("%c",&cA);
printf("string after deleting %c:%s\n",cA,del_char(dst,cA));

return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wang433
2010-05-06 · TA获得超过969个赞
知道小有建树答主
回答量:320
采纳率:0%
帮助的人:120万
展开全部
好吧,我来做:

#include <stdio.h>

/*把s中的所有x删除,并返回剩下元素数*/
int DelElem(int *s,int n,int x)
{
int i,j;
for(i=0;i<n;i++)
if(x==s[i])
{
for(j=i;j<n-1;j++)
{ s[j]=s[j+1];n--;}
}
return n;
}

int main( )
{
int a[]={2,6,4,5,6,7,8,10,5,6,7};
int n;

n=sizeof(a)/sizeof(int);
n=DelElem(a,n,6);
for(i=0;i<n;i++)
printf("%4d",a[i]);
printf("\n");
return 1;
}
好了,请给分,虽然没有调试,但是应该没有什么错误,呵呵.

参考资料: 不需要参考,我就是参考,呵呵

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
魔尊8
2010-05-05 · TA获得超过1125个赞
知道小有建树答主
回答量:535
采纳率:0%
帮助的人:564万
展开全部
四个大题,多得都不敢做啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式