0
点赞
收藏
分享

微信扫一扫

输入两个长度不定的字符串,将它们合并,并按各字符ASCII码从小到大顺序输出(使用指针)


C语言第九周作业(二)

内容为本周第九周课后作业

以下combine函数内的东西可以用strcat替代

每天都告诉自己冲就完事了

题目内容:输入两个长度不定的字符串,将它们合并,并按各字符ASCII码从小到大顺序输出

输入两个长度不定的字符串,将它们合并,并按各字符ASCII码从小到大顺序输出(使用指针)_#define


思路:很简单,先用combine实现字符串的组合,接着用sort按照冒泡排序实现题目要求!!!

#include<stdio.h>
#include<string.h>
#define
#define
//今天也要努力鸭!!加油冲冲冲!!!!!
char *combine(char *,char *,char *);//实现字符串的合并 然后做完了以后发现可以用strcat 但是暂时没学过
char *sort(char *); //实现按照ASCII升序排列

int main()
{
char a[M_1],b[M_1];
char c[M_2];
printf("请输入第一个字符串:");
gets(a);
printf("请输入第二个字符串:");
gets(b);
combine(a,b,c);
sort(c);
printf("长度:%d\n",strlen(c));
printf("排序后的字符串为:");
puts(c);
}

char *combine(char *a,char *b,char *c)
{
int i,j;
for(i=0;a[i]!='\0';i++)
{
*(c+i)=*(a+i);
}
for(j=0;b[j]!='\0';j++)
{
*(c+i+j)=*(b+j);
}
*(c+i+j) = '\0';
return c;
}

char *sort(char *c)
{
int count,i,j;
char tmp;
count=strlen(c);
for(i=0;i<count-1;i++)
{
for(j=0;j<count-1-i;j++)
{
if(*(c+j)>*(c+j+1))
{
tmp=*(c+j);
*(c+j)=*(c+j+1);
*(c+j+1)=tmp;
}
}
}
return c;
}

总结:在函数体中

=*(c+j);
*(c+j)=*(c+j+1);
*(c+j+1)=tmp;

我不知道为什么只要使用char temp就可以让这个成功实现,而char temp[20]则不行,希望有一天可以解决并且能够回来解决这个问题


举报

相关推荐

字符串的输入和输出

0 条评论