博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C算法编程题(六)串的处理
阅读量:4969 次
发布时间:2019-06-12

本文共 3870 字,大约阅读时间需要 12 分钟。

前言

  上一篇《》

  连续写了几篇有关图形输出的编程题,今天说下有关字符串的处理。

程序描述

  在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:

    1.  把每个单词的首字母变为大写。
    2.    把数字与字母之间用下划线字符(_)分开,使得更清晰
    3.    把单词中间有多个空格的调整为1个空格。
    例如:
        用户输入:
        you and     me what  cpp2005program
        则程序输出:
        You And Me What Cpp_2005_program
        用户输入:
        this is     a      99cat
        则程序输出:
        This Is A 99_cat
    我们假设:用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。每个单词间由1个或多个空格分隔。
    假设用户输入的串长度不超过200个字符。

程序实现

  这个题目看起来很简单,但是想一想,用C的简单语法实现起来还是有些麻烦的,毕竟没有.net里面那么多字符串处理的方法。

  题目就三个要求,就是字符转换和处理,感觉简单,但是却无从下手。

  还是那句话,做这种编程题,思路清晰了,代码才好实现。这里我说一种思路,如果大家有更好的,欢迎交流。

  如果转换、移除和插入一个字符,就必须知道上一个字符和下一个字符是什么,比如第二点要求,就得知道上一个字符是英文下一个字符是数字或是上一个字符是数字下一个字符是英文,第三点也是,去空格就得知道上一个和下一个字符都是空格,第一点也是如此,变大写就得索引是0或是上一个字符是空格和下一个字符是字符。

  思路就是这样,理清了就会发现很简单了,然后就是一些细节处理了。

  代码我就不分析了,直接贴下代码:

1 #include 
2 #include
3 #include
4 void main() 5 { 6 char strArray[200] = {
0}; 7 char strResult[400] = {
0}; 8 int i=0,j=0,Len; 9 int nMark = 0; 10 11 printf("请输入字符串:\n"); 12 gets(strArray); 13 14 Len = strlen(strArray); 15 16 while(i
='a'&&strArray[i]<='z') 23 { 24 strResult[j++] = strArray[i++]-'a'+'A'; 25 nMark = 1; 26 } 27 else if(strArray[i]>='0'&&strArray[i]<='9') 28 { 29 strResult[j++] = strArray[i++]; 30 nMark = 2; 31 } 32 else if(strArray[i]==' ') 33 { 34 strResult[j++] = strArray[i++]; 35 nMark = 0; 36 } 37 } 38 break; 39 case 1: 40 { 41 if(strArray[i]>='a'&&strArray[i]<='z') 42 { 43 strResult[j++] = strArray[i++]; 44 nMark = 1; 45 } 46 else if(strArray[i]>='0'&&strArray[i]<='9') 47 { 48 strResult[j++] = '_'; 49 strResult[j++] = strArray[i++]; 50 nMark = 2; 51 } 52 else if(strArray[i]==' ') 53 { 54 strResult[j++] = strArray[i++]; 55 nMark = 3; 56 } 57 } 58 break; 59 case 2: 60 { 61 if(strArray[i]>='a'&&strArray[i]<='z') 62 { 63 strResult[j++] = '_'; 64 strResult[j++] = strArray[i++]; 65 nMark = 1; 66 } 67 else if(strArray[i]>='0'&&strArray[i]<='9') 68 { 69 strResult[j++] = strArray[i++]; 70 nMark = 2; 71 } 72 else if(strArray[i]==' ') 73 { 74 strResult[j++] = strArray[i++]; 75 nMark = 3; 76 } 77 } 78 break; 79 case 3: 80 { 81 if(strArray[i]>='a'&&strArray[i]<='z') 82 { 83 strResult[j++] = strArray[i++]-'a'+'A'; 84 nMark = 1; 85 } 86 else if(strArray[i]>='0'&&strArray[i]<='9') 87 { 88 strResult[j++] = strArray[i++]; 89 nMark = 2; 90 } 91 else if(strArray[i]==' ') 92 { 93 i++; 94 nMark = 3; 95 } 96 } 97 break; 98 default: 99 break;100 }101 }102 103 puts("转换后的字符串为:");104 printf("%s",strResult);105 106 getchar();107 }

  运行结果:

 

转载于:https://www.cnblogs.com/xishuai/p/3411209.html

你可能感兴趣的文章
SpringMVC中使用Ajax请求以json格式返回null值
查看>>
wsdlLocation可以写成项目的相对路劲吗
查看>>
【Android】开发中的小技术(持续更新)
查看>>
mysql获取汉字首字母函数
查看>>
VMware中三种网络连接的区别
查看>>
windows版jmeter的body data如何用\n作为“换行”
查看>>
服务器运维管理系统突发故障
查看>>
理解矩阵转置及矩阵转置算法
查看>>
中断与时钟
查看>>
Visual Studio静态编译
查看>>
Bzoj3503--Cqoi2014和谐矩阵
查看>>
redis整合异常总结
查看>>
让重复消失在代码里
查看>>
cpu-z如何查看电脑配置数据方法介绍
查看>>
c++保留小数问题,如有不足或错误,欢迎指出
查看>>
简单的笔记本
查看>>
frp内网渗透实现ssh外网访问家里树莓派(树莓派raspbian系统+腾讯云contos7)
查看>>
h5新属性
查看>>
C#如何为winform程序打包发布应用(图解)
查看>>
mocha_JavaScript单元测试框架
查看>>