C试题.docx

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

C试题.docx

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

C试题.docx

C试题

C语言测试题,时间90分钟  

PostBy:

2009-12-310:

22:

56

一、选择题(1.5*20)

(1)下列数据结构中,按先进后出原则组织数据的是

A)线性链表     B)栈

C)循环链表     D)顺序表 

(2)下列表达式中,结果为5的是

A)6*5%6

B)5*-2+15

C)5+75%10

D)6+-2/3

(3)关于C语言的主函数描述正确的是

A)C程序可以有多个main函数

B)C程序必有一个而且只能有一个main函数

C)C程序可以没有main函数

D)C程序的执行不一定在main函数开始执行

(4)已知x,y,z均为整型变量,且值均为1,则执行语句++x||++y&&++z;后,表达式x+y的值为

A)1

B)2

C)3

D)4

(5)若inti,j;,则for(i=j=0;i<10&&j<8;i++,j+=3)控制的循环体执行的次数是

A)9

B)8

C)3

D)2

(6)下列关于栈的描述正确的是

A)在栈中只能插入元素而不能删除元素

B)在栈中只能删除元素而不能插入元素

C)栈是特殊的线性表,只能在一端插入或删除元素

D)栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素

(7)阅读下列程序,则执行结果是

#include"stdio.h"

main()

{

inta=0,b=0,c=0,i;

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

switch(i)

{

case0:

a=i++;

case1:

b=i++;

case2:

c=i++;

case3:

i++;

}

printf("%d,%d,%d,%d\n",a,b,c,i);

}

A)0,1,3,4

B)1,2,3,4

C)0,1,2,5

D)0,2,3,4

(8)以下描述错误的是

A)C程序中,函数可以直接或间接的调用自己

B)函数调用时,函数名必须与所调用的函数名字完全一致

C)函数说明语句中的类型必须与函数返回值的类型一致

D)实参数可以与形参个数不一致

(9)阅读下面程序,则执行后的结果为

#include"stdio.h"

 

intfun1()

{

intk=20;

returnk;

}

intfun2()

{

inta=15;

returna;

}

fun3(inta,intb)

{

intk;

k=(a-b)*(a+b);

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

}

main()

{

fun3(fun1(),fun2());

}

A)0

B)184

C)175

D)编译不通过

 

(10)以下对一维数组c进行正确的定义初始化的语句是

A)intc[10]=0;

B)intc[10]={0}*10;

C)intc[1]={0,0,0,0,0,0,0};

D)intc[10]={0};

(11)阅读下列程序,则执行后输出的结果是

#include"stdio.h"

intk=1;

fun(intk)

{

k++;

    k=k*6;

}

main()

{

fun(k);

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

}

A)1

B)2

C)6

D)12

(12)现有如下程序段

#include"stdio.h"

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

{

*c=*a+*b;

}

main()

{

inta[2]={12,23},c;

fun(a,a+1,&c);

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

}

则程序的输出结果为

A)23

B)12

C)0

D)35

(13)若有以下语句,则正确的描述是

chara[]="toyou";

charb[]={′t′,′o′,′y′,′o′,′u′};

A)a数组和b数组的长度相同

B)a数组长度小于b数组长度

C)a数组长度大于b数组长度

D)a数组等价于b数组

(14)已知:

chara[15],b[15]={"Ilovechina"};则在程序中能将字符串Ilovechina赋给数组a的正确语句是

A)a="Ilovechina";

B)strcpy(b,a);

C)a=b;

D)strcpy(a,b);

(15)阅读下面程序,则执行后的结果为

#include"stdio.h"

main()

char*str="abcdefghijklmnopq";

    while(*str++!

=′e′);

    printf("%c\n",*str);

}

A)f

B)a

C)e

D)q

(16)现有如下程序段

#include"stdio.h"

intfun(intk,int*m);

{

if(k%3)

*m=k*k;

else

*m=k/3;

}

main()

{

int(*p)(int,int*),m;

    p=fun;

(*p)(78,&m);

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

}

则程序段的输出结果为

A)24

B)25

C)26

D)27

(17)阅读下列程序,则执行后的输出结果为

#include"stdio.h"

fun(intx)

{   

if(x/2>0)fun(x/2);

printf("%d",x%2);

}

main()

{

fun(20);

putchar(’\n′);

}

A)11100

B)10100

C)10101

D)10110

(18)阅读如下程序段,则执行后程序的输出结果是

#include

main()

{

structa

{

intx;

inty;

}num[2]={{20,5},{6,7}};

printf("%d\n",num[0].x/num[0].y*num[1].y);

}

A)0

B)28

C)20

D)5

(19)阅读下列程序段

#include"stdio.h"

typedefstructaa

{

inta;

    structaa*next;

}M;

voidset(M*k,inti,int*b)

{

intj,d=0;

    for(j=1;j

{   

k[j-1].next=&k[j];

k[j-1].a=b[d++];

}

k[j].a=b[d];

}

main()

{

Mk[5],*p;

intd[5]={23,34,45,56,67};

set(k,5,d);

p=k+1;

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

}

则下面的表达式在table处,能使程序执行后,打印输出数据45的是

A)p->next->a

