设为首页 加入收藏

TOP

C语言经典编程之字符串(二)
2015-07-16 12:04:13 来源: 作者: 【 】 浏览:116
Tags:语言 经典 编程 字符串
i] <= 90) { ch[strlen(ch) + 1] = '\0'; for(j = strlen(ch); j > i; j--) { ch[j] = ch[j - 1]; } ch[i] = '_'; ch[i + 1] += 32; } else if((ch[i] == '_' && (ch[i + 1] >= 65 && ch[i + 1] <= 122))) { strcpy(ch, "Error!"); } i++; } printf("%s\n", ch); return 0; }

10、字符串删除

输入一个字符串,然后再输入两个数字n 和 m,将这个字符串从第n(从0开始数)个字符开始删除,删除m个字符(包含第n个);后面的前移;(注意不要超过字符串范围)

比如:

输入:

12345

2

1

输出为1245

输入:

abcdefg

3

3

输出为abcg

输入

abcd

0

1

输出为bcd

【代码】

#include 
  
   
#include 
   
     int main(void) { char ch[20] = {}; int i = 0, j = 0, k = 0; int n = 0, m = 0; scanf("%s", ch); scanf("%d %d", &n, &m); while(ch[i] != '\0') { if(i == n && k < m) { for(j = i; j < strlen(ch) - 1 - k; j++) { ch[j] = ch[j + 1]; } k ++; i = n - 1 ; } i++; } ch[strlen(ch) - m] = '\0'; printf("%s\n", ch); return 0; } 
   
  

11、字符串插入

输入两个字符串,然后再输入一个数字n,将第二个字符串插入到第一个字符串的第n个字符前面(从0开始数);第n个字符(包含第n个)后面的字符后移

比如:

输入:

hello

world

2

输出为heworldllo

输入:

1000

phone

3

输出为100phone0

输入

abcd

1234

0

输出为1234abcd

【代码】

#include 
  
   
#include 
   
     int main(void) { char ch1[50] = {}; char ch2[50] = {}; int num = 0; int i = 0, j = 0, k = 0; scanf("%s", ch1); getchar(); scanf("%s", ch2); scanf("%d", &num); if(num == strlen(ch1)) { j = 0,k = 0; for(k = strlen(ch1); k < strlen(ch1) + strlen(ch2); k++) { ch1[k] = ch2[j ++]; } } else { while(ch1[i] != '\0') { if(i == num) { for(j = strlen(ch1) + strlen(ch2) - 1; j >= i + strlen(ch2); j --) { ch1[j] = ch1[j - (int)strlen(ch2)]; } j = 0; for(k = num; k < num + strlen(ch2); k++) { ch1[k] = ch2[j++]; } } else if(num == strlen(ch1)) { j = 0,k = 0; for(k = strlen(ch1); k < strlen(ch1) + strlen(ch2); k++) { ch1[k] = ch2[j ++]; } } i++; } } ch1[strlen(ch1) + strlen(ch2)] = '\0'; printf("%s\n", ch1); return 0; } 
   
  

12、字符串替换

输入两个字符串,然后再输入两个数字n 和 m,将第一个字符串从第n(从0开始数)个字符开始,数m个字符(包含第n个)替换为第二个字符串;(注意不要超过字符串的范围)

比如:

输入:

12345 abcde

1 2

输出为1abcde45

输入:

12345 abcde

0

4

输出为abcde5

输入

Iloveyou hate

1

4

输出为Ihateyou

【代码】

