C语言笔试题题目.docx

上传人:b****4 文档编号:24630314 上传时间:2023-05-29 格式:DOCX 页数:17 大小:21.21KB
下载 相关 举报
C语言笔试题题目.docx_第1页
第1页 / 共17页
C语言笔试题题目.docx_第2页
第2页 / 共17页
C语言笔试题题目.docx_第3页
第3页 / 共17页
C语言笔试题题目.docx_第4页
第4页 / 共17页
C语言笔试题题目.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C语言笔试题题目.docx

《C语言笔试题题目.docx》由会员分享,可在线阅读,更多相关《C语言笔试题题目.docx(17页珍藏版)》请在冰豆网上搜索。

C语言笔试题题目.docx

C语言笔试题题目

C语言笔试题题目

一、简答题

1.程序的局部变量存在于()中,全局变量存在于()中,动态申请数据存在于()中。

2.设有以下说明和定义:

typedefunion{longi;intk[5];charc;}DATE;

structdata{intcat;DATEcow;doubledog;}too;

DATEmax;

则语句printf("%d",sizeof(structdate)+sizeof(max));的执行结果是:

_______

3.32位系统下,请问如下语句的值

unsignedchar*p1;

unsignedlong*p2;

p1=(unsignedchar*)0x801000;

p2=(unsignedlong*)0x810000;

请问p1+5=

p2+5=

4.inti=10,j=10,k=3;k*=i+j;k最后的值是?

5.#defineDOUBLE(x)x+x,i=5*DOUBLE(5);i是多少?

6.下面程序的输出是_____,为什么?

char*ptr;

if((ptr=(char*)malloc(0))==NULL)

{

puts("Gotanullpointer");

}

else

{

puts("Gotavalidpointer");

}

7.以下程序运行后的输出结果是______。

main()

{

charm;

m='B'+32;printf("%c\n",m);

}

8.已有定义如下:

structnode

{

intdata;

structnode*next;

}*p;

以下语句调用malloc函数,使指针p指向一个具有structnode类型的动态存储空间。

请填空p=(structnode*)malloc(________);

9.在绝对地址0xXXXXXXXX上写入字符’a’的语句是___________。

10.用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)

11.写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个。

12.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?

13.用变量a给出下面的定义

a)一个整型数(Aninteger)

b)一个指向整型数的指针(Apointertoaninteger)

c)一个指向指针的的指针,它指向的指针是指向一个整型数(Apointertoapointertoanintege)

d)一个有10个整型数的数组(Anarrayof10integers)

e)一个有10个指针的数组,该指针是指向一个整型数的。

(Anarrayof10pointerstointegers)

f)一个指向有10个整型数数组的指针(Apointertoanarrayof10integers)

g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数(Apointertoafunctionthattakesanintegerasanargumentandreturnsaninteger)

h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(Anarrayoftenpointerstofunctionsthattakeanintegerargumentandreturnaninteger)

14.关键字static的作用是什么?

15.关键字const的含义。

16.关键字volatile有什么含意?

并给出三个不同的例子。

17.一个参数既可以是const还可以是volatile吗?

解释为什么。

18.一个指针可以是volatile吗?

解释为什么。

19.下面的函数有什么错误:

intsquare(volatileint*ptr)

{

      return*ptr**ptr;

}

20.在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。

编译器是一个纯粹的ANSI编译器。

写代码去完成这一任务。

21.局部变量能否和全局变量重名?

22.如何引用一个已经定义过的全局变量?

23.全局变量可不可以定义在可被多个.C文件包含的头文件中?

为什么?

24.语句for(;1;)有什么问题?

它是什么意思?

25.do……while和while……do有什么区别?

26.下列哪种方法更好,为什么?

definedPSstructs*

typedefstructs*tPS;

27.下面的结构是合法的吗,如果是它做些什么?

inta=5,b=7,c;

c=a+++b;

28.队列和栈有什么区别?

29.全局变量和局部变量是否有区别?

如果有,是什么区别?

30.堆栈溢出一般是由什么原因导致的?

31.冒泡排序算法的时间复杂度是什么?

32.分别写出BOOL,int,float,指针类型的变量a与“零”的比较语句。

33.不能做switch()的参数类型是:

34.某32位系统下,请计算sizeof的值.

charstr[]=“

char*p=str;

intn=10;

请计算

sizeof(str)=?

(1)

sizeof(p)=?

(2)

sizeof(n)=?

(3)

voidFoo(charstr[100]){

sizeof(str)=?

(4)

}

void*p=malloc(100);

sizeof(p)=?

(5)

35.请说出const与#define相比,有何优点?

36.回答下面的问题.

a)头文件中的ifndef/define/endif干什么用?

预处理

