Alignment of Code(hdu)
2016-05-14 17:44
267 查看
对字符串进行处理,有坑点如下:
1:@'\0' 这样才是结束,而不是只判断@
2:最后一个样例不会给@,要特判
3:输出的字符串前后都不能有空格,会判错
1:@'\0' 这样才是结束,而不是只判断@
2:最后一个样例不会给@,要特判
3:输出的字符串前后都不能有空格,会判错
#include<iostream> #include<stdio.h> #include<string.h> using namespace std; char a[1010][200]; //字符串 int l[1010]; //保存字符串长度 int str[1010]; //保存每一个单词的最长的长度 int main(){ int T; scanf("%d",&T); getchar(); while(T--){ memset(str,0,sizeof(str)); int n = 0; for(;;n++){ if(gets(a )==NULL) break; //特判最后一个样例 if(a [0]=='@'&&a [1]==0) break; l = strlen(a ); }//将每个单词的长度计算出来 for(int i=0;i<n;i++){ int s = 0; for(int j=0;j<l[i];j++){ int count = 0; while(j<l[i]&&a[i][j]==' ') j++; while(j<l[i]&&a[i][j]!=' '){ j++; count++; } if(count>str[s]) str[s] = count; s++; } }//输出 for(int i=0;i<n;i++){ int j=0; int s = 0; while(a[i][j]&&j<l[i]){ if(a[i][j]!=' '&&j<l[i]){ if(s!=0) printf(" "); //若不是第一个单词,则需要输出一个空格 int count = 0; //记录当前单词长度 while(a[i][j]!=' '&&j<l[i]){ printf("%c",a[i][j++]); count++; } while(a[i][j]==' '&&j<l[i]) j++; //这里特判字符串最后的空格 if(j==l[i]) break; //没有字符,直接结束这个字符串 while(count<str[s]){ //否则输出空格补充长度 printf(" "); count++; } s++; //进入下一个单词 } else{ j++; } } printf("\n"); } } return 0; }
相关文章推荐
- C# ToString() 格式化大全
- C++拷贝构造函数(深拷贝,浅拷贝)
- Unity3d制作Loading场景进度条
- linux 文件删除过程浅析
- 第十二周项目 阅读程序 c
- DNS中的正向解析与反向解析
- Jxls导出excel的若干方式总结(六)-- 分sheet导出查询记录,每条记录一个sheet
- linux svn搭建仓库
- 腾讯云在线直播三
- 大牛被公司诬蔑,还要进派出所?
- 开源jxls - java导Excel(多sheet) - 模板文件定义类似jsp的el表达式
- vs增加第三方依赖库的方法总结
- JVM--堆的新年代和老年代
- request_region
- 软考二进宫-总结知识点3
- JVM垃圾回收器
- 先写个心情随笔……
- VBA 表格操作2 表格复制
- 字符串操作函数模拟之番外篇
- 系统的coreLocation的使用