|
//对一个长度为n的字符串从其第k个字符起,删去m个字符,组成长度为n-m新字符串,并输出处理后的字符串。用自定义函数实现。 |
|
| 10分 |
/**************************************
*FILE :D:\c\main.c
*PROJECT :NULL
*AUTHOR :707wk
*CREATED :2015-5-14 下午 10:18:01
*TEXT :对一个长度为n的字符串从其第k个字符起,删去m个字符并输出
*EMAIL :gtsoft_wk@foxmail.com
*CODE :https://github.com/707wk
***************************************/
#include <stdio.h>
void strcatstr(char* str1,char *str2)
{
while(*str1)str1++;
while(*str1++=*str2++);
}
int main()
{
int start;
int end;
char str[100];
printf("请输入字符串:\n");
scanf("%s",str);
printf("请输入开始删除的字符位置:");
scanf("%d",&start);
printf("请输入删去字符的个数:");
scanf("%d",&end);
str[start-1]=""\0"";
strcatstr(str,str+start+end-1);
printf("处理后的字符串为:%s\n",str);
return 0 ;
}
|
|
修改如下:
//对一个长度为n的字符串从其第k个字符起,删去m个字符,组成长度为n-m新字符串,并输出处理后的字符串。用自定义函数实现。
#include <stdio.h>
#include <stdlib.h>
char *fact(int n, int m, int k, char *str1, char *str2);
int main()
{
int n, m, k, i;
char *str1, *str2;
printf("请输入长度n:\n");
scanf("%d", &n);
str1 = (char*)malloc(n*sizeof(char));
printf("请输入删去字符的个数m:\n");
scanf("%d", &m);
str2 = (char*)malloc((n - m)*sizeof(char));
printf("请输入开始删除的字符个数:\n");
scanf("%d", &k);
printf("请输入长度为%d的字符串:\n", n);
getchar(); //读入回车
for (i = 0; i<n; i++)
{
scanf("%c", str1 + i);
}
str1[i] = 0; //加结束符
str2 = fact(n, m, k, str1, str2);
printf("处理后的字符串为:%s\n", str2);
return 0;
}
char *fact(int n, int m, int k, char *str1, char *str2)
{
int i;
for (i = 0; i < k; i++)
{
*(str2 + i) = *(str1 + i);
}
for (i = 0; i < n - m; i++) //n - m
{
*(str2 + k + i) = *(str1 + k + m + i);
}
*(str2 + k + i) = ""\0"";
return str2;
}
|
|
| 30分 |
还得确保你的输入是合法的
|
