您的位置:首页 > 编程语言 > C语言/C++

森浦资讯(C++ 面试两道程序题)

2015-12-22 21:39 671 查看
2015-12-22 星期2 

今天去了我的第一个实习公司(森浦资讯)面试,这也是我在学了一整年德语之后,第一次去面试一家软件开发岗位。

其实这次面试我是什么都没有准备,只是凭着自己的以前的记忆去回答一起技术问题。

在这期间面试官给我两道程序题:

1. 写一个回文函数,检测一个字符串是不是回文。

2.写一个atof()函数,

面对这样的两个题目,总感觉以前都是写过的,但是一年多没看程序代码,这个事也不是一件轻松的事。

虽然第一个回文函数,我自己心中是有个谱,但是由于自己一些基本的字符串,指针用法忘接了,就没有写出来。第二个程序,还算是勉强凑合的写出来了。

现在我回到实验室,准备把这两个函数再重新写一遍,在实现以下。

1、字符串回文检测

#include "stdio.h"

#include "string.h"

int f(char *s)

{int i,j;

j=strlen(s);

j--;

for(i=0;i<j&&s[i]==s[j];i++,j--);

if(i>=j)

return 1;

return 0;

}

main()

{char s[80];

gets(s);

if(f(s)==1)

printf("YES");

else

printf("NO");

}


2、atof() 函数

<pre name="code" class="cpp">

#include "stdafx.h"
#include <iostream>

int atoi( char sptr){
int atoI = 0;

switch (sptr){
case '1':
atoI = 1;
break;
case '2':
atoI = 2;
break;
case '3':
atoI = 3;
break;
case '4':
atoI = 4;
break;
case '5':
atoI = 5;
break;
case '6':
atoI = 6;
break;
case '7':
atoI = 7;
break;
case '8':
atoI = 8;
break;
case '9':
atoI = 9;
break;
case '0':
atoI = 0;
break;
}
return atoI;
}
double myatof(char *str){
double sum = 0;
int num = 0, flag = 0;

if (*str == '-'){
str++;
while (*str != '\0'){

if ((*str != '0') && (*str != '1') && (*str != '2') && (*str != '3')
&& (*str != '4') && (*str != '5') && (*str != '6') && (*str != '7')
&& (*str != '8') && (*str != '9') && (*str != '.')){

printf("falsh input!\n");
return 0;
}
else{
if (*str == '.'){
flag = 1;
str++;
}
else{
if (flag == 0){
num = atoi(*str);
sum = sum * 10 + num;
str++;

}
if (flag == 1){
num = atoi(*str);
sum = sum + num / 10;
str++;
}
}
}
}
return -sum;
}
else
{
while (*str != '\0') {

if ((*str != '0') && (*str != '1') && (*str != '2') && (*str != '3')
&& (*str != '4') && (*str != '5') && (*str != '6') && (*str != '7')
&& (*str != '8') && (*str != '9') && (*str != '.'))
{
printf("falsh input!\n");
return 0;
}
else{
if (*str == '.'){
flag = 1;
str++;
}
else{
if (flag == 0){
num = atoi(*str);
sum = sum * 10 + num;
str++;

}
if (flag == 1){
num = atoi(*str);
sum = sum + num / 10;
str++;
}
}
}
}
return sum;
}
}

int _tmain(int argc, _TCHAR* argv[])
{
char *String1 = "1a2345";
char *String2 = "123.45";

double Sum1=0,Sum2=0;

Sum1 = myatof(String1);
printf("%f\n", Sum1);

Sum2 = myatof(String2);
printf("%f\n", Sum2);

while (1);
return 0;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++