本篇提供了关于C语言程序设计中字符串部分的经典案例,可供C语言的初学者们进行一个学习和编译练习。

/*Case 1
字符串替换
实现字符串“Good morning!”到“Good evening!”的转换*/

char* MyReplace(char* s1, char* s2, int pos) {   //自定义的替换函数int i, j;i = 0;for ( j = pos; s1[j]!='\0';j++)     //从原字符串指定位置开始替换{if (s2[i]!='\0')                //判断有没有遇到结束符{s1[j] = s2[i];              //将替换内容逐个替换i++;}else{break;}}return s1;
}
int main() {char str1[50] = "Good morning!";char str2[50] = "evening";int position;                          //定义整型变量存储要替换的位置printf("替换前的字符串:\n%s\n", str1);printf("请输入你想替换的位置:\n");scanf("%d", &position);MyReplace(str1, str2, position);       //调用替换函数printf("替换后的字符串:\n%s\n", str1);return 0;
}

/*Case 2
删除字符串中的字串
从键盘输入一个字符串,输入要删除的字符串起始位置及长度,然后输出删除后的字符串*/

char* del(char s[], int pos, int len) {int i;for ( i = pos+len-1; s[i]!='\0'; i++,pos++){//i的初值为指定删除部分后面的第一个字符s[pos - 1] = s[i];}s[pos - 1] = '\0';return s;
}
int main() {char str[50];int position;int length;printf("请输入字符串:\n");gets(str);printf("请输入要删除的位置:\n");scanf("%d", &position);printf("请输入要删除的长度:\n");scanf("%d", &length);del(str, position, length);printf("删除后的字符串为:\n%s\n",str);return 0;
}

 /*Case 3
到底有多少单词
首先在屏幕上输入一句话,每个单词之间用空格隔开,要求第一个字符和最后一个字符都不能为空格;
然后统计出这句话的单词数量,并把结果输出到屏幕上*/

int main() {char str[50];                   //定义保存字符串的数组int i, count = 1;               //count表示单词的个数char blank;                     //表示空格printf("请输入字符串:\n");     gets(str);                      //输入字符串if (str[0]=='\0')               //判断如果字符串为空的情况{printf("No Words!\n");}else{for ( i = 0; str[i] != '\0'; i++)  //循环判断每一个字符{blank = str[i];                //得到数组中的字符元素if (blank==' ')                //判断是不是空格{count++;                   //如果是则加一}}printf("There are %d words in this sentence.\n", count);}return 0;
}

 /*Case 4
在指定位置插入字符*/

void insert(char s[], char t, int i) {char str[100];strncpy(str, s, i);        //将s数组中前i个字符复制到str中str[i] = t;                //把t放到str后边str[i + 1] = '\0';         //结束strstrcat(str, (s + i));      //将剩余的字符串连接到strstrcpy(s, str);            //将str复制到s中
}
int main() {char str[100], c;int position;printf("请输入字符串:\n");gets(str);printf("请输入要插入的字符:\n");scanf("%c", &c);printf("请输入要插入的位置:\n");scanf("%d", &position);insert(str, c, position);puts(str);return 0;
}

 /*Case 5
禁用strcpy()
不使用strcpy()函数,把字符串1中的内容复制到字符串2中*/

int main() {char s1[50], s2[50];int i = 0;printf("请输入字符串:\n");gets(s1);while (s1[i]!='\0'){s2[i] = s1[i];i++;}s2[i] = '\0';printf("复制的结果是:\n");puts(s2);return 0;
}

 /*Case 6
那些字符串
对“c language”、“hello world”、“itcast”、“strcmp”和“just do it”
这五个字符串按照首字母大小进行由小到大的排序,并将结果输出*/

void sort(char* strings[], int n) {char* temp;int i, j;//选择排序法for ( i = 0; i < n-1; i++){for ( j = i+1; j < n; j++){if (strcmp(strings[i],strings[j])>0){temp = strings[i];strings[i] = strings[j];strings[j] = temp;}}}
}
int main() {int n = 5;int i;char* strings[] = { "c language","hello world","itcast","strcmp","just do it"};sort(strings, n);for ( i = 0; i < n; i++){printf("%s\n", strings[i]);}return 0;
}

 /*Case 7
你中有我
字符串1和字符串2,查找在字符串1中是否有字符串2*/

int main() {char str1[30], str2[30], * p;printf("请输入字符串1:\n");gets(str1);printf("请输入字符串2:\n");gets(str2);p = strstr(str1, str2);    //确定str1中是否包含str2if (p){printf("str1包含str2!\n");}else{printf("str1不包含str2!\n");}return 0;
}

 /*Case 8
密码疑云
设计一种算法,把电文明文加密之后变成密文,利用解密函数才能对密文解密,显示出明文内容*/

int main() {int flag = 1;int i;int count = 0;char MingWen[128] = { '\0' };char MiWen[128] = { '\0' };while (1){if (flag == 1){printf("请输入要加密的明文:");scanf("%s", &MingWen);count = strlen(MingWen);for (i = 0; i < count; i++){MiWen[i] = MingWen[i] + 3;}MiWen[i] = '\0';//输出密文信息printf("加密后的密文:%s\n", MiWen);}else if (flag==2){printf("请输入要解密的密文:");scanf("%s", &MiWen);count = strlen(MiWen);for (i = 0; i < count; i++){MingWen[i] = MiWen[i]-3;}MingWen[i] = '\0';//输出明文信息printf("解密后的明文:%s\n", MingWen);}else if(flag==3){break;}else{printf("命令错误,请重新输入!\n");}printf("#################\n");printf("#   1.加密明文  #\n");printf("#   2.解密密文  #\n");printf("#   3.退出程序  #\n");printf("#################\n");scanf("%d", &flag);}return 0;
}

 /*Case 9
回文字符串
从键盘上输入字符串,判断其是否为回文字符串*/

方法一

//方法1
int fun(int low, int high, char* str, int length) {if (length==0||length==1){return 1;}if (str[low]!=str[high]){return 0;}return fun(low + 1, high - 1, str, length - 2);
}
int main() {int length = 0;char ch, str[50];printf("请输入一个字符串:\n");while ((ch=getchar())!='\n'){str[length] = ch;length++;}if (fun(0,length-1,str,length)==1){printf("YES!\n");}else{printf("NO!\n");}return 0;
}

 方法二

//方法二
int fun(char* begin, char* end) {if (begin==NULL||end==NULL||begin>end){return 0;}while (begin<end){if (*begin!=*end){return 0;}begin++;end--;}return 1;
}
int main() {int length = 0;char ch, str[50];char* begin = NULL;char* end = NULL;printf("请输入一个字符串:\n");while ((ch=getchar())!='\n'){str[length] = ch;length++;}begin = str;end = &str[length - 1];if (fun(begin,end)==1){printf("YES!\n");}else{printf("NO!\n");}return 0;
}

本篇的所有代码是在VS编译环境下操作的,如有错误,望大家指正!!!

C语言经典案例——第六章 字符串相关推荐

  1. C语言经典案例——第三章 函数

    本篇提供了关于C语言程序设计中函数部分的经典案例,可供C语言的初学者们进行一个学习和编译练习. /*Case 1 求n个数的平均值*/ int avg(int n) { //定义avg()函数int ...

  2. C语言经典案例——第四章 数组

    本篇提供了关于C语言程序设计中数组部分的经典案例,可供C语言的初学者们进行一个学习和编译练习. /*Case 1 最大值和最小值 先输入数组的大小和各个数组元素,然后求出数组中的最大值和最小值,以及他 ...

  3. python字符串分片_Python第六章字符串ppt

    PPT内容 这是Python第六章字符串ppt,包括了概述,通用序列操作,字符串格式化,字符串方法,正则表达式简介等内容,欢迎点击下载. Python语言编程导论 第六章  字符串 内容提要 概述 通 ...

  4. 大连理工大学c语言第三次上机作业答案,大连理工大学软件学院C语言上机第五六章课后题...

    大连理工大学软件学院C语言上机第五六章课后题 五.1. #includeint main() { int a,b,c; float X,Y,Z; scanf("%d%d%d",&a ...

  5. c语言两种排序方法的组合,排列和组合算法的实现方法_C语言经典案例

    排列和组合算法是考查递归的常见算法,这两种算法能用递归简洁地实现. 本人在经过多次摸索和思考之后,总结如下,以供参考. 程序代码如下: #include #include char array[] = ...

  6. c语言作业题五六章答案,数据结构(C语言版)第五六章习题答案

    数据结构(C语言版)第五六章习题答案,人民邮电出版社,答案很详细. (15)设F是一个森林,B是由F变换得的二叉树.若F中有n个非终端结点,则B中右指针域为空的结点有( )个. A. n-1 B.n ...

  7. c语言程序设计的几种循环,C语言程序设计教案 第六章 循环程序设计.doc

    C语言程序设计教案 第六章 循环程序设计 第六章 循环程序设计 课题:第五章 选择结构程序设计教学目的:1.掌握三种循环语句的语法结构 2.灵活运用循环语句教学重点: 教学难点:三种循环语句while ...

  8. 有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中,谭浩强《c语言程序设计》第六章第四题

    题目 本题是谭浩强<c语言程序设计>第六章第四题 题目:有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中. 以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同 ...

  9. acm水仙花数java,水仙花数之C语言经典案例分析

    水仙花数之C语言经典案例分析 一.[什么是水仙花数] 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI) ...

  10. 用筛选法求100之内的素数。谭浩强《c语言程序设计》第六章第一题

    题目 本题是谭浩强<c语言程序设计>第六章第一题 题目:用筛选法求100之内的素数. 以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步.--来自考研路上的lwj 一.解题思路 ...

最新文章

  1. Mat与IplImage*类型间的转换
  2. python全栈开发百度云_价值2400 2016年11月全栈开发Flask Python Web 网站编程
  3. python写一段脚本代码自动完成输入(目录下的所有)文件的数据替换(修改数据和替换数据都是输入的)【转】...
  4. Python - 装饰器
  5. M1芯片Mac使用原生brew安装软件速度过慢的解决办法
  6. 《JQuery 能干点啥~》第8讲 XPath选择器
  7. 留言板个人代码展示墙
  8. 关于QTTabBar的使用
  9. linux的ib网卡驱动安装,linux安装IB网卡(mellanox)驱动
  10. html怎么设置一个圆形区域,JS+HTML实现的圆形可点击区域示例【3种方法】
  11. 毕业就去当网红?先听听8位95后网红的口述
  12. 【数据科学家】如何成为一名数据科学家?
  13. HTL/TTL转光纤模块
  14. 苹果 CEO 库克“喜当爹”,女子为其孕育双胞胎,索赔31.6亿分手费!
  15. Macos 安装MacTex SublimeText3 Skim环境
  16. 关于使用https请求微信乱码问题
  17. 深度学习的开胃菜——常用的机器学习知识梳理
  18. windows打开虚拟键盘命令
  19. CSS 属性 columns
  20. 通过ADB命令实现App的安装、卸载、覆盖

热门文章

  1. Cisco交换机密码修复
  2. [转载] 胡锡进:5000亿买一包爆米花 我不想让我的国家这样
  3. 7-4 计算e的近似值 (10 分)
  4. 前端轻松破解支付宝AR抢红包
  5. 高频信号发生器设计—电容三点式振荡电路
  6. 用一行python代码用openpyxl找到excel某一列的最大行数
  7. Delphi对象克隆技术
  8. 乱谈计算机、转专业、考研
  9. [安全攻防进阶篇] 五.逆向分析之Win32 API获取及加解密目录文件、OllyDbg逆向其原理
  10. LSD_SLAM框架总结[最终版本]