几个面试小题
第一题:给一个数字n,比如说4,打印矩阵
1234
2341
3412
4123
第二题:递归法求一个数组的和
这个是填空题,不记得了
大家解决一下!
问题点数:20、回复次数:19Top
1 楼LoveTrista(祈祷)回复于 2006-04-05 11:08:59 得分 0
Q1:
char data[5] = {1, 2 ,3 ,4 ,5};
int _tmain()
{
// TODO: Please replace the sample code below with your own.
// void (A::*fptr)() = &A::abc;
int i, j;
i = j = 0;
for(i = 0; i < 5; i++)
{
j = i;
Console::Write(data[j]);
while(((j + 1) % 5) != i)
{
j = ((j + 1) % 5);
Console::Write(data[j]);
}
Console::Write("\n");
}
return 0;
}Top
2 楼jinjiajie(leorio)回复于 2006-04-05 11:14:04 得分 0
...不 像是面试题,到像是回家作业...Top
3 楼mmxopq()回复于 2006-04-05 11:46:06 得分 0
要传递参数n=4啊
矩阵的第一行是1,2,~,n
不是给好了数组的,不是打印4,上面只是例子,比如偶要打印5Top
4 楼Ninstein(www.Ninstein.Com)回复于 2006-04-05 11:48:12 得分 0
好象是微软的面试题捏Top
5 楼Ninstein(www.Ninstein.Com)回复于 2006-04-05 11:59:44 得分 2
#include <stdio.h>
#define MAX 100
void PrintLine(int, int);
void PrintMatrix(int);
void PrintMatrix(int n)
{
int i;
for(i = 1; i <= n; ++i,printf("\n"))
PrintLine(n,i);
}
void PrintLine(int n, int start)
{
int i;
for(i = start; i <= n; ++i)
printf("%d ",i);
for(i = 1; i < start; ++i)
printf("%d ",i);
}
int main()
{
int arr[MAX],n;
scanf("%d",&n);
PrintMatrix(n);
return 0;
}Top
6 楼Ninstein(www.Ninstein.Com)回复于 2006-04-05 12:03:07 得分 1
#define MAX 100
相关的东西都不要了 除非真的要存到数组里
#include <stdio.h>
void PrintLine(int, int);
void PrintMatrix(int);
void PrintMatrix(int n)
{
int i;
for(i = 1; i <= n; ++i,printf("\n"))
PrintLine(n,i);
}
void PrintLine(int n, int start)
{
int i;
for(i = start; i <= n; ++i)
printf("%d ",i);
for(i = 1; i < start; ++i)
printf("%d ",i);
}
int main()
{
int n;
scanf("%d",&n);
PrintMatrix(n);
return 0;
}
Top
7 楼dream2013(每个人都有魔鬼的一面( http://blog.sina.com.cn/u/1422260677 ))回复于 2006-04-05 12:28:04 得分 2
#2
int sum(a,n){
if(n==1)
return a[0];
else if(n>1)
return (a[n-1]+sum(a,n-1));
}Top
8 楼dream2013(每个人都有魔鬼的一面( http://blog.sina.com.cn/u/1422260677 ))回复于 2006-04-05 12:29:14 得分 0
#感觉第一题很无聊Top
9 楼citywanderer2005(流浪狗)回复于 2006-04-05 12:53:52 得分 2
第二题:
#include <iostream>
using namespace std;
int RecursionSum(int *a, int subs)
{
if(subs == 0)
{
return a[subs];
}
else
{
return RecursionSum(a, subs-1)+a[subs];
}
}
int main()
{
int a[] = {1, 2, 3};
cout<< RecursionSum(a, sizeof(a)/sizeof(a[0]) -1);
}Top
10 楼citywanderer2005(流浪狗)回复于 2006-04-05 13:09:08 得分 2
第一题:
void Print(int n)
{
for(int start=1; start<=n; start++)
{
for(int i=start; i<=n; i++)
{
cout<< i;
}
for(int j=1; j<start; j++)
{
cout<< j;
}
cout<< endl;
}
}
int main()
{
Print(5);
}Top
11 楼blh(当你不割肉时,你的损失只是个数字,当你割肉时,你的损失就是你的肉)回复于 2006-04-05 13:34:02 得分 2
int print_matrix (int N)
{
int i, j, n;
for (i = 1; i <= N; i++)
{
for (j = 0; j < N; j++)
{
n = (i + j) % N;
printf("%d", n ? n : N);
}
printf("\n");
}
printf("\n");
return 0;
}
int sum_array (int a[], int N)
{
return (N == 1) ? a[0] : a[0] + sum_array(a + 1, N - 1);
}
Top
12 楼blh(当你不割肉时,你的损失只是个数字,当你割肉时,你的损失就是你的肉)回复于 2006-04-05 13:34:30 得分 1
#include <stdio.h>
int print_matrix (int N)
{
int i, j, n;
for (i = 1; i <= N; i++)
{
for (j = 0; j < N; j++)
{
n = (i + j) % N;
printf("%d", n ? n : N);
}
printf("\n");
}
printf("\n");
return 0;
}
int sum_array (int a[], int N)
{
return (N == 1) ? a[0] : a[0] + sum_array(a + 1, N - 1);
}
int main (int argc, char *argv[])
{
int n[] = {1, 2, 3, 4, 5, 6};
int sum;
print_matrix(4);
print_matrix(5);
sum = sum_array(n, 6);
printf("sum = %d\n", sum);
return 0;
}
Top
13 楼For_suzhen(不懂装懂)回复于 2006-04-05 13:34:38 得分 1
Q1:
#include <stdio.h>
void Print( int n )
{
int i = 1,j = 0;
for ( i = 1;i <= n;i++ )
{
for( j = i;j < n + i;j++ )
{
if ( j % n == 0 )
{
printf( "%d" , n );
}
else
{
printf("%d", j % n );
}
}
printf("\n");
}
}
void main()
{
Print(4);
//getch();
}Top
14 楼xhbbs2006()回复于 2006-04-09 15:12:55 得分 2
#include<stdio.h>
void main()
{
for(int i=1;i<=4;i++)
{
for(int j=0;j<4;j++)
if(i+j<=4)
printf("%d",i+j);
else
printf("%d",i+j-4);
printf("\n");
}
}Top
15 楼pangumax(盘古)回复于 2006-04-18 22:22:24 得分 1
void print(int n)
{
for(int i=0;i<n;i++){
for(int j=1;j<=n;j++)
{
if((i+j)%n == 0)
printf("%d ",n);
else
printf("%d ",(i+j)%n);
}
printf("\n");
}
}Top
16 楼Mypiger(深圳 step by step)回复于 2006-04-19 15:45:40 得分 1
Q1:
void main()
{
int value = 0, tmp = 0;
scanf( "%d", &value );
for( int i=1; i<=value; i++ )
{
for( int j=0; j<value; j++ )
{
tmp = i+j;
if( tmp>value )
tmp -= value;
printf( "%d", tmp );
}
printf( "\n" );
}
}Top
17 楼Mypiger(深圳 step by step)回复于 2006-04-19 15:55:52 得分 1
Q2:
int sum( int a[], int n )
{
if( n == 1 )
return a[0];
else
if( n > 1 )
return ( a[n-1]+sum( a, n-1 ) );
}
void main()
{
int a[3] = { 1, 2, 3 };
printf( "%d", sum( a, 3 ) );
}Top
18 楼lijichao(木子)回复于 2006-04-19 18:48:56 得分 1
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void Print(int n)
{
vector<int> A(n);
for (int i=0; i<n; i++)
{
A[i]= i+1;
}
vector<int>::iterator p = A.begin();
vector<int> temp(n);
for (int j=0; j<n;j++)
{
copy(A.begin(),A.end(),temp.begin());
copy(temp.begin(),temp.end(),ostream_iterator<int>(cout," "));
cout<<endl;
rotate_copy(temp.begin(),temp.begin()+1,temp.end(),A.begin());
}
}Top
19 楼jiangjundu(将军肚卸顶没文化穷)回复于 2006-04-20 09:29:25 得分 1
#include <stdio.h>
void dpl(int n)
{
int i,j,k;
for(j=1;j<=n;j++)//col
{
for(i=j,k=1;k<=n;k++,i++,i>n?(i-=n):(i=i))//line
printf("%d ",i);
printf("\n");
}
}
void main()
{
int n;
scanf("%d",&n);
dpl(n);
}Top




