1. 实现  mystrcpy(), mystrcmp(), mystrcat(), mystrlen() ;

    #include<stdio.h>
    #include<stdlib.h> int mystrlen(char *c)
    {
    int i=;
    while (c[i]!='\0')i++;
    return i;
    }
    int mystrcmp(char *c1,char *c2)
    {
    int i = , j = ;
    for (; c1[i] != '\0'&&c2[i] != '\0'; i++)
    {
    if (c1[i] < c2[i])return -;
    else if (c1[i] == c2[i])continue;
    else return ;
    }
    return ;
    }
    char* mystrcopy(char *c1, char *c2)
    {
    int i = , j = ; while (c2[j] != '\0')c1[i++] = c2[j++]; c1[i] = '\0';
    return c1;
    }
    char* mystrcat(char *c1, char *c2)
    { int i = , j = ;
    while (c1[i] != '\0')i++; while(c2[j] != '\0')c1[i++] = c2[j++]; c1[i] = '\0';
    return c1;
    }
    int main()
    {
    char c1[] = "hello ", c2[] = "woel";
    printf("%d\n",mystrlen(c1));
    printf("%d\n", mystrcmp(c1, c2));
    mystrcat(c1, c2);
    printf("%s\n", c1);
    mystrcopy(c1, c2);
    printf("%s\n", c1); system("pause");
    return ;
    }

    2.输入一行字符串(单词和若干空格), 输出该行单词个数。

    Input:____hello_________world_ how___are___you___\n

      Output:   5

#include<stdio.h>
#include<stdlib.h> int fun(char *c)
{
int i = ,cnt=;
while (c[i] != '\0')
{
if (c[i] == ' ')
{
i++;
if (c[i] != ' ')cnt++;
}
else i++; }
return cnt;
} int main()
{
char c1[] = "hello world how are you ";
puts(c1);
printf("%d",fun(c1)); system("pause");
return ;
}

3.输入一行字符串(单词和若干空格),输出该行单词(每个单词一行)

Input:____hello_________world_ how___are___you___\n

Output:   hello

world

how

are

You

#include<stdio.h>
#include<stdlib.h> void fun(char *c)
{
int i = ,cnt=;
while (c[i] != '\0')
{
if (c[i] == ' ')
{
i++;
continue;
}
if (c[i] != ' ')
{
printf("%c", c[i]);
i++;
if (c[i] == ' ')printf("\n");
} }
} int main()
{
char c1[] = "hello world how are you ";
puts(c1);
fun(c1); system("pause");
return ;
}

4.输入一行字符串,把字符串翻转 。

Input: I____am__a__student

Output: student__a__am____I

1、直接翻转一下

2、把每个单词找出来,原地自身翻转

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void fun1(char *c)
{
int i = strlen(c) - 1;

while (i >= 0)
{
printf("%c", c[i]);
i--;
}
//printf("\n");
}
void strcut(char *s, char *sub) //用参数sub来保存结果,所以函数不用返回值了
{
int i=0, j = 0, k = 0;
for (i = strlen(s)-1; i >=0 ; i--)
{
//printf("%c", s[i]);
if (s[i] != ' ')
{
sub[j++] = s[i];
if (s[i-1] == ' '||i==0)
{
sub[j] = '\0';
fun1(sub); printf(" ");
j = 0;
}

}

}
}

int main()
{
char c1[] = "hello world how are you ";
puts(c1);
fun1(c1);
printf("\n");
char ps[100]; //用来保存截取子串的必须是数组,不能是指针
static char s[] = "hello world how are you ";
strcut(s, ps);
//printf("%s\n", ps);
system("pause");
return 0;
}

