华科16_2

题目:

输入字符串。

1.去除前面的空格

2.中间多个空格只保留一个

3.相邻的数字和字母之间加上'_'

分析:

输入整个字符串,因为做的操作要改变字符串中间的内容,为了避免大量移动字符串中的字符,所以另外设置一个字符串用来输出结果

去除前面的空格可以用一个标志变量来标志是否在前面。

中间空格也采用标志变量来表示中间需要去除的空格,记得每一次中间去除完要重置变量,以便之后的去除。

第三问就比较简单了。

代码:

#include <iostream>  
#include <stdio.h>   
#include <string.h>  
#include <math.h>  
#include <vector>  
#include <queue>  
#include <stack>  
#include <map>  
#include <string>  
#include <algorithm>  
#include <iomanip>
#define MAX 1000
using namespace std;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

bool isNumber(char c){
	if(c>= '0' && c<= '9'){
		return true;
	}else{
		return false;
	}
}
bool isLetter(char c){
	if(c>= 'a' && c<= 'z'){
		return true;
	}else{
		return false;
	}
}
//void insert(char * str,int index){
//	
//}

void display(char *input,int start,int end) {
	for(int i=start;i<= end;i++){
				printf("%c",input[i]);
	}
	printf("\n");
}
int main(int argc, char** argv) {
	/*freopen("file/input.txt","r",stdin);
	freopen("file/output.txt","w",stdout);*/
	char input[MAX];
	char output[MAX];
	int size=0;
	
	gets(input);
	int length=strlen(input);
	
	bool front=true;
	bool middle=true;
	
	for(int i=0;i<length;i++){
		//1.过滤前面的空格
		if(front == true){
			if(input[i] == ' ') {
				continue;
			}else{
				front = false;  //遇到非空格字符则结束前面的过滤 
				output[size++] = input[i];
			}
		}else{
			//2.中间多个空格进行合并  只保留一个空格 
			if(input[i] == ' ' && middle == true) {
				output[size++] = input[i] ;
				middle = false;   
			}
			if(input[i] == ' ' && middle == false) {
				continue;
			}
			if(input[i] != ' '){
				middle = true;  //重置middle 
			}
			output[size++] = input[i];
			
			if((isNumber(input[i]) && isLetter(input[i+1])) ||  (isNumber(input[i+1]) && isLetter(input[i])) ) {
					output[size++] = '_';			
			}
		}	
		//output[size++] = input[i];
	} 
//	for(int i=0;i<size-1;i++){
//		//3.数字和字母之间添加_
//			if((isNumber(output[i]) && isLetter(output[i+1])) ||  (isNumber(output[i+1]) && isLetter(output[i])) ) {
//				insert(output,i);  //在i位置插入_ 
//			}
//	}
	display(output,0,size-1);
	 
	return 0;
}

//对字符串前后进行处理则可以用前后cur来表示 , 若对字符串的中间部分做修改删除则另建一个数组 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
华科科技大学锐捷平台有线网登陆 FAQ 1、手机和电脑使用什么信号比较好? 答:推荐使用HUST_WIRELESS_AUTO,其次是HUST_WIRELESS的无感知认证。 2、MAC电脑连接HUST_WIRELESS无法弹出认证页面如何处理? 答:首先要确保无线网卡的IP和DNS都是自动获取;之后断开网络,清理浏览器的Cookie后,尝试重新连接。 3、无线网频繁掉线如何处理? 答:无线网掉线的原因很多: a、无线网若是一段时间没有任何流量,会判定用户下线,这时需要重新认证连接; b、通常情况下,学生账号同一时刻,只能有一个设备在线,若是两个设备相互抢占,会导致频繁掉线,这时关闭一个设备校园网连接; c、教工账号同一时刻可以3台设备在线,超限也会被强制下线; d、更换认证方式,使用HUST_WIRELESS_AUTO或无感知认证; e、上述方式无法解决及时拨打报修电话。 4、手机在连接HUST_WIRELESS_AUTO的时候,Wi-Fi图标显示满格信号,但是微信是“未连接”状态,该怎么处理? 答:关闭手机Wi-Fi再打开,重新连接HUST_WIRELESS_AUTO。 5、笔记本连接无线频繁掉线,提示用户名或密码不匹配,重连能连上,该如何处理? 答:这是由于(或者是安装的Wi-Fi热点软件)勾选了“启用此网络的IEEE 802.1x身份验证”导致的环境冲突。处理方法:在“本地连接(或者以太网)”的属性的“身份验证”页中,取消“启用此网络的IEEE 802.1x身份验证”即可。 6、有时走在路上连上了校园无线网但无法正常使用,该怎么办? 答:无线网技术主要适用于室内,即使部署了无线网的室外区域也经常因为各种原因导致各种掉线或信号弱,此时无线网信号是部署有无线网的楼栋飘出的信号,建议此时关闭无线网络,到室内部署有无线网的区域进行无线上网。 7、东1/6/7/9-13舍、西8/9舍在断电之后恢复来电,宿舍有线网(实际是由无线AP上分出的有线)连接不上该怎么办? 答:将宿舍所有电脑上连接的网线全部拔下,等待5分钟,再将网线插上即可正常使用,如此方法无效,请及时报修。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值