青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

HyJune的專欄

Linux From Scratch

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  10 隨筆 :: 11 文章 :: 6 評論 :: 0 Trackbacks
from: http://blog.csdn.net/fansnaf/archive/2006/11/03/1364447.aspx

本人很弱,這幾個題也搞不定,特來求救:
1)讀文件file1.txt的內(nèi)容(例如):
12
34
56
輸出到file2.txt:
56
34
12
(逆序)
2)輸出和為一個給定整數(shù)的所有組合
例如n=5
5=1+4;5=2+3(相加的數(shù)不能重復(fù))
則輸出
1,4;2,3。
望高手賜教!!

第一題,注意可增長數(shù)組的應(yīng)用.
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int MAX = 10;
int *a = (int *)malloc(MAX * sizeof(int));
int *b;

FILE *fp1;
FILE *fp2;

fp1 = fopen("a.txt","r");
if(fp1 == NULL)
{printf("error1");
exit(-1);
}

fp2 = fopen("b.txt","w");
if(fp2 == NULL)
{printf("error2");
exit(-1);
}

int i = 0;
int j = 0;

while(fscanf(fp1,"%d",&a[i]) != EOF)
{
i++;
j++;
if(i >= MAX)
{
MAX = 2 * MAX;
b = (int*)realloc(a,MAX * sizeof(int));
if(b == NULL)
{
printf("error3");
exit(-1);
}
a = b;
}
}

for(;--j >= 0;)
fprintf(fp2,"%d\n",a[j]);

fclose(fp1);
fclose(fp2);

return 0;


}

第二題.
#include <stdio.h>

int main(void)
{
unsigned long int i,j,k;

printf("please input the number\n");
scanf("%d",&i);
if( i % 2 == 0)
j = i / 2;
else
j = i / 2 + 1;

printf("The result is \n");
for(k = 0; k < j; k++)
printf("%d = %d + %d\n",i,k,i - k);
return 0;
}

#include <stdio.h>
void main()
{
unsigned long int a,i=1;
scanf("%d",&a);
if(a%2==0)
{
for(i=1;i<a/2;i++)
printf("%d",a,a-i);
}
else
for(i=1;i<=a/2;i++)
printf(" %d, %d",i,a-i);
}

兄弟,這樣的題目若是做不出來實在是有些不應(yīng)該, 給你一個遞規(guī)反向輸出字符串的例子,可謂是反序的經(jīng)典例程.

void inverse(char *p)
{
if( *p = = '\0' )
return;
inverse( p+1 );
printf( "%c", *p );
}

int main(int argc, char *argv[])
{
inverse("abc\0");

return 0;
}

借簽了樓上的“遞規(guī)反向輸出”
#include <stdio.h>
void test(FILE *fread, FILE *fwrite)
{
char buf[1024] = {0};
if (!fgets(buf, sizeof(buf), fread))
return;
test( fread, fwrite );
fputs(buf, fwrite);
}
int main(int argc, char *argv[])
{
FILE *fr = NULL;
FILE *fw = NULL;
fr = fopen("data", "rb");
fw = fopen("dataout", "wb");
test(fr, fw);
fclose(fr);
fclose(fw);
return 0;
}

在對齊為4的情況下
struct BBB
{
long num;
char *name;
short int data;
char ha;
short ba[5];
}*p;
p=0x1000000;
p+0x200=____;
(Ulong)p+0x200=____;
(char*)p+0x200=____;
希望各位達(dá)人給出答案和原因,謝謝拉
解答:假設(shè)在32位CPU上,
sizeof(long) = 4 bytes
sizeof(char *) = 4 bytes
sizeof(short int) = sizeof(short) = 2 bytes
sizeof(char) = 1 bytes

由于是4字節(jié)對齊,
sizeof(struct BBB) = sizeof(*p)
= 4 + 4 + 2 + 1 + 1/*補齊*/ + 2*5 + 2/*補齊*/ = 24 bytes (經(jīng)Dev-C++驗證)

p=0x1000000;
p+0x200=____;
= 0x1000000 + 0x200*24

(Ulong)p+0x200=____;
= 0x1000000 + 0x200

(char*)p+0x200=____;
= 0x1000000 + 0x200*4

你可以參考一下指針運算的細(xì)節(jié)