算法实现c语言--03的更多相关文章

  1. 【最全】经典排序算法(C语言)

    算法复杂度比较: 算法分类 一.直接插入排序 一个插入排序是另一种简单排序,它的思路是:每次从未排好的序列中选出第一个元素插入到已排好的序列中. 它的算法步骤可以大致归纳如下: 从未排好的序列中拿出首 ...

  2. 魔方阵算法及C语言实现

    1 魔方阵概念 填充的,每一行.每一列.对角线之和均相等的方阵,阶数n = 3,4,5….魔方阵也称为幻方阵. 例如三阶魔方阵为: 魔方阵有什么的规律呢? 魔方阵分为奇幻方和偶幻方.而偶幻方又分为是4 ...

  3. 一个UUID生成算法的C语言实现 --- WIN32版本 .

    一个UUID生成算法的C语言实现——WIN32版本   cheungmine 2007-9-16   根据定义,UUID(Universally Unique IDentifier,也称GUID)在时 ...

  4. 无限大整数相加算法的C语言源代码

    忙里偷闲,终于完成了无限大整数相加算法的C语言代码,无限大整数相加算法的算法分析在这里. 500位的加法运行1000次,不打印结果的情况下耗时0.036秒,打印结果的情况下耗时16.285秒. 下面是 ...

  5. 数据结构算法集---C++语言实现

    //数据结构算法集---C++语言实现 //各种类都使用模版设计,可以对各种数据类型操作(整形,字符,浮点) /////////////////////////// // // // 堆栈数据结构 s ...

  6. 1164: 零起点学算法71——C语言合法标识符(存在问题)

    1164: 零起点学算法71——C语言合法标识符 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 10 ...

  7. PID算法(c 语言)(转)

    PID算法(c 语言)(来自老外) #include <stdio.h> #include<math.h> //定义PID 的结构体 struct _pid { int pv; ...

  8. 一个UUID生成算法的C语言实现——WIN32版本

    源: 一个UUID生成算法的C语言实现——WIN32版本

  9. 排序算法总结(C语言版)

    排序算法总结(C语言版) 1.    插入排序 1.1     直接插入排序 1.2     Shell排序 2.    交换排序 2.1     冒泡排序 2.2     快速排序 3.    选择 ...

随机推荐

  1. 百科知识 DCR文件如何打开

    使用IE可以打开,但是需要先安装Adobe Shockwave Player 天空软件下载地址:http://fpdownload.macromedia.com/get/shockwave/defau ...

  2. 百科知识 .tar.xz文件如何打开

    7-ZIP可以打开,右击提取到当前目录即可   发现这个压缩比例还是相当不一般的,都快十倍了.

  3. 初涉IPC,了解AIDL的工作原理及用法

    初涉IPC,了解AIDL的工作原理及用法 今天来讲讲AIDL.这个神奇的AIDL,也是近期在学习的,看了某课大神的解说写下的blog,希望结合自己的看法给各位同价通俗易懂的解说 官方文档:http:/ ...

  4. sonar+Jenkins代码覆盖率检测

    最近公司在搞代码覆盖率检查,简单看了一下结合Jenkins +jacoco + sonar做了一下主要涉及到项目层面和Jenkins层面的东西: 这里只讲一下集成,不讲解sonar的安装Jenkins ...

  5. Spring学习【Spring概述】

    从本文開始,我们就要一起学习Spring框架,首先不得不说Spring框架是一个优秀的开源框架. 当中採用IoC原理实现的基于Java Beans的配置管理和AOP的思想都是非常值得学习与使用的.以下 ...

  6. 通过路由管理视图间切换 - AngularJS路由解析

    模板的视图刷新 ng-view这个指令和路由组合之后就可以将$route对应的视图放入指定的HTML中,这一过程中它会创建自己的作用域并将模板嵌套在内部. ng-view指令的优先级是1000(终极) ...

  7. JSP 随记

    jstl <c:forEach> 遍历,多个<option>时显示"全部".单个 option时,默认选中! 引入:<%@ taglib prefix ...

  8. AQS实现公平锁和非公平锁

    https://www.cnblogs.com/chengdabelief/p/7493200.html AQS(AbstractQueuedSynchronizer类)是一个用来构建锁和同步器的框架 ...

  9. 关于Darwin接入私有协议、私有SDK码流的讨论

          最近做到云视频/云监控的项目,跟团队伙伴讨论到一个架构问题,就是将私有协议的码流数据接入到Darwin,再通过Darwin对外提供高效的RTSP/RTP服务.说到私有协议接入Darwin, ...

  10. easyui Combotree 怎么加载数据 支持多选

    1.开发环境vs2012 mvc4  c# 2.HTML前端代码 <%@ Page Language="C#" AutoEventWireup="true" ...