C语言 百炼成钢24

/*
题目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-08-10 17:18:40

C语言 百炼成钢24的相关文章

程序猿之---C语言细节24(段错误、类型提升、sizeof &#39;A&#39;)

主要内容:段错误.类型提升.sizeof  'A' #include <stdio.h> int main() { union test{ char a[10]; int b; }u; int *p = (int *)&(u.a[1]); // 没有引起总线错误 *p = 17; printf("%d\n",*p); #if 0 int *q = 0; // 引起段错误,在linux中运行可看到段错误,在windows下运行时直接出错 *q = 1; #endif

寒城攻略:Listo 教你 25 天学会 Swift 语言 - 24 Generics

import Foundation //*********************************************************************************************** //1.Generics(泛型) //_______________________________________________________________________________________________ //介绍 //泛型代码可以让你写出根据

C语言 百炼成钢21

//题目57:编写一个业务函数,实现字符串(前后各有三个空格,单词前后也均有空格) //" i am student, you are teacher " , //各个单词首字符大写,结果如下" i am student, you are teacher " , //要求1:实现所有接口 70 //要求2:写出测试程序 30 #include<stdio.h> #include<stdlib.h> #include<string.h&g

C语言 百炼成钢22

/* 题目58: 编写一个业务函数,实现按行读取文件.把内容按照第三种内存模型打包数据传出,把行数通过函数参数传出. 函数原型有两个,任意选择其一 要求1:请自己任意选择一个接口(函数),并实现功能:70分 要求2:编写测试用例.30分 要求3:自己编写内存释放函数 */ #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> //按行读取文件 int

C语言 百炼成钢27

/* 题目63:编写C++程序完成以下功能: (1)声明一个纯虚函数类Shape(形状),其中包含来计算面积.计算周长的方法: (2)从Shape派生两个类矩形和圆形: (3)从矩形派生正方形: (4)分别实现派生类构造函数.析构函数和其他方法: (5)创建派生类的对象,观察构造函数.析构函数调用次序: (6)利用抽象类做函数参数(基类指针指向子类对象,多态特性),计算不同对象的面积和周长. */ #define _CRT_SECURE_NO_WARNINGS #include<iostream

C语言 百炼成钢17

//题目49:老师将糖果分成若干份,让学生按任意次序领取,第一个领取的,得到1份加上剩余糖果的1/10, //第二个领取的,得到2份加上剩余糖果的1/10,第三个领取的,得到3份加上剩余糖果的1/10,以此类推, //求共有多少个学生,多少份糖果 #include<stdio.h> #include<stdlib.h> //思路:该题的要求是求一个糖果的数量,这个数量必须保证每个学生领取到的糖果都是整份数,并不要求所有学生分的糖果分数一样 //根据多定义变量,简化运算难度规则,定义

C语言 百炼成钢16

//题目46:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只 //猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了 //一个,它同样把多的一个扔入海中,拿走了一份,第三.第四.第五只猴子都是这样做的, //问海滩上原来最少有多少个桃子? #include<stdio.h> #include<stdlib.h> //分析:最少有多少个桃子,说明是满足条件的最小数:假设有X个桃子,第一个猴子的桃子数量是(X-1)/5,

C语言 百炼成钢11

//题目31:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 //判断第二个字母. #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> //分析:通过输入的字母判定星期几,可以使用if()else void main(){ char str[7] = { 0 }; scanf("%s",str); switc

C语言 百炼成钢10

//题目28:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁.问第4个人岁数,他说比第 //3个人大2岁.问第三个人,又说比第2人大两岁.问第2个人,说比第一个人大两岁.最后 //问第一个人,他说是10岁.请问第五个人多大? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> //分析:经过阅读,发现f(5)=f(4)+2;f(4)=f(3)