编辑: 笨蛋爱傻瓜悦 2013-10-18

if(count >

maxlen) { maxlen = count;

*r1 = s1 + i;

*r2 = s2 + j;

} } } } 3. 编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列库函数 char* test3(long num) { char* buffer = (char*)malloc(11);

buffer[0] = '

0'

;

buffer[1] = '

x'

;

buffer[10] = '

\0'

;

char* temp = buffer + 2;

for (int i=0;

i <

8;

i++) { temp[i] = (char)(num28);

temp[i] = temp[i] >

=

0 ? temp[i] : temp[i] + 16;

temp[i] = temp[i] <

10 ? temp[i] +

48 : temp[i] + 55;

} return buffer;

} 输入N, 打印 N*N 矩阵 比如 N = 3,打印:

1 2

3 8

9 4

7 6

5 N = 4,打印:

1 2

3 4

12 13

14 5

11 16

15 6

10 9

8 7 解答:

1 #define N

15 int s[N][N];

void main() { int k = 0, i = 0, j = 0;

int a = 1;

for( ;

k <

(N+1)/2;

k++ ) { while( j <

N-k ) s[i][j++] = a++;

i++;

j--;

while( i <

N-k ) s[i++][j] = a++;

i--;

j--;

file:///C|/Documents and Settings/Administrator/桌面/C语言面试题大汇总,个人觉得还是比较全地!!!.htm(第48/133 页)2006-9-25 11:00:01 C语言面试题大汇总,个人觉得还是比较全地!!! while( j >

k-1 ) s[i][j--] = a++;

i--;

j++;

while( i >

k ) s[i--][j] = a++;

i++;

j++;

} for( i = 0;

i <

N;

i++ ) { for( j = 0;

j <

N;

j++ ) cout next;

} tail->

next = head->

next;

printf( 第%4d个出局的人是:%4d号\n , i, head->

index);

free(head);

head = tail->

next;

} i = head->

index;

free(head);

return i;

} int main() { int n, m;

scanf( %d%d , &

n, &

m);

printf( 最后胜利的是%d号!\n , Josephu(n, m));

system( pause );

return 0;

} 已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSrc);

file:///C|/Documents and Settings/Administrator/桌面/C语言面试题大汇总,个人觉得还是比较全地!!!.htm(第52/133 页)2006-9-25 11:00:01 C语言面试题大汇总,个人觉得还是比较全地!!! 1.不调用库函数,实现strcpy函数. 2.解释为什么要返回char *. 解说: 1.strcpy的实现代码 char * strcpy(char * strDest,const char * strSrc) { if ((strDest==NULL)||(strSrc==NULL)) file://[/1] throw Invalid argument(s) ;

//[2] char * strDestCopy=strDest;

file://[/3] while ((*strDest++=*strSrc++)!='

\0'

);

file://[/4] return strDestCopy;

} 错误的做法: [1] (A)不检查指针的有效性,说明答题者不注重代码的健壮性. (B)检查指针的有效性时使用((!strDest)||(!strSrc))或(!(strDest&

&

strSrc)),说明答题者对C语言中类型的隐式转换没有深 刻认识.在本例中char *转换为bool即是类型隐式转换,这种功能虽然灵活,但更多的是导致出错概率增大和维护成本 升高.所以C++专门增加了bool、true、false三个关键字以提供更安全的条件表达式. (C)检查指针的有效性时使用((strDest==0)||(strSrc==0)),说明答题者不知道使用常量的好处.直接使用字面常量(如 本例中的0)会减少程序的可维护性.0虽然简单,但程序中可能出现很多处对指针的检查,万一出现笔误,编译器不 能发现,生成的程序内含逻辑错误,很难排除.而使用NULL代替0,如果出现拼写错误,编译器就会检查出来. [2] (A)return new string( Invalid argument(s) );

,说明答题者根本不知道返回值的用途,并且他对内存泄漏也没有警惕心. 从函数中返回函数体内分配的内存是十分危险的做法,他把释放内存的义务抛给不知情的调用者,绝大多数情况下, 调用者不会释放内存,这导致内存泄漏. (B)return 0;

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题