【高分悬赏】C语言编程题 指针
1.用指针法实现:有一个字符串,包括n个字符。写一个函数(该函数参数是字符指针),将此字符串从第m个字符开始的全部字符复制成另一个字符串。要求在主函数输入字符串及m值并输...
1.用指针法实现:有一个字符串,包括n个字符。写一个函数(该函数参数是字符指针),将此字符串从第m个字符开始的全部字符复制成另一个字符串。要求在主函数输入字符串及m值并输出复制结果。
2..实现从键盘输入两个字符串,分别存入两个不同的字符数组中;将两个字符串连接为一个字符串,并打印输出连接后的整个字符。不用strcat函数实现字符串连接功能函数strcat的功能.请编写并调试运行程序,要求用指针实现。
3.在一个已排好序(由小到大)的数组中查找待插入数据x应插入的位置,使其插入后,数组元素仍保持由小到大的顺序。要求插入算法分别用以下方法实现:1.)实参用数组名,形参也用数组名 2.)实参用数组名,形参用指针变量
4.编写并调试程序:在一个数组中删除指定元素的,要求:删除功能放在一自定义函数中,并用指针变量做函数形参,在主函数中输入数组并输出删除元素后的数组。
只要解答第四题即可,前三道题本人已经想出来了 展开
2..实现从键盘输入两个字符串,分别存入两个不同的字符数组中;将两个字符串连接为一个字符串,并打印输出连接后的整个字符。不用strcat函数实现字符串连接功能函数strcat的功能.请编写并调试运行程序,要求用指针实现。
3.在一个已排好序(由小到大)的数组中查找待插入数据x应插入的位置,使其插入后,数组元素仍保持由小到大的顺序。要求插入算法分别用以下方法实现:1.)实参用数组名,形参也用数组名 2.)实参用数组名,形参用指针变量
4.编写并调试程序:在一个数组中删除指定元素的,要求:删除功能放在一自定义函数中,并用指针变量做函数形参,在主函数中输入数组并输出删除元素后的数组。
只要解答第四题即可,前三道题本人已经想出来了 展开
展开全部
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好吧,我来做:
#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;
}
好了,请给分,虽然没有调试,但是应该没有什么错误,呵呵.
#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;
}
好了,请给分,虽然没有调试,但是应该没有什么错误,呵呵.
参考资料: 不需要参考,我就是参考,呵呵
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
四个大题,多得都不敢做啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询