2014华为机试题目
1.输入摸一个数,然后将其倒过来相加,如果和不是回文串,那么将和再采取同样的操作,在判断得到的是否为回文串,这样往返7次,如果其中有一次是回文就直接打出来,若都没有,那么输出0;
也很简单!用库函数更简单,itoa这个!整数转成字符,然后判断回文!
2.关于匹配的字符串的个数的最大值,即目标字符串与多个字符串比配,找出匹配最多的那个字符串。
其实代码很简单,我当时用2个数组,下标即为字符,值为出现次数,这样 比较即可;
可是我输入字符的代码写错了比如要输入Li si;到一个字符数组里面,我写成了
char a[200]; cin>>a;//这里错了,应该写为cin.getline(a,200);因为cin输入遇到空格就认为输入结束,所以只有li,没有si
3.输入一个十进制的数,与一个n整数,求输出这个十进制数的n进制的数!
分析:哎,真倒霉,可以用atoi函数啊
#include<cstdlib> #include<cstdio> int main() { int num = 10; char str[100]; itoa(num, str, 2); printf("%s\n", str); return 0; }
itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是目标字符串,第三个参数是转移数字时所用 的基数。在上例中,转换基数为10。10:十进制;2:二进制……
于是想到了一个十进制转二进制的方法:
#include<cstdlib> #include<cstdio> int main() { int num = 10; char str[100]; int n = atoi(itoa(num, str, 2)); printf("%d\n",n); return 0; }
先把num转换为二进制的字符串,再把该字符串转换为整数。
哎,平时用惯了VS2010,用VC++6.0就不熟了!!