/* 题目60:从键盘中输入一个不超过40个字符的字符串, 再输入3个位数(每次删除一个字符),删除对应 位数的字符,然后输出删除指定字符后的字符串。 输入:hellokityManGood 3 6 9 helokityManGood heloktyManGood heloktyMnGood 输出:heloktyMnGood 要求1:编写业务接口并实现核心功能 70分 要求2:写出测试用例 30分 */ #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> //思路:在原来字符串上进行删除,需要将后面的所有字符都向前移动一位,感觉比较麻烦 //决定每次只删除一个字符 可以把这个字符以一个特殊代替,重新遍历字符,把除了这个字符外的字符写入新字符串 //删除指定字符 int RemoveStr(char *pin/*in*/,int index){ int ERRO_MSG = 0; if (pin==NULL) { ERRO_MSG = 1; printf("pin==NULL erro msg:%d\n", ERRO_MSG); return ERRO_MSG; } int i = 0,k=0; int numx = (int)strlen(pin); char buf[40] = { 0 }; for (i = 0; i < numx; i++) { if (index!=(i+1)) { buf[k++] = *(pin+i);//注意buf是按条件自增 } } //清空原始字符串 memset(pin, 0, sizeof(char)* 40); //拷贝新的字符串 strcpy(pin, buf); printf("新的字符串是%s\n", pin); return ERRO_MSG; } void main(){ char buf[40] = { 0 }; int num = 0; printf("请输入不超过40个字符的字符串!\n"); scanf("%s", buf); while (1){ printf("请输入一个数字\n"); scanf("%d",&num); RemoveStr(buf, num); } system("pause"); }
时间: 2024-10-14 03:17:41