Linux下C语言 编程题目.docx
- 文档编号:24071975
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:16
- 大小:18.26KB
Linux下C语言 编程题目.docx
《Linux下C语言 编程题目.docx》由会员分享,可在线阅读,更多相关《Linux下C语言 编程题目.docx(16页珍藏版)》请在冰豆网上搜索。
Linux下C语言编程题目
Linux下C语言编程测试题目
说明:
1.试卷总分100分。
2.试卷中代码的运行环境为:
Linux2.6.23环境,平台为32为处理器系统,编译器为GCC4.4.3。
一.选择题:
1.下面哪项不是链表优于数组的特点?
()
A.方便删除B.方便插入C.长度可变D.存储空间小
2.以下程序的输出结果是()。
intfunc(intn)
{staticintm=0;
m=m+n;
return(m);}
main()
{inti,a=0;
for(i=1;i<=4;i++)
a+=func(i);
printf("%d\n",a);}
A.10B.15C.20D.22
3.以下程序执行后,a的值是()
voidmain()
{
inta,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
printf(“%d\n”,a);
}
A)4B)1C)0D)运行时出错,a无定值
4.编译以下程序时,结果是()。
#include
#defineaa123;//第2行
voidmain(void)//第3行
{cout< A.编译时第2行出错B.编译时第4行出错 C.编译时第2行和第4行出错D.编译时无错误 5.main() { structnode { inta; intb; intc; }; structnodes={3,5,6}; structnode*pt=&s; printf("%d",*(int*)pt); } 这段程序的输出是: (a)3 (b)5 (c)6 (d)7 6.intfoo(intx,intn) { intval; val=1; if(n>0) { if(n%2==1)val=val*x; val=val*foo(x*x,n/2); } returnval; } 这段代码对x和n完成什么样的功能(操作) (a)x^n(x的n次幂) (b)x*n(x与n的乘积) (c)n^x(n的x次幂) (d)以上均不是 7.main() { inta[5]={1,2,3,4,5}; int*ptr=(int*)(&a+1); printf("%d%d",*(a+1),*(ptr-1)); } 这段程序的输出是: (a)22 (b)21 (c)25 (d)以上均不是 8.voidfoo(int[][3]); main() { inta[3][3]={{1,2,3},{4,5,6},{7,8,9}}; foo(a); printf("%d",a[2][1]); } voidfoo(intb[][3]) { ++b; b[1][1]=9; } 这段程序的输出是: (a)8 (b)9 (c)7 (d)以上均不对 9.main() { inta,b,c,d; a=3; b=5; c=a,b; d=(a,b); printf("c=%d",c); printf("d=%d",d); } 这段程序的输出是: (a)c=3d=3 (b)c=5d=3 (c)c=3d=5 (d)c=5d=5 10.main() { inta[][3]={1,2,3,4,5,6}; int(*ptr)[3]=a; printf("%d%d",(*ptr)[1],(*ptr)[2]); ++ptr; printf("%d%d",(*ptr)[1],(*ptr)[2]); } 这段程序的输出是: (a)2356 (b)2345 (c)4500 (d)以上均不对 11.int*f1(void) { intx=10; return(&x); } int*f2(void) { int*ptr; *ptr=10; returnptr; } int*f3(void) { int*ptr; ptr=(int*)malloc(sizeof(int)); returnptr; } 上面这3个函数哪一个最可能引起指针方面的问题 (a)只有f3 (b)只有f1andf3 (c)只有f1andf2 (d)f1,f2,f3 12.voidf1(int*,int); voidf2(int*,int); void(*p[2])(int*,int); main() { inta; intb; p[0]=f1; p[1]=f2; a=3; b=5; p[0](&a,b); printf("%d\t%d\t",a,b); p[1](&a,b); printf("%d\t%d\t",a,b); } voidf1(int*p,intq) { inttmp; tmp=*p; *p=q; q=tmp; } voidf2(int*p,intq) { inttmp; tmp=*p; *p=q; q=tmp; } 这段程序的输出是: (a)5555 (b)3535 (c)5353 (d)3333 13.voide(int); main() { inta; a=3; e(a); } voide(intn) { if(n>0) { e(--n); printf("%d",n); e(--n); } } 这段程序的输出是: (a)0120 (b)0121 (c)1201 (d)0211 14.typedefint(*test)(float*,float*) testtmp; tmp的类型是 (a)函数的指针,该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments) Pointertofunctionofhavingtwoargumentsthatispointertofloat (b)整型 (c)函数的指针,该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments),并且函数的返回值类型是整型 Pointertofunctionhavingtwoargumentthatispointertofloatandreturnint (d)以上都不是 15.main() { charp; charbuf[10]={1,2,3,4,5,6,9,8}; p=(buf+1)[5]; printf("%d",p); } 这段程序的输出是: (a)5 (b)6 (c)9 (d)以上都不对 16.Voidf(char**); main() { char*argv[]={"ab","cd","ef","gh","ij","kl"}; f(argv); } voidf(char**p) { char*t; t=(p+=sizeof(int))[-1]; printf("%s",t); } 这段程序的输出是: (a)ab (b)cd (c)ef (d)gh 17.intcounter(inti) { staticintcount=0; count=count+i; return(count); } main() { inti,j; for(i=0;i<=5;i++) j=counter(i); } 本程序执行到最后,j的值是: (a)10 (b)15 (c)6 (d)7 18.下列程序的输出是什么? () #include #include usingnamespacestd; intmain() { intx=10,y=10,i; for(i=0;x>8;y=i++) { printf(“%d,%d,”,x--,y); } return0; } A10,0,9,1B10,10,9,0C10,1,9,2D9,10,8,0 19whichdefinitioniscorrect? () Ainta[];Bintn=10,a[n];Cinta[10+1]={0};Dinta[3]={1,2,3,4}; 20Howmanybyteswillbeoccupiedforthevariable(definition: char**a[3][4])? () A64B96C48D128 二.简答题: 1.在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。 编译器是一个纯粹的ANSI编译器。 写代码去完成这一任务。 2.写出判断ABCD四个表达式的是否正确,若正确,写出经过表达式中a的值inta=4; (A)a+=(a++);(B)a+=(++a);(C)(a++)+=a;(D)(++a)+=(a++); a=? 3.用变量a给出下面的定义 a)一个整型数 b)一个指向整型数的指针 c)一个指向指针的的指针,它指向的指针是指向一个整型数 d)一个有10个整型数的数组 e)一个有10个指针的数组,该指针是指向一个整型数的。 f)一个指向有10个整型数数组的指针 g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数 h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数 4.下面程序运行后的输出是什么? typedefstruct { inta: 2; intb: 2; intc: 1; }test; intmain() { testt; t.a=1; t.b=3; t.c=1; printf("%d",t.a); printf("%d",t.b); printf("%d",t.c); } 5.某32位系统下,C程序,请计算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) 6. (1)VoidGetMemory(char**p,intnum){ *p=(char*)malloc(num); } voidTest(void){ char*str=NULL; GetMemory(&str,100); strcpy(str,"hello"); printf(str); } 请问运行Test函数会有什么样的结果? (2).voidTest(void){ char*str=(char*)malloc(100); strcpy(str,“hello”); free(str); if(str! =NULL){ strcpy(str,“world”); printf(str); } } 请问运行Test函数会有什么样的结果? (3).char*GetMemory(void){ charp[]="helloworld"; returnp; } voidTest(void){ char*str=NULL; str=GetMemory(); printf(str); } 请问运行Test函数会有什么样的结果? 7.写出下列代码的输出内容 #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) { FUNC1p=&inc; inttemp=p(arg1); fun(&temp,&arg1,arg2); printf("%d\n",*arg2); } main() { inta; show(multi,10,&a); return0; } 8.以下代码中的两个sizeof用法有问题吗? voidUpperCase(charstr[])//将str中的小写字母转换成大写字母 { for(size_ti=0;i if('a'<=str[i]&&str[i]<='z') str[i]-=('a'-'A'); } charstr[]="aBcDe"; cout<<"str字符长度为: "<<(sizeof(str)-1)/sizeof(str[0])< UpperCase(str); cout< 三.编程题目 1.编写strcat函数(已知strcat函数的原型是char*strcat(char*strDest,constchar*strSrc); 其中strDest是目的字符串,strSrc是源字符串。 不调用C的字符串库函数,请编写函数strcat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux下C语言 编程题目 Linux 语言 编程 题目
