面试题记
今天在学校里进行了第二次面试,这次面试官什么都不讲,只讲编程水平,便有下面两道编程题,在平时的话是很简单的,但在当时条件下,做的有点糟糕:过后又把它们做了一便:
1:数1,1,2,3,5,8,13,21.。。。。。求出第30个数?要求利用递归实现;
方法一:
#include "stdio.h"
#include "stdlib.h"
int Cacluate(int a,int b,int t){
???
??? int m=0;
?? m=a+b;a=b;b=m;
?
?? t=t-1;
?
??? if(t==0){return m;}
??? else{
????? return Cacluate(a,b,t);?
?????? }
}
int main(){
??? int n=Cacluate(1,1,3);??
??? printf("%d",n);
???? getchar();
???? return 0;
}
方法二:
#include "stdio.h"
#include "stdlib.h"
int Cacl(int n){
??? if(n==1){return 1;}
??? if(n==2){return 2;}
??? else {return Cacl(n-1)+Cacl(n-2);}
}
int main(){
??? int m=Cacl(1,1,3);??
??? printf("%d",m);
???? getchar();
???? return 0;
}
2:给定一个数组a[100];要求随机的插入1—100个数并且不能重复;
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
int Cacluate(int a,int b,int t){
???
??? int m=0;
?? m=a+b;a=b;b=m;
?
?? t=t-1;
?
??? if(t==0){return m;}
??? else{
????? return Cacluate(a,b,t);?
?????? }
}
int main(){
??? srand((unsigned)time(NULL));
??? int a[100],b[100];
???
??? for(int i=0;i<100;i++){
??????? b[i]=i+1;?
???
??????? //printf("%d/n",b[i]);
??????????? }
for(int j=0;j<100;j++){
??????? int m=rand()%100;
??????? while(b[m]==0){
???????? m=rand()%100; }
??????? a[j]=b[m];
??????? b[m]=0;
??????? }
for(int j=0;j<100;j++){
??????? printf("%d/n",a[j]);
??????? }
???? getchar();
???? return 0;
}
a = Array.new(100)b = (1..100).to_aa.length.times do |index| a[index] = b.delete_at(rand(b.length))endp a
a = Array.new(100)b = (1..100).to_aa.length.times do |index| a[index] = b.delete_at(rand(b.length))endp a