c/c++语言开发共享C语言经典编程之字符串

1、按特定顺序输出压缩 输入一段字符串,把相同的字符按出现顺序,归在一起,并压缩。 例如: 输入:samsamecome 输出: ssaammmeeco s2a2m3e2c1o1 【难度系数】 ▲

1、按特定顺序输出压缩

输入一段字符串,把相同的字符按出现顺序,归在一起,并压缩。

例如:

输入:samsamecome

输出:

ssaammmeeco

s2a2m3e2c1o1

【难度系数】 ▲ ▲ ▲ ▲

【分析】

【代码】

#include  #include   int main(void) {     char ch[100];     char str[100];     char s;     int i = 0;     int j = 0;     int count = 1;     int k = 0;      scanf("%s", ch);      for(i = 0; i 

2、ip地址判断是否合法

输入一个ip地址,判断时候ip地址合法

ip地址由4位0-255组成 中间使用 . 隔开

合法的ip地址是:

21.45.34.112 是合法的

第一位不能为全0

0.45.34.112 是不合法的

每一位不能超过255

【代码】

#include  #include  #include   int main(void) {     char ip[20] = {};     int i = 0, j = 0;     int num[4] = {};          scanf("%[^n]", ip);          char *sep = ".";     char *p = strtok(ip, sep);          while(p != null)     {         num[i ++] = atoi(p);         p = strtok(null, sep);     }          if(num[0] == 0 || num[0] >255 || num[1] > 255        || num[2] > 255 || num[3] > 255)         printf("non");     else         printf("yesn");          return 0; } 

3、字符串压缩

字符串原地压缩。题目描述:“eeeeeaaaff” 压缩为 “e5a3f2″。

字符串压缩算法,把s字符串压缩处理后结果保存在res中

比如:

输入

aaaaeefggg

输出为

a4e2f1g3

输入

hhfhhhhff

输出为

h2f1h4h2

【代码】

#include  #include   int main(void) {     char ch[100];     int i = 0;     int count = 1;          scanf("%s", ch);          for(i = 0; i 

4、字符串解压

字符串原地压缩。题目描述:”e5a3f2″ 解压缩为 “eeeeeaaaff”。

字符串压缩算法,把s字符串压缩处理后结果保存在res中

比如:

输入

a4e2f1g3

输出为

aaaaeefggg

输入

h2f1h4h2

输出为

hhfhhhhff

【代码】

#include  #include   int main(void) {     char ch[100];     char s[100];     int i = 0, j = 0;     int num = 0;          scanf("%s", ch);          for(i = 0; i = 'a' && ch[i] = '0' && ch[i + 1] = '0' && ch[i + 2] 

5、字符串排序

输入一个字符串,然后返回连续最大的字符串

比如demo

1,3,3,3,4,4,4,4,4,0,0,0,4,4,4,4

,此例中由5个连续的4为最大连续子串,返回结果为44444.

1,3,3,3,4,4,4,4,4,0,0,0,0,0,0,5,5,5,5 返回44444;

1,3,3,3,5,5,5,5,5,4,4,4,4,4,0,0,0,0,0,0,4,4,4,4},返回55555;

这是公司oc面试题

【代码】

#include   int main(void) {     char ch[100];     int count = 1;     int i = 0;     int j = 0;     int max = 0;          scanf("%[^n]", ch);          while(ch[i] != '')     {         if(ch[i] != '0' && ch[i] == ch[i + 2])         {             count ++;         }         else         {             if(count > max)             {                 max = count;                 j = i;             }             count = 1;         }         i += 2;     }      for(i = 0; i 

6、查找相同的字串

返回在两字符串中第一个相同的子串(大于1个字符),并将子串输出

比如:

输入

adbafehhfs

acwfagafef

输出为

afe

输入

qfdgjklin

qdfgjkwfo

输出为

gjk

【代码】

#include  #include   int main(void) {     char ch1[100] = {};     char ch2[100] = {};     int i = 0, j = 0;     int flag = 0, flag2 = 0;          scanf("%s", ch1);     getchar();     scanf("%s", ch2);          while(ch1[i] != '')     {         for(j = 0; j 

7、单词升序排列

输入一段字符串将单词升序排列

比如:

输入 come good goals bad bed

输出:

bad bed come goals good

输入 i am optimus prime

输出:

i optimus prime am

【代码】

#include  #include   int main(void) {     char ch[100] = {};     int i = 0, j = 0, k = 0;          char *p[10] = {"zhangsan", "lisi", "wangwu"};     char *temp;          scanf("%[^n]", ch);          p[0] = ch;     while(ch[i] != '')     {         if(ch[i] == ' ')         {             j++;             p[j] = &ch[i + 1];             ch[i] = '';         }         i++;     }      for(i = 0; i  0)             {                 temp = p[k];                 p[k] = p[k + 1];                 p[k + 1] = temp;             }         }     }          for(i = 0; i 

8、统计单词个数

输入一段字符串,统计其中的单词个数

比如:

输入 i like ios

输出:

3

输入 this is qian feng college

输出:

5

【代码】

#include  #include   int main(void) {     char str[100] = {};      int i = 0;     int count = 0;      scanf("%[^n]", str);      char *sep = " ";          char *p[10];     p[0] = strtok(str, sep);      while(p[i] != null)     {            count ++;          printf("%sn", p[i]);         p[++i] = strtok(null, sep);     }        printf("the number of words is : %dn", count);      return 0; } 

9、objective-c和c++命名之争

demo1:

input:

long_and_mnemonic_identifier

output:

longandmnemonicidentifier

demo2:

input:

longandmnemonicidentifier

output:

long_and_mnemonic_identifier

demo3:

input:

bad_style

output:

error!

【代码】

#include  #include   int main(void) { 	char ch[100] = {}; 	int i = 0, j = 0;      	scanf("%s", ch);      	while(ch[i] != '') 	{ 		if(ch[i] == '_' && (ch[i + 1] >= 97 && ch[i + 1] = 65 && ch[i]  i; j--) 			{ 				ch[j] = ch[j - 1]; 			} 			ch[i] = '_'; 			ch[i + 1] += 32; 		} 		else if((ch[i] == '_' && (ch[i + 1] >= 65 && ch[i + 1] 

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] != '') 	{ 		if(i == n && k 

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 = i + strlen(ch2); j --)              {                 ch1[j] = ch1[j - (int)strlen(ch2)];             }             j = 0;             for(k = num; k 

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);          //首先判断替换的位置是否到末尾     //是,那么就删除后面的字符串,直接令尾尾‘’,再将替换的字符串添加的末尾     if(strlen(ch1) == n + m)     {         ch1[strlen(ch1) - m] = '';//删除         for(k = strlen(ch1) ; k  i - 1 + strlen(ch2); j--)                 {                     ch1[j] = ch1[j - strlen(ch2)];                 }                 for(k = 0; k 

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] != '')     {         if(i == n)         {             for(j = n; j = i + m; j--)             {                 ch2[j] = ch2[j - m];             }             //插入             for(j = n; j 

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 

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 

16、字符串拼接

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

比如:

输入:

i am optimus prime!

:

输出为

i:am:optimus:prime!

输入:

hi welcome to qianfeng

#@

输出为

hi#@welcome#@to#@qianfeng

输入

abc def ghi jkl heihei haha mygod

**

输出为

abc**def**ghi**jkl**heihei**haha**mygod

【代码】

#include  #include   int main(void) {     char str[100] = {};     char ch[10] = {};          scanf("%[^n]", str);     getchar();     scanf("%[^n]", ch);          char *sep = " ";     char *p[10] = {};     int i = 0, j = 0;          p[0] = strtok(str, sep);     while(p[i])     {         p[++i] = strtok(null, sep);     }     for(j = 0; j 

17、字符串分割

从键盘输入一个字符串,然后再输入一个字符串,以第二个字符串整体作为分割条件把第一个字符串进行分割,然后输出分割之后的单词;

比如:

输入:

i:am:optimus:prime!

:

输出为

i

am

optimus

prime!

输入:

hi#@welcome#@to#@qianfeng

#@

输出为

hi

welcome

to

qianfeng

输入

abc@#def@ghi#@jkl

@#

输出为

abc

def@ghi

jkl

【代码】

#include  #include   int main(void) {     char ch[50] = {};     char str[10] = {};     char *p[10];     int i = 0, j = 0, r = 0, k = 0;          scanf("%[^n]", ch);     getchar();     scanf("%[^n]", str);          p[0] = ch;     while(ch[i] != '')     {         r = i;         for(k = 0; k 

18、统计字母在字符串中出现的次数

输入一串小写字母(以“.”为结束标志),统计出每个字母在该字符串中出现的次数(若某字母不出现,则不要输出)。

【代码】

#include  #include   int main(void) {     char str[100] = {};      int i = 0, j = 0;     int count = 0;     char s = 0;          scanf("%[^.]", str);          for(i = 0; i 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/606520.html

(0)
上一篇 2021年5月14日
下一篇 2021年5月14日

精彩推荐