UVA 1593: Alignment of Code(模拟 Grade D)
题意:
格式化代码。每个单词对齐,至少隔开一个空格。
思路:
模拟。求出每个单词最大长度,然后按行输出。
代码:
#include <cstdio> #include <cstdlib> #include <cstring> char words[1200][190][90]; int maxLen[190]; char tmp[200]; typedef char * pchar; int readStr(pchar &str, char *out) { int num = 0; int ret = sscanf(str, "%s%n", out, &num); //printf("str = %s\n", str); str += num; return ret; } void myprint(char *str, int len) { int i = 0; for (i = 0; str[i]; i++) { putchar(str[i]); } for (; i < len; i++) { putchar(' '); } } int main() { char *p; int nowLine = 0; while (gets(tmp)) { p = tmp; int i = 0; while (readStr(p, words[nowLine][i]) != -1) { i++; } nowLine++; } for (int i = 0; i < nowLine; i++) { for (int j = 0; j < 185; j++) { if (strlen(words[i][j]) > maxLen[j]) { maxLen[j] = strlen(words[i][j]); } } } for (int i = 0; i < nowLine; i++) { for (int j = 0; j < 185; j++) { if (strlen(words[i][j]) != 0) { if (j != 0) printf(" "); if (strlen(words[i][j+1])) myprint(words[i][j], maxLen[j]); else printf("%s", words[i][j]); } else break; } printf("\n"); } return 0; }
posted on 2014-10-17 19:59 ShineCheng 阅读(815) 评论(0) 编辑 收藏 举报