首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

中软国际C++软件工程师笔试题

2013-02-03 
【求助】中软国际C++程序员笔试题1、有一个16位的整数,求其二进制上每4位的数字之和。 例如:int a1111 1111 1

【求助】中软国际C++程序员笔试题
1、有一个16位的整数,求其二进制上每4位的数字之和。 例如:int a=1111 1111 1111 1111;          Int sum=1111 +1111 +1111 +1111.    


  2、判断一个字符串是否是回文,如果是,返回字符串“yes”,如果不是,返回字符串“no”。        


3、写一个函数比较两个字符串str1和str2的大小,若相等返回0,若str1大于str2返回1,若str1小于str2返回-1,不调用C++/C的字符串的字符库函数,请编写函数strcmp,函数定义为:int strcmp(const char*src,const char*dst)         



4、函数sun(int a [],int n)的返回值是数组a[]的前几个元素之和。 请使用递归的非递归两种方式实现。 中软国际 c++ 笔试
[解决办法]
4 求指导

#include <iostream>
using namespace std;
int sun(int a[], int n);//非递归
int sun1(int a[], int n);//递归

int main()
{
int a[] = {1, 2, 3, 4};
cout << sun(a, 2) <<endl;
cout<< sun1(a, 2) <<endl;

return 0;
}

int sun(int a[], int n)
{
int sum = 0;
for (int i = 0; i<n; ++i)
{
sum += a[i];
}
return sum;
}
int sun1(int a[], int n)
{
if (n == 1)
{
return a[0];
}
else
{
return a[n-1] + sun1(a, n-1);
}
}

[解决办法]
第一题像编程之美的求“1”的个数,目前不会
第二题是我们之前的C实验课题

char chs [M];
char ch;
int count = 0;
while((ch = getchar()) != '!')
{
chs[count++] = ch;
}
bool flag = true;
int left;
int right;
for(left=0,right=count-1; left < count/2 -1; left++,right--)
{
if(chs[left] != chs[right])
{
flag = false;
break;
}
}
if(flag == true)
{
printf("是回文数\n");
}
else
{
printf("不是回文数\n");
}

第三题:
较精简的,不过可能会不完善

int MyStrcmp(const char *str1,const char *str2)
{
while(*str1 == *str2)
{
str1++;
str2++;
}

if(*str1 > *str2)
return 1;
else if(*str1 < *str2)
return -1;
else
return 0;
}

第四题别人贴过了

热点排行