//对一个长度为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分 |
还得确保你的输入是合法的
|