寫 一段程序,找出數(shù)組中第k大小的數(shù),輸出數(shù)所在的位置。例如{2,4,3,4,7}中,第一大的數(shù)是7,位置在4。第二大、第三大的數(shù)都是4,位置在1、 3隨便輸出哪一個均可。函數(shù)接口為:int find_orderk(const int* narry,const int n,const int k)
要求算法復(fù)雜度不能是O(n^2)
謝謝!
可以先用快速排序進行排序,其中用另外一個進行地址查找
代碼如下,在VC++6.0運行通過。給分吧^-^

//快速排序

#include<iostream>

usingnamespacestd;

intPartition (int*L,intlow,int high)
{
inttemp = L[low];
intpt = L[low];

while (low < high)
{
while (low < high && L[high] >= pt)
--high;
L[low] = L[high];
while (low < high && L[low] <= pt)
++low;
L[low] = temp;
}
L[low] = temp;

returnlow;
}

voidQSort (int*L,intlow,int high)
{
if (low < high)
{
intpl = Partition (L,low,high);

QSort (L,low,pl - 1);
QSort (L,pl + 1,high);
}
}

intmain ()
{
intnarry[100],addr[100];
intsum = 1,t;

cout << "Input number:" << endl;
cin >> t;

while (t != -1)
{
narry[sum] = t;
addr[sum - 1] = t;
sum++;

cin >> t;
}

sum -= 1;
QSort (narry,1,sum);

for (int i = 1; i <= sum;i++)
cout << narry[i] << '\t';
cout << endl;

intk;
cout << "Please input place you want:" << endl;
cin >> k;

intaa = 1;
intkk = 0;
for (;;)
{
if (aa == k)
break;
if (narry[kk] != narry[kk + 1])
{
aa += 1;
kk++;
}

}

cout << "The NO." << k << "number is:" << narry[sum - kk] << endl;
cout << "And it's place is:" ;
for (i = 0;i < sum;i++)
{
if (addr[i] == narry[sum - kk])
cout << i << '\t';
}


return0;
}

1、找錯
Void test1()
{
char string[10];
char* str1="0123456789";
strcpy(string, str1);// 溢出,應(yīng)該包括一個存放'\0'的字符string[11]
}


Void test2()
{
char string[10], str1[10];
for(I=0; I<10;I++)
{
str1[i] ='a';
}
strcpy(string, str1);// I,i沒有聲明。
}

Void test3(char* str1)
{
char string[10];
if(strlen(str1)<=10)// 改成<10,字符溢出,將strlen改為sizeof也可以
{
strcpy(string, str1);
}
}

2.
void g(int**);
int main()
{
int line[10],i;
int *p=line; //p是地址的地址
for (i=0;i<10;i++)
{
*p=i;
g(&p);//數(shù)組對應(yīng)的值加1
}
for(i=0;i<10;i++)
printf("%d\n",line[i]);
return 0;
}

void g(int**p)
{
(**p)++;
(*p)++;// 無效
}
輸出:
1
2
3
4
5
6
7
8
9
10
3. 寫出程序運行結(jié)果

int sum(int a)
{
auto int c=0;
static int b=3;
c+=1;
b+=2;
return(a+b+c);
}

void main()
{
int I;
int a=2;
for(I=0;I<5;I++)
{
printf("%d,", sum(a));
}
}
// static會保存上次結(jié)果,記住這一點,剩下的自己寫
輸出:8,10,12,14,16,


4.

int func(int a)
{
int b;
switch(a)
{
case 1: 30;
case 2: 20;
case 3: 16;
default: 0
}
return b;
}
則func(1)=?
// b定義后就沒有賦值。

5:
int a[3];
a[0]=0; a[1]=1; a[2]=2;
int *p, *q;
p=a;
q=&a[2];
則a[q-p]=a[2]
解釋:指針一次移動一個int但計數(shù)為1

