8.文字列処理(2)

1.B1009

#include<stdio.h> 
int main(){
	int num = 0;
	char ans[90][90];
	while(scanf("%s",ans[num])!=EOF){
		num++;
	}
	for(int i = num-1;i>=0;i--){
		printf("%s",ans[i]);
		if(i!=0)	printf(" ");
	}
	return 0;
}

2.B1014

#include<stdio.h>
#include<string.h>
int main(){
	char a[4][70];
	char day[7][5] = {"MON","TUE","WED","THU","FRI","SAT","SUN"};
	gets(a[0]);
	gets(a[1]);
	gets(a[2]);
	gets(a[3]);
	int i,len1,len2;
	len1 = strlen(a[0]);
	len2 = strlen(a[1]);
	for(i = 0;i<len1&&i<len2;i++){
		if(a[0][i] == a[1][i]&&a[0][i]>='A'&&a[0][i]<='G'){
				printf("%s ",day[a[0][i]-'A']);
				break;
			}
	}
	//printf("\n%d\n",i);
	char a1,a2;
	for(i++;i<len1&&i<len2;i++){
		a1 = a[0][i];
		a2 = a[1][i];
		if(a1 == a2){
				if(a1>='0'&&a1<='9'){
					printf("%02d:",a1-'0');
					break;
				}	
				else if(a1>='A'&&a1<='N'){
					printf("%02d:",a1-'A' + 10);
					break;	
				}		
			}	
		}
	len1 = strlen(a[2]);
	len2 = strlen(a[3]);
	for(i = 0;i<len1&&i<len2;i++){
		if(a[2][i] == a[3][i])
			if((a[2][i]>='A'&&a[2][i]<='Z') || (a[2][i]>='a'&&a[2][i]<='z')){
				printf("%02d",i);
				break;
			}			
	}
	return 0;
}

3.B1021

#include<stdio.h>
#include<string.h> 
int main(){
	char str[1010];
	gets(str);
	int len = strlen(str);
	int count[10] = {0};
	for(int i = 0;i<len;i++)
		count[str[i] - '0']++;
	for(int i = 0;i<10;i++)
		if(count[i]!=0)
			printf("%d:%d\n",i,count[i]);
	return 0;
}

4.B1024

#include<stdio.h> 
#include<string.h>
int main(){
	char str[10010];
	gets(str);
	int len = strlen(str);
	if(str[0] == '-')	printf("-");
	int pos = 0;
	while(str[pos]!='E'){
		pos++;
	}
	int exp = 0;
	for(int i = pos+2;i<len;i++){
		exp = exp * 10 + (str[i]-'0');
	}
	if(exp == 0)
		for(int i = 1;i<pos;i++)
			printf("%s",str[i]);
	if(str[pos+1] == '-'){
		printf("0.");
		for(int i = 0;i<exp-1;i++)
			printf("0");
		printf("%c",str[1]);
		for(int i = 3;i<pos;i++)
			printf("%c",str[i]);	
	}else{
		for(int i = 1;i<pos;i++){
			if(str[i] == '.') continue;
			printf("%c",str[i]);
			if(i == exp+2 && pos-3 != exp)
				printf(".");
		}
		for(int i = 0;i<exp-(pos-3);i++)
			printf("0");
	}
	return 0;
}

5.B1031

#include<stdio.h> 
#include<string.h>
int w[20] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char change[20] = {'1','0','X','9','8','7','6','5','4','3','2'};
int main(){
	int n;
	char str[20];
	bool flag = true;
	scanf("%d",&n);
	while(n--){
		scanf("%s",str);
		int j,last = 0;
		for(j = 0;j<17;j++){
			if(!(str[j]>='0'&&str[j]<='9'))	break;
			last = last + (str[j]-'0')*w[j];
		}
		if(j<17){
			flag = false;
			printf("%s\n",str);
		}else{
			if(change[last%11] != str[17]){
				flag = false;
				printf("%s\n",str);
			} 
		}
	}
	if(flag == true)
		printf("All passed\n");
	return 0;
}

6.B1048

#include<stdio.h> 
#include<string.h>
const int maxn = 110;
char A[maxn],B[maxn],ans[maxn] = {0};
void reverse(char s[]){
	int len = strlen(s);
	for(int i = 0;i<len/2;i++){
		int temp = s[i];
		s[i] = s[len-i-1];
		s[len-i-1] = temp;
	}
}
int main(){
	scanf("%s %s",A,B);
	reverse(A);
	reverse(B);
	int lenA = strlen(A);
	int lenB = strlen(B);
	int len = lenA>lenB?lenA:lenB;
	for(int i = 0;i<len;i++){
		int numA = i<lenA?A[i]-'0':0;
		int numB = i<lenB?B[i]-'0':0;
		if(i%2==0){
			int temp = (numA+numB)%13;
			if(temp==10)	ans[i] = 'J';
			else if(temp == 11)	ans[i] = 'Q';
			else if(temp == 12)	ans[i] = 'K';
			else	ans[i] = temp+'0';
		}else{
			int temp = numB-numA;
			if(temp<0)	temp = temp+10;
			ans[i] = temp+'0'; 
		}	
	}
	reverse(ans);
	puts(ans);
	return 0;
}
公開された26元の記事 ウォンの賞賛3 ビュー188

おすすめ

転載: blog.csdn.net/qq_41898248/article/details/104051774