云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > C语言面试题

C语言面试题

  • 62 次阅读
  • 3 次下载
  • 2025/6/13 22:12:08

sizeof(struct BBB) = sizeof(*p)

= 4 + 4 + 2 + 1 + 1/*补齐*/ + 2*5 + 2/*补齐*/ = 24 bytes (经Dev-C++验证) p=0x1000000; p+0x200=____;

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

= 0x1000000 + 0x200*4 你可以参考一下指针运算的细节

写一段程序,找出数组中第k大小的数,输出数所在的位置。例如{2,4,3,4,7}中,第一大的数是7,位置在4。第二大、第三大的数都是4,位置在1、3随便输出哪一个均可。函数接口为:int find_orderk(const int* narry,const int n,const int k) 要求算法复杂度不能是O(n^2) 谢谢!

可以先用快速排序进行排序,其中用另外一个进行地址查找 代码如下,在VC++6.0运行通过。给分吧^-^ //快速排序

#include 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 << \ 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 << \ cin >> k; intaa = 1; intkk = 0; for (;;) {

if (aa == k) break;

if (narry[kk] != narry[kk + 1]) {

aa += 1; kk++; } }

cout << \ cout << \ for (i = 0;i < sum;i++) {

if (addr[i] == narry[sum - kk]) cout << i << '\\t'; }

return0; }

1、找错 Void test1() {

char string[10];

char* str1=\

strcpy(string, str1);// 溢出,应该包括一个存放'\\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);//数组对应的值加1 }

for(i=0;i<10;i++) printf(\ return 0; }

void g(int**p) {

(**p)++;

(*p)++;// 无效 }

输出: 1 2 3 4 5 6 7 8 9 10

3. 写出程序运行结果 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(\ } }

// static会保存上次结果,记住这一点,剩下的自己写 输出: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但计数为1 今天早上的面试题9道,比较难,向牛人请教,国内的一牛公司,坐落在北京北四环某大厦: 1、线形表a、b为两个有序升序的线形表,编写一程序,使两个有序线形表合并成一个有序升序线形表h;

答案在 请化大学 严锐敏《数据结构第二版》第二章例题,数据结构当中,这个叫做:两路归并排序

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四种,另有数组adj[][N],如adj[i][j]=1则表示i区域与j区域相邻,数组color[N],如color[i]=1,表示i区域的颜色为1号颜色。 四色填充

3、用递归算法判断数组a[N]是否为一个递增数组。 递归的方法,记录当前最大的,并且判断当前的是否比这个还大,大则继续,否则返回false结束:

bool fun( int a[], int n ) {

搜索更多关于: C语言面试题 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

sizeof(struct BBB) = sizeof(*p) = 4 + 4 + 2 + 1 + 1/*补齐*/ + 2*5 + 2/*补齐*/ = 24 bytes (经Dev-C++验证) p=0x1000000; p+0x200=____; = 0x1000000 + 0x200*24 (Ulong)p+0x200=____; = 0x1000000 + 0x200 (char*)p+0x200=____; = 0x1000000 + 0x200*4 你可以参考一下指针运算的细节 写一段程序,找出数组中第k大小的数,输出数所在的位置。例如{2,4,3,4,7}中,第一大的数是7,位置在4。第二大、第三大的数都是4,位置在1、3随便输出哪一个均可。函数接口为:int find

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com