#include 
  
   
#include 
   
     int main(void) { char ch1[20] = {}; char ch2[20] = {}; int n = 0, m = 0; int i = 0, j = 0, k = 0; scanf("%s", ch1); getchar(); scanf("%s", ch2); scanf("%d %d", &n, &m); //首先判断替换的位置是否到末尾 //是,那么就删除后面的字符串,直接令尾尾‘\0’,再将替换的字符串添加的末尾 if(strlen(ch1) == n + m) { ch1[strlen(ch1) - m] = '\0';//删除 for(k = strlen(ch1) ; k < strlen(ch1) + strlen(ch2); k++) { ch1[k] = ch2[j++]; } ch1[strlen(ch1) + strlen(ch2)] = '\0'; } else {//不是 //那么就要先删掉需要替换的那部分字符串,即将后面的往前移动 while(ch1[i] != '\0') { if(i == n && k < m) { for(j = i; j < strlen(ch1) - 1 - k; j++) { ch1[j] = ch1[j + 1]; } k ++; i = n - 1; } i++; } ch1[strlen(ch1) - m] = '\0'; //然后,将替换的字符串插入进来,字符串后移 i = 0; while(ch1[i] != '\0') { if(i == n) { for(j = strlen(ch1) + strlen(ch2) - 1; j > i - 1 + strlen(ch2); j--) { ch1[j] = ch1[j - strlen(ch2)]; } for(k = 0; k < strlen(ch2); k++) { ch1[i + k] = ch2[k]; } } i++; } ch1[strlen(ch1) + strlen(ch2)] = '\0'; } printf("%s\n", ch1); return 0; } 
   
  

13、字符串抽取

输入两个字符串,然后输入一个数字n和数字m,将第一个字符串抽取出从第n(从0开始)个开始数m个字符构成一个新的字符串并输出,然后把这个新的字符串插入到第二个字符串的第n(从0开始)个字符后输出(注意不要超过字符串范围)

比如:

12345 67890

2 1

输出为673890

输入:

12345 67890

0 3

输出为12367890

输入:

abcde xyz

2

3

输出为xycdez

【代码】

#include 
  
   
#include 
   
     int main(void) { char ch1[20] = {}; char ch2[20] = {}; char str[20] = {}; int n = 0, m = 0; int i = 0, j = 0, k = 0; scanf("%s", ch1); getchar(); scanf("%s", ch2); scanf("%d %d", &n, &m); //首先抽取字符串,放到另外的字符串数组str中 while(ch1[i] != '\0') { if(i == n) { for(j = n; j < n + m; j++) { str[k++] = ch1[j]; } str[k] = '\0'; } i++; } //插入 i = 0, k = 0; while(ch2[i] != '\0') { if(i == n) { //向右移位 for(j = strlen(ch2) - 1 + m; j >= i + m; j--) { ch2[j] = ch2[j - m]; } //插入 for(j = n; j < n + strlen(str); j++) { ch2[j] = str[k++]; } ch2[strlen(ch2) + m] = '\0'; } i++; } printf("%s\n", ch2); return 0; } 
   
  

14、字符串交换

从键盘输入五个字符串,把这些字符串地址放入一个指针数组中,然后输入两个数n和m(n 和m是数组的下标,所以不要越界),把数组的下标n和下标m进行交换,并且打印数组中的字符串;

比如:

输入:

I am Optimus Prime lucy

0 1

输出为

am

I

Optimus

Prime

lucy

输入:

Hi welcome to qianfeng lilei

2 3

输出为

Hi

welcome

qianfeng

to

lilei

输入

abc def ghi jkl heihei

0 4

输出为

heihei

def

ghi

jkl

abc

【代码】

#include 
  
   
#include 
   
     int main(void) { char str[100] = {}; int n = 0, m = 0; char *sep = " "; char *p[10] = {}; int i = 0, j = 0; char *temp = NULL; scanf("%[^\n]", str); scanf("%d %d", &n, &m); p[0] = strtok(str, sep); while(p[i]) { p[++i] = strtok(NULL, sep); } temp = p[n]; p[n] = p[m]; p[m] = temp; for(j = 0; j < i; j++) { printf("%s\n", p[j]); } return 0; } 
   
  

15、字符串数组查找

输入五个字符串,然后再输入一个字符串,打印出最后一个字符串是前五个中第几个被输入的(如果出现相同的只打印第一次是第几个被输入的)如果不在前五个中则返回-1。

比如:

输入:

12345 abc def hello

abc

输出为2

输入:

abc hello hello world world

hello

输出为2

输入

abcde ab cd hello hello

cd

输出为3

【代码】

#include 
  
   
#include 
   
     int main(void) { char str1[100] = {}; char str2[20] = {}; scanf("%[^\n]", str1); getchar(); scanf("%[^\n]", str2); char *sep = " "; char *p[10] = {}; int i = 0, j = 0; p[0] = strtok(str1, sep); while(p[i]) { p[++i] = strtok(NULL, sep); } for(j = 0; j < i; j++) { if(strcmp(str2, p[j]) == 0) { printf("%d\n", j + 1); break; } } if(j == i) { printf("-1\n"); } return 0; } 
   
  

16、字符串拼接

从键盘输入个数不定的字符串(不超过10个),以最后一个字符串整体连接到每两个字符串之间,组成一个新的字符串,并且输出这个字符串;

比如:

输入:

I am Optimus Prime!

:

输出为

I:am:Optimus:Prime!

输入:

Hi welcome to qianfeng

#@

输出为

Hi#@welcome#@to#@qianfeng

输入

abc def ghi j

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇object-c 框架之常用结构体 下一篇(C语言)可变参数列表

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: