华为2016校招机试题

题目一:根据指定的分隔符分隔字符串,并输出指定的段描述

根据指定的分隔符分隔字符串,并输出指定的段。如果指定的段超过分隔的段数,输出:NULL

举例: AAA?BBB?CCC??2 字符串为:AAA?BBB?CCC? 分隔符为:? 指定的段为:2 字符串分割为:AAA BBB CCC共三段,第2段字符串为:BBB

输入输出格式要求

输入分隔字符串长度小于128个字符,指定的段是一个正整数。

样例

输入:AAA?BBB?CCC??2 输出:BBB

#include <iostream>#include <Windows.h>using namespace std;void spliteStr(){char str[100];cin>>str;char* strTmp = str;char *strStart = strchr(strTmp, '?');strStart++;char *strEnd = strchr(strStart, '?');int len = strEnd – strStart;while(len != 0){cout<<*strStart;strStart++;len–;}cout<<endl;}int main(){spliteStr();system("pause");return 0;}

题目二:输入若干整数,输出其中能被这些整数中其他元素整除的那些元素描述

输入一组大于0小于1000的整数,且均不相同,逗号隔开,输出其中能被这些整数中其他元素整除的那些元素。

输入输出格式要求

输入要求同上述描述,输出要求整数顺序按照输入时的顺序输出。

样例

输入:2,4,6,8,10,12,3,9 输出:4,6,8,10,12,9

#include <iostream>using namespace std;int main(){int a[100],b[100],tempIn,i,k;char c = '0';i = 0;while(c != '\n'){scanf("%d",&tempIn);a[i] = tempIn;i++;scanf("%c",&c);;}i–;k = 0;while(i > 0){for(int j = 0; j < i; j++){if(a[i] % a[j] == 0){b[k] = a[i];k++;break;}}i–;}for(int j = k-1; j >= 0; j–){cout<<b[j];if(j != 0)cout<<",";}cout<<endl;system("pause");return 0;}

题目三:大数求余描述

输入两个超长整型构成的字符串,使用空格隔开,求前者除以后者的余数。

输入输出格式要求

输入的每个字符串最大长度为100个字符,,输出为余数值,如果结果异常输出NULL

样例

输入:123456789 23456789 输出:6172844

#include <iostream>using namespace std;char *aModb(char *a, char *b){int lenb = strlen(b);int lena,i,j,k,temp,temp2;char *t = a;while((lena = strlen(a)) > lenb ||lena == lenb && strcmp(a,b) >= 0){for(i=lena-1,j=lenb-1; j >= 0;){a[i–] -= (b[j–] – '0');}for(int pr=lena-1; pr > 0; pr–){if(a[pr] < '0'){a[pr] += 10;a[pr-1] -= 1;}}while(*a == '0') a++;}return a;}int main(){char stra[1000] = {0}, strb[1000] = {0};char c;int tag = 0,i=0,j=0;while(c != '\n'){scanf("%c", &c);if(c != ' ' && tag == 0){stra[i++] = c;}if(c == ' ')tag = 1;if(c != ' ' && tag == 1){strb[j++] = c;}}strb[j-1]='\0';cout<<aModb(stra, strb)<<endl;system("pause");return 0;}

版权声明:本文为博主原创文章,未经博主允许不得转载。

竞争颇似打网球,与球艺胜过你的对手比赛,

华为2016校招机试题

相关文章:

你感兴趣的文章:

标签云: