2014华为上机题
2016-08-11 12:13
274 查看
//2.求两个长长整型的数据的和并输出,例如输入1233333333333333。。。 3111111111111111111111111.。。。,则输出。。。。#include<stdio.h> #include <iostream> #include <string> using namespace std; int main() { string num1, num2;//用于保存两个长整数 cin >> num1 >> num2; cout << "num1="<< num1<<",num2="<<num2<<endl; int len1,len2,len; len1 = num1.length(); len2 = num2.length(); len = (len1>=len2)?len1:len2 ; int l = len; int sum_int[len]={0};//用数组保存每位数相加之和 string sum(len+1,'0'); //cout << "sum.size=" << sizeof(sum_int)/sizeof(int) << "sum[0]="<< sum_int[0]<<endl;//tes //cout << "sum.size=" << sum.size() << "sum[0]="<< sum[0]<<endl;//test for(len1--,len2--;len1>=0&&len2>=0;len1--,len2--) { sum_int[len]=(num1[len1]-'0') +(num2[len2]-'0'); cout << len << "," <<sum_int[len]<<endl; len--; } while(len1>=0) { sum_int[len] = num1[len1]-'0'; len--; len1--; } while(len2>=0) { sum_int[len] = num2[len2]-'0'; len--; len2--; } for(int j=l;j>=0;j--) { if(sum_int[j]>9) { sum_int[j-1]+=1; sum_int[j]=sum_int[j]%10; } //cout << sum_int[j]<<endl; sum[j] = sum_int[j]+'0'; } //跳过开始的0 int k = 0; while(sum[k]=='0') k++; sum = sum.substr(k,l+1); cout << sum << endl; }
解法二://在第一个的基础上优化了一下,调理更清楚。
//2.求两个长长整型的数据的和并输出,例如输入1233333333333333。。。 3111111111111111111111111.。。。,则输出。。。。#include<stdio.h> #include <iostream> #include <string> using namespace std; int main() { string num1, num2;//用于保存两个长整数 cin >> num1 >> num2; cout << "num1="<< num1<<",num2="<<num2<<endl; int len1,len2,len; len1 = num1.length(); len2 = num2.length(); len = (len1>=len2)?len1:len2 ; int l = len; string sum(len+1,'0');//用于保存最后的结果 int sum_int[len+1]= {0};//定义数组保存每位之和 for(len1--,len2--; len1>=0&&len2>=0; len1--,len2--) { sum_int[len--] = (num1[len1]-'0')+(num2[len2]-'0'); } while (len1>=0) { sum_int[len--] = (num1[len1]-'0'); len1--; } while (len2>=0) { sum_int[len--] = (num2[len2]-'0'); len2--; } //实现进位 for(int i=l; i>=0; i--) { if(sum_int[i]>9) { sum_int[i-1] += 1; sum_int[i]%=10; } cout << sum_int[i]<<endl; sum[i] = sum_int[i]+'0'; } //跳过开始的0 int k = 0; while(sum[k]=='0') k++; sum = sum.substr(k,sum.size()); cout << sum << endl; }
第三题:
3.通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
比如字符串“abacacde”过滤结果为“abcde”。
要求实现函数:
void stringFilter(const char *pInputStr,long lInputLen, char *pOutputStr);
【输入】 pInputStr:输入字符串
lInputLen: 输入字符串长度
【输出】 pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> using namespace std; void stringFilter( const char *pInputStr,long lInputLen, char *pOutputStr) { int arr[256] = {0}; const char * tmp=pInputStr; while(*tmp++!='\0') { if(!arr[*tmp]) { arr[*tmp] = 1; *pOutputStr++ = *tmp; } } } int main() { char *str = "abbbcdddeedf"; int len = strlen(str);//string.h cstring char* outstr = (char *)malloc(len*sizeof(char)); //stdlib.h cstdlib stringFilter(str,len,outstr); printf("%s\n",outstr); free(outstr); outstr= NULL; return 0; }
4.通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
压缩规则:
1. 仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc".
2. 压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"
要求实现函数:
void stringZip(const char*pInputStr, long lInputLen, char *pOutputStr);
【输入】 pInputStr: 输入字符串
lInputLen: 输入字符串长度
【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;
void stringZip(const char*pInputStr, long lInputLen, char *pOutputStr) { const char * tmp = pInputStr; while(*tmp!='\0') { int count = 1; char character = *tmp; const char *char_tmp = tmp; while(*(++char_tmp) == character) count++; if(1 != count) { *pOutputStr++ = count + '0'; } *pOutputStr++ = character; tmp = tmp+count; } } int main() { char *str = "abbbcdddeedf"; int len = strlen(str); char* outstr = (char *)malloc(len*sizeof(char)); // stringFilter(str,len,outstr); stringZip(str,len,outstr); printf("%s\n",outstr); free(outstr); outstr= NULL; return 0; }
相关文章推荐
- 2014华为上机题C++编程
- 2014华为上机题
- 2014华为哈尔滨上机三道题
- 2014华为上机题(转)
- 2014华为哈尔滨上机三道题
- 2014华为上机试题
- 华为2014上机考试样题_高级题_地铁换乘最短路径_无向无权图+邻接表存储+BFS广度优先算法
- 2014华为上机试题
- 2014华为校园招聘第三轮上机题目(南京-C/C++)
- 2014华为上机试题
- 2014华为校园招聘最新题库(上机题)
- 2014华为武汉上机试题规范
- 2014华为武汉上机试题一:手机电池余量
- 2014华为武汉上机试题二:姓名的夫妻相
- 2014华为上机试题
- 2014 8月华为软件类上机笔试题目解答
- 2014华为武汉上机试题三:CandyBrush游戏
- 华为2014上机考试样题_高级题_地铁换乘最短路径_无向无权图+邻接表存储+BFS广度优先算法
- 2014华为武汉上机试题一:手机电池余量
- 2014 8月华为软件类上机笔试