今天早上的面試題9道,比較難,向牛人請教,國內(nèi)的一牛公司,坐落在北京北四環(huán)某大廈:
1、線形表a、b為兩個有序升序的線形表,編寫一程序,使兩個有序線形表合并成一個有序升序線形表h;
答案在 請化大學(xué) 嚴(yán)銳敏《數(shù)據(jù)結(jié)構(gòu)第二版》第二章例題,數(shù)據(jù)結(jié)構(gòu)當(dāng)中,這個叫做:兩路歸并排序
Linklist *unio(Linklist *p,Linklist *q){
linklist *R,*pa,*qa,*ra;
pa=p;
qa=q;
R=ra=p;
while(pa->next!=NULL&&qa->next!=NULL){
if(pa->data>qa->data){
ra->next=qa;
qa=qa->next;
}
else{
ra->next=pa;
pa=pa->next;
}
}
if(pa->next!=NULL)
ra->next=pa;
if(qa->next!=NULL)
ra->next==qa;
return R;
}
2、運用四色定理,為N個局域舉行配色,顏色為1、2、3、4四種,另有數(shù)組adj[][N],如adj[i][j]=1則表示i區(qū)域與j區(qū)域相鄰,數(shù)組color[N],如color[i]=1,表示i區(qū)域的顏色為1號顏色。
四色填充
3、用遞歸算法判斷數(shù)組a[N]是否為一個遞增數(shù)組。
遞歸的方法,記錄當(dāng)前最大的,并且判斷當(dāng)前的是否比這個還大,大則繼續(xù),否則返回false結(jié)束:
bool fun( int a[], int n )
{
if( n= =1 )
return true;
if( n= =2 )
return a[n-1] >= a[n-2];
return fun( a,n-1) && ( a[n-1] >= a[n-2] );
}
4、編寫算法,從10億個浮點數(shù)當(dāng)中,選出其中最大的10000個。
用外部排序,在《數(shù)據(jù)結(jié)構(gòu)》書上有
《計算方法導(dǎo)論》在找到第n大的數(shù)的算法上加工
5、編寫一unix程序,防止僵尸進程的出現(xiàn).

同學(xué)的4道面試題,應(yīng)聘的職位是搜索引擎工程師,后兩道超級難,(希望大家多給一些算發(fā))
1.給兩個數(shù)組和他們的大小,還有一動態(tài)開辟的內(nèi)存,求交集,把交集放到動態(tài)內(nèi)存dongtai,并且返回交集個數(shù)
long jiaoji(long* a[],long b[],long* alength,long blength,long* dongtai[])
2.單連表的建立,把'a'--'z'26個字母插入到連表中,并且倒敘,還要打印!
方法1:
typedef struct val
{ int date_1;
struct val *next;
}*p;

void main(void)
{ char c;

for(c=122;c>=97;c--)
{ p.date=c;
p=p->next;
}

p.next=NULL;
}
}
方法2:
node *p = NULL;
node *q = NULL;

node *head = (node*)malloc(sizeof(node));
head->data = ' ';head->next=NULL;

node *first = (node*)malloc(sizeof(node));
first->data = 'a';first->next=NULL;head->next = first;
p = first;

int longth = 'z' - 'b';
int i=0;
while ( i<=longth )
{
node *temp = (node*)malloc(sizeof(node));
temp->data = 'b'+i;temp->next=NULL;q=temp;

head->next = temp; temp->next=p;p=q;
i++;
}

print(head);

3.可怕的題目終于來了
象搜索的輸入信息是一個字符串,統(tǒng)計300萬輸入信息中的最熱門的前十條,我們每次輸入的一個字符串為不超過255byte,內(nèi)存使用只有1G,
請描述思想,寫出算發(fā)(c語言),空間和時間復(fù)雜度,
4.國內(nèi)的一些帖吧,如baidu,有幾十萬個主題,假設(shè)每一個主題都有上億的跟帖子,怎么樣設(shè)計這個系統(tǒng)速度最好,請描述思想,寫出算發(fā)(c語言),空間和時間復(fù)雜度,


#include string.h
main(void)
{ char *src="hello,world";
char *dest=NULL;
dest=(char *)malloc(strlen(src));
int len=strlen(str);
char *d=dest;
char *s=src[len];
while(len--!=0)
d++=s--;
printf("%s",dest);
}
找出錯誤!!
#include "string.h"
#include "stdio.h"
#include "malloc.h"
main(void)
{
char *src="hello,world";
char *dest=NULL;
dest=(char *)malloc(sizeof(char)*(strlen(src)+1));
int len=strlen(src);
char *d=dest;
char *s=src+len-1;
while(len--!=0)
*d++=*s--;
*d='\0';
printf("%s",dest);
}

1. 簡述一個Linux驅(qū)動程序的主要流程與功能。

2. 請列舉一個軟件中時間換空間或者空間換時間的例子。
void swap(int a,int b)
{
int c; c=a;a=b;b=a;
}
--->空優(yōu)
void swap(int a,int b)
{
a=a+b;b=a-b;a=a-b;
}
6. 請問一下程序?qū)⑤敵鍪裁唇Y(jié)果?
char *RetMenory(void)
{
char p[] = “hellow world”;
return p;
}
void Test(void)
{
char *str = NULL;
str = RetMemory();
printf(str);
}
RetMenory執(zhí)行完畢,p資源被回收,指向未知地址。返回地址,str的內(nèi)容應(yīng)是不可預(yù)測的, 打印的應(yīng)該是str的地址


寫一個函數(shù),它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字符串中找出連續(xù)最長的數(shù)字串,并把這個串的長度返回,并把這個最長數(shù)字串付給其中一個函數(shù)參數(shù)outputstr所指內(nèi)存。例如:"abcd12345ed125ss123456789"的首地址傳給intputstr后,函數(shù)將返回
9,outputstr所指的值為123456789
int continumax(char *outputstr, char *inputstr)
{
char *in = inputstr, *out = outputstr, *temp, *final;
int count = 0, maxlen = 0;

while( *in != '\0' )
{
if( *in > 47 && *in < 58 )
{
for(temp = in; *in > 47 && *in < 58 ; in++ )
count++;
}
else
in++;

if( maxlen < count )
{
maxlen = count;
count = 0;
final = temp;
}
}
for(int i = 0; i < maxlen; i++)
{
*out = *final;
out++;
final++;
}
*out = '\0';
return maxlen;
}

不用庫函數(shù),用C語言實現(xiàn)將一整型數(shù)字轉(zhuǎn)化為字符串
方法1:
int getlen(char *s){
int n;
for(n = 0; *s != '\0'; s++)
n++;
return n;
}
void reverse(char s[])
{
int c,i,j;
for(i = 0,j = getlen(s) - 1; i < j; i++,j--){
c = s[i];
s[i] = s[j];
s[j] = c;
}
}
void itoa(int n,char s[])
{
int i,sign;
if((sign = n) < 0)
n = -n;
i = 0;
do{/*以反序生成數(shù)字*/
s[i++] = n%10 + '0';/*get next number*/
}while((n /= 10) > 0);/*delete the number*/

if(sign < 0)
s[i++] = '-';

s[i] = '\0';
reverse(s);
}
方法2:
#include <iostream>
using namespace std;

void itochar(int num);

void itochar(int num)
{
int i = 0;
int j ;
char stra[10];
char strb[10];
while ( num )
{
stra[i++]=num%10+48;
num=num/10;
}
stra[i] = '\0';
for( j=0; j < i; j++)
{
strb[j] = stra[i-j-1];
}
strb[j] = '\0';
cout<<strb<<endl;

}
int main()
{
int num;
cin>>num;
itochar(num);
return 0;
}

前幾天面試,有一題想不明白,請教大家!
typedef struct
{
int a:2;
int b:2;
int c:1;
}test;

test t;
t.a = 1;
t.b = 3;
t.c = 1;

printf("%d",t.a);
printf("%d",t.b);
printf("%d",t.c);

謝謝!
t.a為01,輸出就是1
t.b為11,輸出就是-1
t.c為1,輸出也是-1
3個都是有符號數(shù)int嘛。
這是位擴展問題
01
11
1
編譯器進行符號擴展


求組合數(shù): 求n個數(shù)(1....n)中k個數(shù)的組合....
如:combination(5,3)
要求輸出:543,542,541,532,531,521,432,431,421,321,
#include<stdio.h>

int pop(int *);
int push(int );
void combination(int ,int );

int stack[3]={0};
top=-1;

int main()
{
int n,m;
printf("Input two numbers:\n");
while( (2!=scanf("%d%*c%d",&n,&m)) )
{
fflush(stdin);
printf("Input error! Again:\n");
}
combination(n,m);
printf("\n");
}
void combination(int m,int n)
{
int temp=m;
push(temp);
while(1)
{
if(1==temp)
{
if(pop(&temp)&&stack[0]==n) //當(dāng)棧底元素彈出&&為可能取的最小值,循環(huán)退出
break;
}
else if( push(--temp))
{
printf("%d%d%d ",stack[0],stack[1],stack[2]);//§&auml;¨ì¤@?
pop(&temp);
}
}
}
int push(int i)
{
stack[++top]=i;
if(top<2)
return 0;
else
return 1;
}
int pop(int *i)
{
*i=stack[top--];
if(top>=0)
return 0;
else
return 1;
}

1、用指針的方法,將字符串“ABCD1234efgh”前后對調(diào)顯示
#include <stdio.h>
#include <string.h>
#include <dos.h>
int main()
{
char str[] = "ABCD1234efgh";
int length = strlen(str);
char * p1 = str;
char * p2 = str + length - 1;
while(p1 < p2)
{
char c = *p1;
*p1 = *p2;
*p2 = c;
++p1;
--p2;
}
printf("str now is %s\n",str);
system("pause");
return 0;
}
2、有一分?jǐn)?shù)序列:1/2,1/4,1/6,1/8……,用函數(shù)調(diào)用的方法,求此數(shù)列前20項的和
#include <stdio.h>
double getValue()
{
double result = 0;
int i = 2;
while(i < 42)
{
result += 1.0 / i;//一定要使用1.0做除數(shù),不能用1,否則結(jié)果將自動轉(zhuǎn)化成整數(shù),即0.000000
i += 2;
}
return result;
}
int main()
{
printf("result is %f\n", getValue());
system("pause");
return 0;
}

有一個數(shù)組a[1000]存放0--1000;要求每隔二個數(shù)刪掉一個數(shù),到末尾時循環(huán)至開頭繼續(xù)進行,求最后一個被刪掉的數(shù)的原始下標(biāo)位置。
以7個數(shù)為例:
{0,1,2,3,4,5,6,7} 0-->1-->2(刪除)-->3-->4-->5(刪除)-->6-->7-->0(刪除),如此循環(huán)直到最后一個數(shù)被刪除。
方法1:數(shù)組
#include <iostream>
using namespace std;
#define null 1000

int main()
{
int arr[1000];
for (int i=0;i<1000;++i)
arr[i]=i;
int j=0;
int count=0;
while(count<999)
{
while(arr[j%1000]==null)
j=(++j)%1000;
j=(++j)%1000;
while(arr[j%1000]==null)
j=(++j)%1000;
j=(++j)%1000;
while(arr[j%1000]==null)
j=(++j)%1000;
arr[j]=null;
++count;
}
while(arr[j]==null)
j=(++j)%1000;

cout<<j<<endl;
return 0;
}方法2:鏈表
#include<iostream>
using namespace std;
#define null 0
struct node
{
int data;
node* next;
};
int main()
{
node* head=new node;
head->data=0;
head->next=null;
node* p=head;
for(int i=1;i<1000;i++)
{
node* tmp=new node;
tmp->data=i;
tmp->next=null;
head->next=tmp;
head=head->next;
}
head->next=p;
while(p!=p->next)
{
p->next->next=p->next->next->next;
p=p->next->next;
}
cout<<p->data;
return 0;
}
方法3:通用算法
#include <stdio.h>
#define MAXLINE 1000 //元素個數(shù)
/*
MAXLINE 元素個數(shù)
a[] 元素數(shù)組
R[] 指針場
suffix 下標(biāo)
index 返回最后的下標(biāo)序號
values 返回最后的下標(biāo)對應(yīng)的值
start 從第幾個開始
K 間隔
*/
int find_n(int a[],int R[],int K,int& index,int& values,int s=0) {
int suffix;
int front_node,current_node;
suffix=0;
if(s==0) {
current_node=0;
front_node=MAXLINE-1;
}
else {
current_node=s;
front_node=s-1;
}
while(R[front_node]!=front_node) {
printf("%d\n",a[current_node]);
R[front_node]=R[current_node];
if(K==1) {
current_node=R[front_node];
continue;
}
for(int i=0;i<K;i++){
front_node=R[front_node];
}
current_node=R[front_node];
}
index=front_node;
values=a[front_node];

return 0;
}
int main(void) {
int a[MAXLINE],R[MAXLINE],suffix,index,values,start,i,K;
suffix=index=values=start=0;
K=2;

for(i=0;i<MAXLINE;i++) {
a[i]=i;
R[i]=i+1;
}
R[i-1]=0;
find_n(a,R,K,index,values,2);
printf("the value is %d,%d\n",index,values);
return 0;
}

試題:
void test2()
{
char string[10], str1[10];
int i;
for(i=0; i<10; i++)
{
str1[i] = 'a';
}
strcpy( string, str1 );
}
解 答:對試題2,如果面試者指出字符數(shù)組str1不能在數(shù)組內(nèi)結(jié)束可以給3分;如果面試者指出strcpy(string, str1)調(diào)用使得從str1內(nèi)存起復(fù)制到string內(nèi)存起所復(fù)制的字節(jié)數(shù)具有不確定性可以給7分,在此基礎(chǔ)上指出庫函數(shù)strcpy工作方式的給10 分;
str1不能在數(shù)組內(nèi)結(jié)束:因為str1的存儲為:{a,a,a,a,a,a,a,a,a,a},沒有'\0'(字符串結(jié)束符),所以不能結(jié)束
strcpy( char *s1,char *s2)他的工作原理是,掃描s2指向的內(nèi)存,逐個字符付到s1所指向的內(nèi)存,直到碰到'\0',因為str1結(jié)尾沒有'\0',所以具有不確定性,不知道他后面還會付什么東東。
正確應(yīng)如下
void test2()
{
char string[10], str1[10];
int i;
for(i=0; i<9; i++)
{
str1[i] = 'a'+i; //把abcdefghi賦值給字符數(shù)組
}
str[i]='\0';//加上結(jié)束符
strcpy( string, str1 );
}

第二個code題是實現(xiàn)strcmp
int StrCmp(const char *str1, const char *str2)
做是做對了,沒有抄搞,比較亂
int StrCmp(const char *str1, const char *str2)
{
assert(str1 && srt2);
while (*str1 && *str2 && *str1 == *str2) {
str1++, str2++;
}
if (*str1 && *str2)
return (*str1-*str2);
elseif (*str1 && *str2==0)
return 1;
elseif (*str1 = = 0 && *str2)
return -1;
else
return 0;
}

int StrCmp(const char *str1, const char *str2)
{
//省略判斷空指針(自己保證)
while(*str1 && *str1++ = = *str2++);
return *str1-*str2;
}
第三個code題是實現(xiàn)子串定位
int FindSubStr(const char *MainStr, const char *SubStr)
做是做對了,沒有抄搞,比較亂
int MyStrstr(const char* MainStr, const char* SubStr)
{
const char *p;
const char *q;
const char * u = MainStr;

//assert((MainStr!=NULL)&&( SubStr!=NULL));//用斷言對輸入進行判斷
while(*MainStr) //內(nèi)部進行遞增
{
p = MainStr;
q = SubStr;
while(*q && *p && *p++ == *q++);
if(!*q )
{
return MainStr - u +1 ;//MainStr指向當(dāng)前起始位,u指向
}
MainStr ++;
}
return -1;
}

分析:
int arr[] = {6,7,8,9,10};
int *ptr = arr;
*(ptr++)+=123;
printf(“ %d %d ”, *ptr, *(++ptr));
輸出:8 8
過程:對于*(ptr++)+=123;先做加法6+123,然后++,指針指向7;對于printf(“ %d %d ”, *ptr, *(++ptr));從后往前執(zhí)行,指針先++,指向8,然后輸出8,緊接著再輸出8

華為全套完整試題
高級題
6、已知一個單向鏈表的頭,請寫出刪除其某一個結(jié)點的算法,要求,先找到此結(jié)點,然后刪除。
slnodetype *Delete(slnodetype *Head,int key){}中if(Head->number==key)
{
Head=Pointer->next;
free(Pointer);
break;
}
Back = Pointer;
Pointer=Pointer->next;
if(Pointer->number==key)
{
Back->next=Pointer->next;
free(Pointer);
break;
}
void delete(Node* p)
{
if(Head = Node)

while(p)
}

有一個16位的整數(shù),每4位為一個數(shù),寫函數(shù)求他們的和。
解釋:
整數(shù)1101010110110111
和 1101+0101+1011+0111
感覺應(yīng)該不難,當(dāng)時對題理解的不是很清楚,所以寫了一個函數(shù),也不知道對不對。
疑問:
既然是16位的整數(shù),1101010110110111是2進制的,那么函數(shù)參數(shù)怎么定義呢,請大蝦指教。
答案:用十進制做參數(shù),計算時按二進制考慮。
/* n就是16位的數(shù),函數(shù)返回它的四個部分之和 */
char SumOfQuaters(unsigned short n)
{
char c = 0;
int i = 4;
do
{
c += n & 15;
n = n >> 4;
} while (--i);

return c;
}



有1,2,....一直到n的無序數(shù)組,求排序算法,并且要求時間復(fù)雜度為O(n),空間復(fù)雜度O(1),使用交換,而且一次只能交換兩個數(shù).(華為)
#include<iostream.h>

int main()
{
int a[] = {10,6,9,5,2,8,4,7,1,3};
int len = sizeof(a) / sizeof(int);
int temp;

for(int i = 0; i < len; )
{
temp = a[a[i] - 1];
a[a[i] - 1] = a[i];
a[i] = temp;

if ( a[i] == i + 1)
i++;
}
for (int j = 0; j < len; j++)
cout<<a[j]<<",";

return 0;
}

(慧通)
1 寫出程序把一個鏈表中的接點順序倒排
typedef struct linknode
{
int data;
struct linknode *next;
}node;
//將一個鏈表逆置
node *reverse(node *head)
{
node *p,*q,*r;
p=head;
q=p->next;
while(q!=NULL)
{
r=q->next;
q->next=p;
p=q;
q=r;
}

head->next=NULL;
head=p;
return head;
}
2 寫出程序刪除鏈表中的所有接點
void del_all(node *head)
{
node *p;
while(head!=NULL)
{
p=head->next;
free(head);
head=p;
}
cout<<"釋放空間成功!"<<endl;
}
3兩個字符串,s,t;把t字符串插入到s字符串中,s字符串有足夠的空間存放t字符串
void insert(char *s, char *t, int i)
{
char *q = t;
char *p =s;
if(q == NULL)return;
while(*p!='\0')
{
p++;
}
while(*q!=0)
{
*p=*q;
p++;
q++;
}
*p = '\0';
}


分析下面的代碼:
char *a = "hello";
char *b = "hello";
if(a= =b)
printf("YES");
else
printf("NO");
這個簡單的面試題目,我選輸出 no(對比的應(yīng)該是指針地址吧),可在VC是YES 在C是NO
lz的呢,是一個常量字符串。位于靜態(tài)存儲區(qū),它在程序生命期內(nèi)恒定不變。如果編譯器優(yōu)化的話,會有可能a和b同時指向同一個hello的。則地址相同。如果編譯器沒有優(yōu)化,那么就是兩個不同的地址,則不同

