a,b为测试数据,字符串a中字符已按ASCII码值降序排列,
将字符串b中的ASCII码为偶数的字符依次插入到字符串a中,
使字符串a中字符仍按ASCII码值降序排列。
再删除字符串a中的重复字符,使相同字符只出现一次。
1、void insert(char a[],char b[])函数,按上述规则将字符串b
中字符插入到字符串a中。
2、编写void del(char a[])函数,删除字符串a中的重复字符。
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<ctype.h>
#include<math.h>
void insert(char a[],char b[])
{
/**********Program**********/
/********** End **********/
}
void del(char a[])
{
/**********Program**********/
/********** End **********/
}
int main(){
char a[30]="9777532";
char b[10]= "987645231";
FILE *fp;
if((fp=fopen("data.txt","w"))==NULL)
{
printf("File open error\n");
exit(0);
}
insert(a,b);
fprintf(fp,"After insterting:");
printf("After insterting:");
fprintf(fp,"%s\n",a);
printf("%s\n",a);
del(a);
fprintf(fp,"After deleting:");
printf("After deleting:");
fprintf(fp,"%s\n",a);
printf("%s\n",a);
fclose(fp);
}
#include<stdio.h>
void insert(char a[],char b[])
{
int j, i = 0;
char *p = b, *s = a, *temp; //temp作为中间变量,为一会插入数组做准备
while (*p != '\0')
{
if ((*p - '0') % 2 == 0)
{
b[i++] = *p; //取余2等于0证明是偶数
}
p++;
}
b[i] = '\0'; //最后贴上结束字符
for (p = b; *p != '\0'; s++)
{
if (*p == *s)
{
*s = *p; //如果要插入的数据和已有数据相等,那么直接覆盖
p++;
}
else if (*p < *s && *p > *(s+1))
{
temp = s;
while (1)
{
temp++;
if (*temp == '\0')
{
*(temp + 1) = '\0'; //重新设置'\0'的位置
while (temp != (s+1)) //数组需要后移,把插入数字的位置腾出来
{
*temp = *(temp-1);
temp--;
}
*temp = *p;
p++;
break;
}
}
}
}
}
void del(char a[])
{
char *p, *s, *temp;
for (p = a; *p != '\0'; p++)
{
for (s = p+1; *s != '\0'; s++)
{
if (*s == *p)
{
*s = '0'; //把重复字符都变成0
}
}
if (*(p + 1) == '0')
{
temp = p+1;
while (*(temp + 1) == '0') //让p越过字符0
{
temp++;
}
p = temp;
}
}
for (p = a; *p != '\0'; p++)
{
if (*p == '0') //寻找为0的字符
{
temp = p;
while (*temp == '0' && *temp != '\0')
{
temp++; //一直向后寻找,直到找到第一个不为0的字符
}
if (*temp == '\0')
{
break;
}
*p = *temp; //找到不为0的字符后,把他们交换
*temp = '0';
}
}
for (p = a; *p != '0'; p++)
;
*p = '\0';
}
int main()
{
char a[30]="9777532";
char b[10]= "987645231";
char *p;
insert(a, b);
del(a);
for (p = a; *p != '\0'; p++)
{
printf("%c ", *p);
}
return 0;
}
|