微软面试题 2
来源:互联网 发布:htpc安装软件 编辑:程序博客网 时间:2024/05/22 02:27
题:.给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里。
分析:首先54张牌分别用0到53 的数值表示并存储在一个整形数组里,数组下标代表纸牌所在的位置。接下来,遍历整个数组,在遍历过程中随机产生一个随机数,并以该随机数为下标的数组元素与当前遍历到的数组元素进行对换。时间复杂度为O(n) (注:所得到的每一种结果的概率的分母越大越好)
实现代码:
- /**
- Author:花心龟
- Blog:http://blog.csdn.net/zhanxinhang
- **/
- #include <stdio.h>
- #include <time.h>
- #include <stdlib.h>
- void shuffle(int boke[]) //洗牌
- {
- int i,r,t;
- srand((unsigned)time(NULL)); //随机数种子
- for(i=0; i<54; i++)
- {
- r=(rand()%107)/2;
- //交换
- t=boke[i];
- boke[i]=boke[r];
- boke[r]=t;
- }
- }
- int main()
- {
- int boke[54],i;
- for(i=0;i<54;i++) //初始化纸牌
- boke[i]=i;
- printf("before shuffle:\n");
- for(i=0; i<54; i++) //打印
- printf("%d ",boke[i]);
- shuffle(boke); //洗牌
- printf("\nafter shuffle:\n");
- for(i=0; i<54; i++) //打印
- printf("%d ",boke[i]);
- return 0;
- }
题:写一个函数,检查字符串是否是整数,如果是,返回其整数值。
(或者:怎样只用4行代码编写出一个从字符串到长整形的函数?)
分析:略
实现代码:
- /**
- Author:花心龟
- Blog:http://blog.csdn.net/zhanxinhang
- **/
- #include <stdio.h>
- long convert(const char *str) // 4行代码?下面我用了四句语句,不知当不当否,权当娱乐^^
- {
- long value=0,f=1; //f将决定value是否为负数
- if(*str == '-') str++,f=-1;
- for(;*str!='\0' && *str>='0' && *str<='9'; str++)
- value=value*10+(*str-'0');
- return *str=='\0'?value*f:0; //如果不为整数返回
- }
- int main()
- {
- char str0[] = "1234567";
- printf("%d\n",convert(str0));
- char str1[] = "4.56";
- printf("%d\n",convert(str1));
- char str2[] = "-1234567";
- printf("%d\n",convert(str2));
- char str3[] = "-4.56";
- printf("%d\n",convert(str3));
- return 0;
- }
- 微软面试题 2
- 微软面试题【2】
- 微软面试题2
- 微软面试题2 .
- 微软面试题 07012012[2]
- 微软面试题 07022012 [2]
- 微软面试题[1-2]
- 微软面试-微软面试题(2)
- 微软面试题汇总(2)
- 微软面试题汇总(2)
- 微软的面试题(答案)(2)
- 微软面试题程序(2)
- c++练习2 微软面试题
- 一道微软面试题
- 微软面试题
- 微软面试题
- 微软面试题(转载)
- 微软面试题
- C++类四个默认函数---构造函数、析构函数、拷贝函数、赋值函数
- 应熟悉的一些算法
- 微软面试题 1
- 什么是RUP
- 什么是UML(UML总结)
- 微软面试题 2
- Java 窗口中各组件的分布问题
- vaadin 使用maven
- ckeditor详细配置与使用说明
- 微软面试题3
- vaadin+spring
- struts,hibernate,spring的面试题
- 我去bt实习的目的
- Building Your App for Distribution