华为历年机试题型总结系列(四)
2015-06-23 21:29
399 查看
10.输入m个字符串和一个整数n,把字符串M化成以N为单位的段,不足位数用0补齐
输入:123456789, n=8 输出:12345678 90000000, 输入:123,n=8 输出:12300000
11. 电话号码
输入:OneTwoThree 输出:123 ,输入:OneTwoDoubleTwo 输出:1222。有空格,非法字符,两个Double相连,Double位于最后一个单词都错误
输入:123456789, n=8 输出:12345678 90000000, 输入:123,n=8 输出:12300000
#include<stdio.h> #include<string.h> void NumberDivide(char *pInputStr, int StrLength, int N, char *pOutputStr) { int i,j=0,section_number,string_left_number,k; if(StrLength<N) //如果输入字符串长度不足N { for(i=0;i<N;++i) { if(i>=StrLength) //不足的位数补0 pOutputStr[j++]='0'; else pOutputStr[j++]=pInputStr[i]; } }else //输入字符长度大于分段N { section_number=StrLength/N; //可整段输出的段数 string_left_number=StrLength-N*section_number; //整段输出后剩余的字符数 for(i=0;i<section_number;++i) //输出完整的section_number段长度为N的字符 { for(k=0;k<N;++k) pOutputStr[j++]=pInputStr[i*N+k]; //将输入字符串N段输出 pOutputStr[j++]=' '; //N段字符之间用空格隔开 } for(i=section_number*N;i<section_number*N+N;++i) //输出剩余字符串,不足补0 { if(i>=section_number*N+string_left_number) pOutputStr[j++]='0'; else pOutputStr[j++]=pInputStr[i]; } } pOutputStr[j]='\0'; } int main(void) { char pInputStr[20],pOutputStr[20]; int StrLength,n; printf("Input the number sequences:\n"); gets(pInputStr); StrLength=strlen(pInputStr); printf("Input the n:\n"); scanf("%d",&n); NumberDivide(pInputStr,StrLength,n,pOutputStr); puts(pOutputStr); return 0; }
11. 电话号码
输入:OneTwoThree 输出:123 ,输入:OneTwoDoubleTwo 输出:1222。有空格,非法字符,两个Double相连,Double位于最后一个单词都错误
#include<stdio.h> #include<string.h> int NumberTrans(char *pInputStr, int StrLength, char *pOutputStr) { int i,j=0,k=0; char pOutputStr_Reverse[20]; //逆向存放输出数组 for(i=StrLength;i>=0;--i) //逆向输出是为了解决Double问题 { switch (pInputStr[i]) { case 'O':pOutputStr_Reverse[j++]='1';break; case 'T':pOutputStr_Reverse[j++]=(pInputStr[i+1]=='w')?'2':'3';break; case 'F':pOutputStr[j++]=(pInputStr[i+1]=='o')?'4':'5';break; case 'S':pOutputStr_Reverse[j++]=(pInputStr[i+1]=='i')?'6':'7';break; case 'E':pOutputStr_Reverse[j++]='8';break; case 'N':pOutputStr_Reverse[j++]='9';break; case 'D': if(j==0 || pInputStr[i+6]=='D') //如果Double在最后或者连续两个Double,则返回1 return 1; else pOutputStr_Reverse[j++]=pOutputStr_Reverse[j-1]; //连续两个输出一样 break; case '0':return 1;break; case '1':return 1;break; case '2':return 1;break; case '3':return 1;break; case '4':return 1;break; case '5':return 1;break; case '6':return 1;break; case '7':return 1;break; case '8':return 1;break; case '9':return 1;break; default:break; } } pOutputStr_Reverse[j]='\0'; for(i=j-1;i>=0;--i) pOutputStr[k++]=pOutputStr_Reverse[i]; //正向输出结果 pOutputStr[k]='\0'; } int main(void) { char pInputStr[20],pOutputStr[20]; int StrLength,flag=0; printf("Input the numbers:\n"); gets(pInputStr); StrLength=strlen(pInputStr); flag=NumberTrans(pInputStr,StrLength,pOutputStr); //flag用于判断是否输入字符合法 if(flag==1) //非法返回值 puts("ERROR"); else puts(pOutputStr); return 0; }
相关文章推荐
- autolayout - sizeClass - 2
- (六十八)使用XMPPFramework登录
- Android通讯录数据库介绍与基本操作(增删改查)
- MediaStore类使用Intent录制音频,拍照
- LaTeX 绘制表格
- (六十八)使用XMPPFramework登录
- html5
- WPF-提示窗(线程)
- oracle 数据恢复-闪回
- Python导入模块或是库文件的方法
- 工业互联网 + 的执行路线图
- poj1392 Ouroboros Snake 欧拉回路
- Mapped Statements collection does not contain value for后面是什么类什么方法之类的错误
- spring的事务处理
- python连续爬取多个网页的图片分别保存到不同的文件夹
- SEO实战经验分享 迎接百度算法新挑战
- 笔记本
- QuerySyntaxException
- Java基础--网络编程1
- android的布局xml文件如何添加注释?