【C语言】练习3-3
- 题目来源:《The C programming language》中的习题P49
- 练习2-9: 编写函数expand(s1, s2),将字符串s1中类似于a-z一类的速记符号在字符串s2中扩展为等价的完整列表abc...xyz。该函数可以处理大小写字幕和数字,并可以处理a-b-c、a-z0-9与-a-z等类似的情况。作为前道和尾随的-字符原样打印。
- 代码实现:
#include<stdio.h>
#include<string.h>
#define MAX 1000 //判断是否为字母或者数字
int chargeCon(char c1){
if((c1 >= '' && c1 < '') || (c1 >= 'a' && c1 <= 'z') || (c1 >= 'A') && c1 <= 'Z'){
return ;
}else{
return ;
}
} // 字符扩展
int expandToFull(char c1, char c2, char* s,int pos){
int i;
if(c1 < c2){
i = c1 + ;
for(; i< c2 + ; i++){
s[pos++] = i;
}
}else{
i = c1 - ;
for(; i > c2 + ; i--){
s[pos++] = i;
}
} return pos;
} // 扩展,即将a-z扩展为abcd..xyz
void expand(char* s1, char* s2){
int i, j, flag1, flag2;
s2[] = s1[];
j = ;
for(i = ; i < strlen(s1); i++){
flag1 = chargeCon(s1[i-]);
flag2 = chargeCon(s1[i+]);
// 如果是速记符号
if( flag1 == && flag2 == && s1[i]=='-'){
j = expandToFull(s1[i-], s1[i+], s2, j);
}else{
s2[j++] = s1[i];
}
}
s2[j]='\0';
} //主函数
void main(){
char charArr1[] = "-a-c-e-addd 1-3-1";
char charArr2[MAX];
expand(charArr1,charArr2);
printf("%s\n",charArr2);
}
【C语言】练习3-3的更多相关文章
- C语言 · 高精度加法
问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储.对于这种问题,一般使用数组来处理. 定义一个数组A ...
- Windows server 2012 添加中文语言包(英文转为中文)(离线)
Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...
- iOS开发系列--Swift语言
概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...
- C语言 · Anagrams问题
问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,"Unclear"和"Nuclear ...
- C语言 · 字符转对比
问题描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等.比如 Beijing 和 Hebei 2:两个字符串不仅长度相 ...
- JAVA语言中的修饰符
JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...
- Atitit 项目语言的选择 java c#.net php??
Atitit 项目语言的选择 java c#.net php?? 1.1. 编程语言与技术,应该使用开放式的目前流行的语言趋势1 1.2. 从个人职业生涯考虑,java优先1 1.3. 从项目实际来 ...
- 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】
说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...
- InstallShield 脚本语言学习笔记
InstallShield脚本语言是类似C语言,利用InstallShield的向导或模板都可以生成基本的脚本程序框架,可以在此基础上按自己的意愿进行修改和添加. 一.基本语法规则 ...
- 用C语言封装OC对象(耐心阅读,非常重要)
用C语言封装OC对象(耐心阅读,非常重要) 本文的主要内容来自这里 前言 做iOS开发的朋友,对OC肯定非常了解,那么大家有没有想过OC中NSInteger,NSObject,NSString这些对象 ...
随机推荐
- jdbc:initialize-database标签的研究
在spring的applicationContext.xml中如果引入了:<?xml version="1.0" encoding="UTF-8"?> ...
- ES6 箭头函数(arrow function)
例行声明:接下来的文字内容全部来自 Understanding ECMAScript 6,作者是Nicholas C.Zakas,也就是大名鼎鼎的Professional JavaScript for ...
- CheeseZH: Stanford University: Machine Learning Ex5:Regularized Linear Regression and Bias v.s. Variance
源码:https://github.com/cheesezhe/Coursera-Machine-Learning-Exercise/tree/master/ex5 Introduction: In ...
- thick置备和 thin置备,克隆,模板和快照
共享shared VMDK和共享RDM实验,参见http://wenku.it168.com/d_000773128.shtml 假如你有一个磁盘是100G的虚拟机,磁盘格式是厚置备,即Thick,当 ...
- innosetup完整脚本
#define MyAppName "Somarto"#define MyAppVersion "1.0.0"#define MyAppPublisher &q ...
- JSP与Servlet之间的关系事例说明
Servlet Servlet 没有 main 方法,不能够独立的运行,它的运行需要容器的支持,Tomcat 是最常用的 JSP/Servlet 容器.Servlet 运行在 Servlet 容器中, ...
- Android 手把手带你玩转自己定义相机
本文已授权微信公众号<鸿洋>原创首发,转载请务必注明出处. 概述 相机差点儿是每一个APP都要用到的功能,万一老板让你定制相机方不方?反正我是有点方. 关于相机的两天奋斗总结免费送给你. ...
- Java Netty (2)
通过一个实例来说明Netty的使用.用1个服务器连接5个客户端线程,客户端连接上服务器以后就向服务器发送消息,服务器接收到消息后向客户端返回消息,客户端接收到消息以后,等待随机的时间,再向服务端发送消 ...
- .NET/C#中对自定义对象集合进行自定义排序的方法
一个集合可否排序,要看系统知不知道排序的规则,像内建的系统类型,int ,string,short,decimal这些,系统知道怎么排序,而如果一个集合里面放置的是自定义类型,比如自己定义了一个Car ...
- Android开发之底部导航栏标准
以下是封装的库源码: package com.example.oldtab; import java.util.ArrayList; import android.content.res.Resour ...