b)#include和#include“filename.h”有什么区别?

37.使用malloc()函数时,为什么要将其返回值强制转换成被赋值指针变量的数据类型?

38.列举一个软件中时间换空间或者空间换时间的例子。

39.以下C语言语句有什么区别

char*constp;

charconst*p;

constchar*p;

40.下面x,y,*p的值是多少,有什么问题?

intx,y,z=2;

int*p=&z;

x=sizeof*p;

y=x/*p;

41.下面的语句是什么意思?

如何声明或定义才使它们更易懂?

(10分)

int(*foo())();

int(*foo())[];

int(*foo[])();

(*(void(*)())0)();

void(*signal(int,void(*)(int)))(int);

42.如何定义Bool变量的TRUE和FALSE的值。

43.运行chara[]=”abc”后,内存会开辟几块内存,这此内存共占多少个字节?

44.运行char*p=”abc”后,内存会开辟几块内存,这此内存共占多少个字节?

45.说出int*(*p)[3]; p是什么变量?

如果p是指针变量,那么p+1的偏移量是多少?

46.一个32位的机器,该机器的指针是多少位?

47.已知一个数组table,用一个宏定义,求出数据的元素个数

二、程序分析题

1.下面的代码有什么问题?

 char*_strdup(constchar*strSource) 

 { 

staticcharstr[MAX_STR_LEN]; 

strcpy(str,strSource);

returnstr;

}

2.下面的代码输出是什么,为什么?

voidfoo(void)

{

unsignedinta=6;

intb=-20;

(a+b>6)?

puts(">6"):

puts("<=6");

}

3.请写出下列代码的输出内容

#include

main()

{

inta,b,c,d;

a=10;

b=a++;

c=++a;

d=10*a++;

printf("b,c,d:

%d,%d,%d",b,c,d);

return0;

}

4.Test函数的运行结果如何?

voidGetMemory(char*p)

{

p=(char*)malloc(100);

}

voidTest(void)

{

char*str=NULL;

GetMemory(str);

strcpy(str,"helloworld");

printf(str);

}

5.Test函数的运行结果如何?

char*GetMemory(void)

{

charp[]="helloworld";

returnp;

}

voidTest(void)

{

char*str=NULL;

str=GetMemory();

printf(str);

}

6.Test函数的运行结果如何?

VoidGetMemory2(char**p,intnum)

{

*p=(char*)malloc(num);

}

voidTest(void)

{

char*str=NULL;

GetMemory(&str,100);

strcpy(str,"hello");

printf(str);

}

7.Test函数的运行结果如何?

voidTest(void)

{

char*str=(char*)malloc(100);

strcpy(str,“hello”);

free(str);

if(str!

=NULL)

{

strcpy(str,“world”);

printf(str);

}

}

8.写出下列代码的输出内容

#include

intinc(inta)

{

return(++a);

}

intmulti(int*a,int*b,int*c)

{

return(*c=*a**b);

}

typedefint(FUNC1)(intin);

typedefint(FUNC2)(int*,int*,int*);

voidshow(FUNC2fun,intarg1,int*arg2)

{

INCp=&inc;

inttemp=p(arg1);

fun(&temp,&arg1,arg2);

printf("%dn",*arg2);

}

main()

{

inta;

show(multi,10,&a);

return0;

}

9.请找出下面代码中的所以错误

说明:

以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”

#include"string.h"

main()

{

char*src="hello,world";

char*dest=NULL;

intlen=strlen(src);

dest=(char*)malloc(len);

char*d=dest;

char*s=src[len];

while(len--!

=0)

d++=s--;

printf("%s",dest);

return0;

}

10.以下程序有什么错误

试题1:

voidtest1()

{

charstring[10];

char*str1="0123456789";

strcpy(string,str1);

}

试题2:

voidtest2()

{

charstring[10],str1[10];

inti;

for(i=0;i<10;i++)

{

str1='a';

}

strcpy(string,str1);

}

试题3:

voidtest3(char*str1)

{

charstring[10];

if(strlen(str1)<=10)

{

strcpy(string,str1);

}

}

11.下面程序的运行结果:

main()

{

inta[5]={1,2,3,4,5};

int*ptr=(int*)(&a+1);

printf("%d,%d",*(a+1),*(ptr-1));

}

12.

请问以下代码有什么问题:

intmain()

{

chara;char*str=&a;

strcpy(str,"hello");

printf(str);

return0;

}

13.交换两个变量的值,不使用第三个变量。

即a=3,b=5,交换之后a=5,b=3;

14.以下是求一个数的平方的程序,请找出错误:

#defineSQUARE(a)((a)*(a))

inta=5;

intb;

b=SQUARE(a++);

15.下面的程序运行结果是()

设intarr[]={6,7,8,9,10};

int*ptr=arr;

(ptr++)+=123;

printf("%d,%d",*ptr,*(++ptr));

16.下面的两段代吗?

有什么区别?

什么时候需要使用代码2?

1、

inti=10;

intj=i;

intk=i;

2、

volatileinti=10;

intj=i;

intk=i;

17.printf("%d",0x01<<2+3);输出?

18.在32位的X86系统下,输出的值为多少?

#include

intmain()

{

inta[5]={1,2,3,4,5};

int*ptr1=(int*)(&a+1);

int*ptr2=(int*)((int)a+1);

printf("%d,%x",ptr1[-1],*ptr2);

//注意从高字节开始打印

return0;

}

19.下面代码的有问题吗?

为什么?

#include

voidfunc(chara[10])

{

charc=a[3];

}

intmain()

{

charb[10]="abcdefg";

func(b[10]);

return0;

}

20.下面代码输出的结果是多少?

#include

voidfun(inti)

{

if(i>0)

{

fun(i/2);

}

printf("%d\n",i);

}

intmain()

{

fun(10);

return0;

}

三、编程题

1.不调用库函数,自己实现memcpy函数。

void*memcpy(void*dest,constvoid*src,size_tn);

2.不调用库函数,自己实现strcpy函数。

3.

a)编写strcat函数,已知strcat函数的原型是char*strcat(char*strDest,constchar*strSrc);其中strDest是目的字符串,strSrc是源字符串(不能调用库函数)。

b)strcat能把strSrc的内容连接到strDest,为什么还要char*类型的返回值?

4.两个字符串,s,t;把t字符串插入到s字符串中,s字符串有足够的空间存放t字符串。

5.写一函数,实现删除字符串str1中含有的字符串str2。

6.编程,判断存储方式是大端存储,还是小端存储,并说出为什么要进行大小端的判定?

7.不调用库函数,自己实现longatol(constchar*nptr)函数。

8.编写strcat函数()。

已知strcat函数的原型是char*strcat(char*strDest,constchar*strSrc);其中strDest是目的字符串,strSrc是源字符串。

a)不调用C++/C的字符串库函数,请编写函数strcat。

b)strcat能把strSrc的内容连接到strDest,为什么还要char*类型的返回值?

9.写一个函数,它的原形是intcontinumax(char*outputstr,char*intputstr)。

功能:

在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。

例如:

"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789

10.不用库函数,用C语言实现将一整型数字转化为字符串。

11.用指针的方法,将字符串“ABCD1234efgh”前后对调显示。

12.有一分数序列:

1/2,1/4,1/6,1/8……,用函数调用的方法,求此数列前20项的和。

13.实现子串定位。

14.有1,2,....一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度O。

15.编写一个C函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的。

16.给定字符串A和B,输出A和B中的最大公共子串。

17.编程实现:

把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列库函数。

18.在不用第三方参数的情况下,交换两个参数的值。

19.写一个程序,把一个100以内的自然数分解因数。

(自然数分解因数就是将一个自然数分解为几个素数的乘积,提示,由于该数不是很大,所以可以将质数保存在数组中,以加快计算速度)。

20.完成字符串拷贝可以使用sprintf、strcpy及memcpy函数,请问这些函数有什么区别,你喜欢使用哪个,为什么?

21.输出和为一个给定整数的所有组合。

例如n=5,5=1+4;5=2+3(相加的数不能重复)则输出1,4;2,3。

22.读文件file1.txt的内容(例如):

12

34

56

输出到file2.txt:

56

34

12

(逆序)

23.有一个数组a[1000]存放0--1000;要求每隔二个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。

以7个数为例:

{0,1,2,3,4,5,6,7}0-->1-->2(删除)-->3-->4-->5(删除)-->6-->7-->0(删除),如此循环直到最后一个数被删除。

24.写一个函数,将其中的'\t'都转换成4个空格。

25.编写一个函数,作用是把一个char组成的字符串循环右移n个。

比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh”。

函数头是这样的:

//pStr是指向以'\0'结尾的字符串的指针

//steps是要求移动的n

voidLoopMove(char*pStr,intsteps)

{

 //请填充...

}

26.判断两个数组中是否存在相同的数字,给定两个排好序的数组,怎样高效得判断这两个数组中存在相同的数字?

27.按单词反转字符串并不是简单的字符串反转,而是按给定字符串里的单词将字符串倒转过来,就是说字符串里面的单词还是保持原来的顺序,这里的每个单词用空格分开。

例如:

Hereis经过反转后变为:

isHere

28.求一个整形中1的位数。

29.费波那其数列,1,1,2,3,5……编写程序求第十项。

可以用递归,也可以用其他方法,但要说明你选择的理由。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1