由于本人只做出两道题,第三题没来得及细看,所以只列出前两道题目及其解法(C语言),仅供参考。
1、输入一个字符串(由小写字母组成,长度不超过1000),输出为对应的数字字符串。(60分)
样例:
输入:yiersansi
输出:1234
#include<stdio.h> int main() { charstr[1000]={"0"},s[100]={"0"}; char*p=str,*q=s; scanf("%s",str); while(*p!='\0') { if('y'==*p) { *q='1'; q++; p+=2; } else if('e'==*p) { *q='2'; q++; p+=2; } else if('s'==*p) { p+=1; if('a'==*p) { *q='3'; q++; p+=2; } else { *q='4'; q++; p+=1; } } else if('w'==*p) { *q='5'; q++; p+=2; } else if('l'==*p) { *q='6'; q++; p+=3; } else if('q'==*p) { *q='7'; q++; p+=2; } else if('b'==*p) { *q='8'; q++; p+=2; } else if('j'==*p) { *q='9'; q++; p+=3; } } *q='\0'; printf("%s",s); return0; }
2、输入一个字符串(由小写字母组成,大小不超过255),字符串由一个个单词组成,每个单词之间有个空格,最后一个单词末尾不加空格;输出为各个单词按字典的字母由小到大排序后的字符串,每个单词之间仍有个空格,最后一个单词末尾不加空格。(100分)
样例:
输入:i am a student
输出:a am i student
#include<stdio.h> #include<string.h> int main() { charstr[255]={"0"},s[20]={"0"},str_1[20][20]={"0"},str_2[20]={"0"}; char*p=str,*q=s; inti,j,k=0; gets(str); while(*p!='\0') { while(*p!=''&&*p!='\0') *q++=*p++; *q='\0'; p++; strcpy(str_1[k++],s); strcpy(s,"0"); q=s; } for(j=0;j<k-1;j++) for(i=0;i<k-1-j;i++) if(strcmp(str_1[i],str_1[i+1])>0) { strcpy(str_2,str_1[i]); strcpy(str_1[i],str_1[i+1]); strcpy(str_1[i+1],str_2); } for(i=0;i<k;i++) printf("%s",str_1[i]); return0; }
总结:1、华为机试主要考查字符串,有一定的灵活性;
2、机考系统的内核为VS2005及JDK1.7,注意输入输出的格式;
3、只要做出一道题(60分以上),就可以参加下一轮考核。