算法实现c语言--03
- 实现 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的更多相关文章
- 【最全】经典排序算法(C语言)
算法复杂度比较: 算法分类 一.直接插入排序 一个插入排序是另一种简单排序,它的思路是:每次从未排好的序列中选出第一个元素插入到已排好的序列中. 它的算法步骤可以大致归纳如下: 从未排好的序列中拿出首 ...
- 魔方阵算法及C语言实现
1 魔方阵概念 填充的,每一行.每一列.对角线之和均相等的方阵,阶数n = 3,4,5….魔方阵也称为幻方阵. 例如三阶魔方阵为: 魔方阵有什么的规律呢? 魔方阵分为奇幻方和偶幻方.而偶幻方又分为是4 ...
- 一个UUID生成算法的C语言实现 --- WIN32版本 .
一个UUID生成算法的C语言实现——WIN32版本 cheungmine 2007-9-16 根据定义,UUID(Universally Unique IDentifier,也称GUID)在时 ...
- 无限大整数相加算法的C语言源代码
忙里偷闲,终于完成了无限大整数相加算法的C语言代码,无限大整数相加算法的算法分析在这里. 500位的加法运行1000次,不打印结果的情况下耗时0.036秒,打印结果的情况下耗时16.285秒. 下面是 ...
- 数据结构算法集---C++语言实现
//数据结构算法集---C++语言实现 //各种类都使用模版设计,可以对各种数据类型操作(整形,字符,浮点) /////////////////////////// // // // 堆栈数据结构 s ...
- 1164: 零起点学算法71——C语言合法标识符(存在问题)
1164: 零起点学算法71——C语言合法标识符 Time Limit: 1 Sec Memory Limit: 64 MB 64bit IO Format: %lldSubmitted: 10 ...
- PID算法(c 语言)(转)
PID算法(c 语言)(来自老外) #include <stdio.h> #include<math.h> //定义PID 的结构体 struct _pid { int pv; ...
- 一个UUID生成算法的C语言实现——WIN32版本
源: 一个UUID生成算法的C语言实现——WIN32版本
- 排序算法总结(C语言版)
排序算法总结(C语言版) 1. 插入排序 1.1 直接插入排序 1.2 Shell排序 2. 交换排序 2.1 冒泡排序 2.2 快速排序 3. 选择 ...
随机推荐
- OpenGL超级宝典笔记——深度纹理和阴影 【转】
目录[-] 光源视角 新型的纹理 深度纹理的大小 首先绘制阴影 然后是光照 投影阴影贴图 阴影比较 之前我们介绍过简单的把物体压平到投影平面来制造阴影.但这种阴影方式有其局限性(如投影平面须是平面). ...
- 使用TypeDescriptor给类动态添加Attribute【转】
源文 : http://www.cnblogs.com/bicker/p/3326763.html 给类动态添加Attribute一直是我想要解决的问题,从msdn里找了很久,到Stack Overf ...
- [MFC]选择目录对话框和选择文件对话框 [转]
在MFC编程中经常会需要用到选择目录和选择文件的界面,以下总结一下本人常用的这两种对话框的生成方法: 选择目录对话框 { char szPath[MAX_PATH]; //存放选择的 ...
- 【工作笔记】Git与Github经常使用使用方法
Git安装 http://www.liaoxuefeng.com/ Git配置用户信息: git config –global user.name "SCOTT" git conf ...
- 怎样使用Entityframework.Extended
这个插件真的非常有用,我们能够使用下面语法来简化我们的工作,下面不过演示样例: Deleting <strong>//delete all users where FirstName ma ...
- 解决Gradle执行命令时报Could not determine the dependencies of task ':compileReleaseJava'.
Could not determine the dependencies of task ':compileReleaseJava'. > failed to find target andro ...
- react 调用 function 的写法 及 解决 react onClick 方法自动执行
1.react 调用方法的写法 (1)方式一 onClick={this.getFetchData.bind(this,item.id)} (2)方式二 getFetchData(e){ this.s ...
- Sencha touch 初体验
一.什么是Sencha Touch? Sencha Touch是一个应用手持移动设备的前端js框架,与extjs是同一个门派的,它继承了extjs的优点和缺点.功能很强大,效果很炫丽,效率不高. 二. ...
- VueJS数据绑定文本显示:{{message}}
HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...
- lowB三人组代码示例
冒泡排序:列表在内存重只存一份,所以不需要重复赋值 import random from timewrap import * #时间装饰器 # 初级版本 @cal_time def bubble_so ...