UVA10361- Automatic Poetry

题意:就是把两个<>中的前后互换

思路:就是比较麻烦,开四个数组分别存四个字符串,之后在拼接。记得最后要加上' \0 '。

#include<stdio.h>
#include<string.h>

int main(){
	int n, flag, k, l;
	char s[2][105];	
	scanf("%d", &n);
	getchar();
	while (n--){
		char str[105], ss[105];	
		char s1[20], s2[20], s3[20] ,s4[20];
		k = 0, flag = 1, l = 0;	
		for(int i = 0; i < 2; i++)	
			gets(s[i]);
		int len = strlen(s[0]);	
		for(int i = 0; i < len; i++){
			if (s[0][i] == '<' || s[0][i] == '>')	
				continue;		
			ss[l++] = s[0][i];
		}
		ss[l] = '\0';
		l = 0;
		for(int i = 0; i < strlen(s[1]); i++){
			if (s[1][i] == '.')
				break;
			str[l++] = s[1][i];
		}
		str[l] = '\0';
		for(int i = 0; i < len; i++){
			if (s[0][i] == '<'){		
				k = i + 1;	
				break;	
			}	
		}		
		int j = 0;	
		for(int i = k; i < len; i++){
			if (s[0][i] == '<'){
				k = i + 1;		
				break;
			}
			if (s[0][i] == '>'){
				s1[j] = '\0';
				j = 0;
				flag = 0;				
				continue;	
			}	
			if (flag)	
				s1[j++] = s[0][i];	
			else
				s2[j++] = s[0][i];
		}	
		s2[j] = '\0';
		flag = 1;
		j = 0;	
		for(int i = k; i < len; i++){	
			if (s[0][i] == '>'){
				s3[j] = '\0';
				flag = 0;	
				j = 0;
				continue;	
			}	
			if (flag)	
				s3[j++] = s[0][i];	
			else
				s4[j++] = s[0][i];
		}	
		s4[j] = '\0';	
		puts(ss);
		printf("%s%s%s%s%s\n", str, s3, s2, s1, s4);		
	}
	return 0;
}



你可能感兴趣的:(UVA10361- Automatic Poetry)