posted on 2008-06-17 17:11 martin0501 閱讀(370) 評論(0)  編輯 收藏 引用 所屬分類: 6. 面試題集錦
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美一区二区黄色| 国产美女一区二区| 久久精品午夜| 一区二区三区日韩在线观看| 久热综合在线亚洲精品| 亚洲一区亚洲二区| 欧美日韩精品高清| 日韩视频中文字幕| 亚洲国产成人av| 欧美伊人久久大香线蕉综合69| 欧美紧缚bdsm在线视频| 亚洲经典自拍| 91久久线看在观草草青青| 欧美超级免费视 在线| 亚洲国产日韩欧美在线图片| 国产精品久久久久一区二区三区共 | 欧美先锋影音| 一区二区三区产品免费精品久久75| 亚洲高清视频中文字幕| 欧美大片一区二区三区| 亚洲国产精品久久精品怡红院| 99国产精品视频免费观看| 亚洲日本在线观看| 欧美日韩国产美女| 性色av一区二区三区红粉影视| 亚洲欧美日韩一区二区三区在线| 国产欧美日韩精品丝袜高跟鞋| 久久精品欧美日韩精品| 久久尤物视频| 亚洲国产成人久久综合一区| 欧美激情亚洲国产| 欧美日本中文字幕| 性欧美长视频| 免费观看日韩| 亚洲免费视频中文字幕| 欧美一区二区三区视频免费播放 | 国产日产高清欧美一区二区三区| 久久精品2019中文字幕| 麻豆成人小视频| 999亚洲国产精| 亚洲欧美日韩在线一区| 亚洲电影在线播放| 亚洲精品欧美日韩| 一区电影在线观看| 激情久久综合| 日韩视频免费大全中文字幕| 国产日韩精品电影| 91久久国产综合久久91精品网站| 欧美日韩亚洲免费| 快播亚洲色图| 国产精品久久久久一区二区三区| 免费观看在线综合| 国产精品三级视频| 亚洲国产精彩中文乱码av在线播放| 欧美日本一区二区高清播放视频| 亚洲精品免费网站| 欧美精品国产一区| 午夜精品久久久久久久白皮肤| 久久99在线观看| 亚洲午夜一二三区视频| 久久五月天婷婷| 欧美一区二区免费| 欧美成人免费全部| 久久久久久黄| 国产精品免费区二区三区观看| 欧美成年人网站| 国产视频亚洲精品| 一个人看的www久久| 亚洲国产高潮在线观看| 亚洲一区欧美激情| 亚洲精品黄网在线观看| 亚洲欧美激情四射在线日| 国产日韩一区二区| 国产精品丝袜白浆摸在线| 欧美激情无毛| 国产欧美日韩伦理| 亚洲精选中文字幕| 亚洲丁香婷深爱综合| 亚洲欧美偷拍卡通变态| 欧美一区二区精品| 亚洲伊人观看| 欧美日韩午夜激情| 亚洲另类一区二区| 日韩午夜一区| 免费久久99精品国产| 久久午夜视频| 国内精品久久久| 亚洲欧美一级二级三级| 亚洲欧美中文日韩在线| 欧美新色视频| 在线视频欧美一区| 午夜精品视频在线| 国产精品日日摸夜夜添夜夜av| 亚洲视频免费| 亚洲日本中文字幕| 久久精品国产免费看久久精品| 午夜精品在线视频| 国产精品一区免费视频| 亚洲伊人第一页| 香蕉久久夜色精品国产使用方法| 国产精品久久久久秋霞鲁丝| 亚洲一区自拍| 久久婷婷国产综合尤物精品 | …久久精品99久久香蕉国产| 久久久噜噜噜久久中文字幕色伊伊| 久久亚洲精品一区二区| 亚洲电影欧美电影有声小说| 欧美二区不卡| 亚洲午夜一级| 久久米奇亚洲| 亚洲精品乱码久久久久久日本蜜臀 | 欧美国产日本在线| 夜夜嗨av色一区二区不卡| 欧美人与禽猛交乱配| 亚洲色图自拍| 久久香蕉国产线看观看av| 国产一区二区三区四区hd| 亚洲精品国产精品久久清纯直播| 免播放器亚洲一区| 国产三级精品三级| 久久久久久穴| 亚洲人成网站在线播| 亚洲视频一区| 国产综合色精品一区二区三区| 久久久精彩视频| 久久亚洲欧美| 久久综合成人精品亚洲另类欧美| 国产精品国产馆在线真实露脸| 亚洲国产第一页| 亚洲国产一区在线| 久久免费精品视频| 麻豆精品一区二区综合av| 国产日韩在线视频| 欧美影院精品一区| 国产日韩亚洲欧美综合| 亚洲婷婷综合久久一本伊一区| 亚洲国产一成人久久精品| 久久精品免视看| 另类国产ts人妖高潮视频| 国产一区二区三区丝袜| 午夜久久久久久| 久久亚洲私人国产精品va| 韩日欧美一区二区| 久久久综合视频| 欧美韩日高清| 在线亚洲观看| 国产精品一区久久久久| 欧美与欧洲交xxxx免费观看| 久久一区二区三区超碰国产精品| 激情懂色av一区av二区av| 理论片一区二区在线| 最新中文字幕一区二区三区| 一区二区精品国产| 国产伦精品一区二区三区在线观看| 香蕉久久夜色| 亚洲电影观看| 午夜精品免费在线| 1000部精品久久久久久久久| 欧美黄色一区| 亚洲免费在线看| 欧美高清视频免费观看| 亚洲精品影院在线观看| 欧美性大战xxxxx久久久| 欧美一区国产二区| 亚洲风情在线资源站| 亚洲永久免费视频| 国内久久视频| 欧美日韩天天操| 久久精品国产在热久久 | 欧美成人精品在线观看| 一本久久精品一区二区| 国产日韩亚洲欧美精品| 欧美美女bbbb| 久久久久久夜| 亚洲一区二区黄| 久久久精品网| 日韩一区二区久久| 狠狠色香婷婷久久亚洲精品| 欧美激情无毛| 新67194成人永久网站| 亚洲人成免费| 美女脱光内衣内裤视频久久影院| 在线视频欧美日韩| 男男成人高潮片免费网站| 99re视频这里只有精品| 老司机久久99久久精品播放免费| 亚洲裸体在线观看| 国产一区二区高清视频| 欧美日产在线观看| 久久久午夜电影| 在线视频日韩| 亚洲美女尤物影院| 欧美激情2020午夜免费观看| 亚洲欧美日韩综合aⅴ视频| 亚洲人成网站精品片在线观看| 国产精品扒开腿做爽爽爽软件| 欧美国产三区| 国产日韩精品一区二区三区在线| 欧美激情第二页| 裸体女人亚洲精品一区|