B)++p->a

C)(*p).a++

D)p++->a

(20)阅读下面程序,程序实现的功能是(a123.txt在当前盘符下已经存在)

#include"stdio.h"

voidmain()

{

FILE*fp;

inta[10],*p=a;

fp=fopen("a123.txt","w");

while(strlen(gets(p))>0)

{

fputs(a,fp);

fputs("\n",fp);

}

fclose(fp);

}

A)从键盘输入若干行字符,按行号倒序写入文本文件a123.txt中

B)从键盘输入若干行字符,取前2行写入文本文件a123.txt中

C)从键盘输入若干行字符,第一行写入文本文件a123.txt中

D)从键盘输入若干行字符,依次写入文本文件a123.txt中

二、填空题(2×12分)

(1)阅读下面程序,则在执行时候的输出为_____________

#include"stdio.h"

main()

{

intx=1,y=2,z=0;

if(x=2)

z=x,x=y,y=z;

printf("%d,%d\n",x,y);

}

(2)语句printf("%d\n",′H′-′0′+64);的执行结果为___________

(3)阅读下面程序,则程序的执行结果为____________

#include"stdio.h"

fun(intx)

{

x=50;

}

main()

{

inta=10;

    fun(a);

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

}

(4)以下程序的输出结果是____________

intfun(intx,inty,int*p,int*q)

{

*p=x*y;

    *q=x/y;

}

main()

{

inta,b,c,d;

a=4;

b=3;

fun(a,b,&c,&d);

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

}

(5)下面程序是求出数组arr的两条对角线上元素之和,请填空

#include"stdio.h"

main()

{

intarr[3][3]={2,3,4,8,3,2,7,9,8},a=0,b=0,i,j;

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

       for(j=0;j<3;j++)

if(___________________ )

a=a+arr[i][j];

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

for(___________________ ;j>=0;j--)

if(___________________ )

b=b+arr[i][j];

printf("%d,%d\n",a,b);

}

(6)下面程序的功能是:

对字符串从小到大进行排序并输出,请填空

#include"string.h"

#include"stdio.h"

sort(char*a[],intn)

{

inti,j;

char*p;

for(j=1;j<=n-1;j++)

for(i=0;___________________;i++)

if(___________________>0)

{

p=a[i];

a[i]=a[i+1];

a[i+1]=p;

}

}

main()

{

inti;

char*book[]={"itisme","itisyou","howareyou","fine","goodnight","goodbye"};

sort(___________________ );

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

printf("%s\n",book[i]);

}

(7)下面的函数是完成1~n的累加,完成函数

a(intk)

{

if(k<=0)

printf("error\n");

if(k==1)

___________________;

else

___________________;

}

三、请填写BOOL,float,指针变量与“零值”比较的if语句

(6分)

提示:

这里“零值”可以是0,0.0,FALSE或者“空指针”

例如int变量n与“零值”比较的if语句为:

   if(n==0)

   if(n!

=0)

以此类推

 

请写出BOOL flag与“零值”比较的if语句:

     

请写出char *p与“零值”比较的if语句:

    

四、以下为WindowsNT下的32位C++程序,请计算sizeof的值(6分)

 

   char str[]=“Hello”;

   char  *p=str;

int    n=10;

请计算

sizeof(str)=       

        

sizeof(p)=       

         

sizeof(n)=   voidFunc(charstr[100])

{

请计算

 sizeof(str)=   

}

     

   void*p=malloc(100);

请计算

sizeof(p)=

    

五、简答题(9分)

1、头文件中的ifndef/define/endif干什么用?

2、#include   和 #include “filename.h”有什么区别?

3、const有什么用途?

(请至少说明两种)

六、有关内存的思考题(6分)

 

voidGetMemory(char*p)

{

p=(char*)malloc(100);

}

voidTest(void)

{

char*str=NULL;

GetMemory(str);   

strcpy(str,"helloworld");

printf(str);

}

请问运行Test函数会有什么样的结果?

答:

   VoidGetMemory2(char**p,intnum)

{

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

}

voidTest(void)

{

char*str=NULL;

GetMemory(&str,100);

strcpy(str,"hello");   

printf(str);   

}

请问运行Test函数会有什么样的结果?

答:

    

上机题:

七、编写strcpy函数,并验证;求字符串长度(9分)

已知strcpy函数的原型是

   char*strcpy(char*strDest,constchar*strSrc);

   其中strDest是目的字符串,strSrc是源字符串

(1)不调用C++/C的字符串库函数,请编写函数strcpy(6分)

(2)计算strDest字符串的长度(3分)

八、实现功能:

1、从键盘输入一行字符串,调用函数建立反序的链表,然后输出整个链表(5分)

2、求出链表的最大值(5分)

已知

structnode

{

chardata;

    structnode*next;

}*head;

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

当前位置:首页 > 经管营销 > 销售营销

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

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