View Code of Problem 16

#include<stdio.h>
#include<string.h>
#include<math.h>
int main(){
	char a[10][10]={"zero","one","two","three","four","five","six","seven","eight","nine"};
	int t,n,i;
scanf("%d",&t);
while(t--){
	scanf("%d",&n);
	char s[10];
	int sum=0,num[100],k=0;
	while(scanf("%s",s)!=EOF){
		if(s[0]>='0'&&s[0]<='9'){
			int len=strlen(s);
			for(i=0;i<len;i++)
				num[k++]=s[i]-'0';
		}//将数字存入num数组中,从高位开始 
		else if(strcmp(s,"+")==0){//把数字从num中提取加给sum 
			
			for(i=0;i<k;i++){
			sum+=num[i]*pow(10,k-1-i);	
			}
			k=0;//把k重置成0,以便下一个数或英文存入到num中 
		}
		else if(strcmp(s,"=")==0){// 把数字从num中提取加给sum,最后按要求用英文或数字 输出sum
			for(i=0;i<k;i++){
				sum+=num[i]*pow(10,k-1-i);
			}
			if(n==0){//数字输出 
				printf("%d\n",sum);
			}
			else if(n==1){//英文输出 
				int r[10];
				int m=0;
				while(sum>0){
					r[m++]=sum%10;
					sum/=10;
				}//将每位存入r数组,从低位开始 
				for(i=m-1;i>0;i--)
					printf("%s ",a[r[i]]); 
				printf("%s\n",a[r[0]]);
			}
			k=0;
			break;//将结果输出后退出while循环 
		}
		else{//把英文转化成数字存入num数组中 
			for(i=0;i<10;i++)
			{
				if(strcmp(s,a[i])==0){
				num[k++]=i;
				break;
			}
			}
		}
	}
}
}

Double click to view unformatted code.


Back to problem 16