0205c语言试题.docx

上传人:b****3 文档编号:6598326 上传时间:2023-05-10 格式:DOCX 页数:44 大小:50.78KB
下载 相关 举报
0205c语言试题.docx_第1页
第1页 / 共44页
0205c语言试题.docx_第2页
第2页 / 共44页
0205c语言试题.docx_第3页
第3页 / 共44页
0205c语言试题.docx_第4页
第4页 / 共44页
0205c语言试题.docx_第5页
第5页 / 共44页
0205c语言试题.docx_第6页
第6页 / 共44页
0205c语言试题.docx_第7页
第7页 / 共44页
0205c语言试题.docx_第8页
第8页 / 共44页
0205c语言试题.docx_第9页
第9页 / 共44页
0205c语言试题.docx_第10页
第10页 / 共44页
0205c语言试题.docx_第11页
第11页 / 共44页
0205c语言试题.docx_第12页
第12页 / 共44页
0205c语言试题.docx_第13页
第13页 / 共44页
0205c语言试题.docx_第14页
第14页 / 共44页
0205c语言试题.docx_第15页
第15页 / 共44页
0205c语言试题.docx_第16页
第16页 / 共44页
0205c语言试题.docx_第17页
第17页 / 共44页
0205c语言试题.docx_第18页
第18页 / 共44页
0205c语言试题.docx_第19页
第19页 / 共44页
0205c语言试题.docx_第20页
第20页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

0205c语言试题.docx

《0205c语言试题.docx》由会员分享,可在线阅读,更多相关《0205c语言试题.docx(44页珍藏版)》请在冰点文库上搜索。

0205c语言试题.docx

0205c语言试题

C程序设计笔试试题

一、填空题(本题20分,每小题2分)

1、为了表示一个算法,可以用不同的方法。

常用的算法描述工具有自然语言、伪代码、N-S图以及()图等。

2、C语言中规定,整型常量可以用十进制、()进制和()进制形式来表示。

3、在C语言中,对于负整数,在内存中是以()码形式进行存储。

4、在C语言中,若被定义为int类型的变量,在内存中占用2个字节的空间,也就是说,该类型变量的取值范围是()。

5、若定义:

int*p=&a;则有指针变量p应指向变量a的()地址。

6、若某变量被定义为auto变量的存储单元,则将被分配在内存的()存储区域。

7、局部静态变量的初值是在编译时被赋予的,在程序执行期间不再赋予初值。

对未赋初值的局部静态变量,C编译程序则自动给它赋初值()。

8、在下列给出的字符数组c,它在内存中所占用的字节数是()。

charc[]={“clanguage”};

9、若定义:

float*pf;则有执行语句为:

pf=(float*)malloc(4);

说明此时的指针变量pf是指向()个字节的首地址。

10、如果一个函数在其返回时,带回的是指针型的数据,那么就将此函数称之为()的函数。

二、请写出下列程序的运行结果

1、main()

{intn=100;

if(n>100)

printf(“%d\n”,n>100);

else

printf(“%d\n”,n<=100);

}

2、main()

{inta=2,b=-1,c=2;

if(a

if(b<0)c=0;

elsec+=1;

printf(“%d\n”,c);

}

3、main()

{charc1=’A’,c2=’Y’;

printf(“c1=%d,c2=%d\n”,c1,c2);

}

4、fun(inta,intb)

{intc;

c=a+b;

return(c);

}

main()

{intx=6,y=7,z=8,r;

r=fun((x--,y++,x+y),z--);

printf(“%d\n”,r);

}

5、#include

main()

{char*str[]={“One”,“Two”,“Three”,“Four”};

char**p;

for(p=str;p

printf(“%s”,*p);

}

1、以下程序的输出结果是:

fun(int*x)

{printf(“%d\n”,++*x);}

main()

{inta=25;fun(&a);}

A)23B)24C)25D)26

A)

2、以下程序的输出结果是

main()

{inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a+2;

printf(“%d\n”,*(p+2));

}

A)5B)4C)3D)2

3、以下程序的输出结果是

voidfun(int**s,intp[2][3])

{**s=p[1][1];}

main()

{inta[2][3]={1,3,5,7,9,11},*p;

p=(int*)malloc(sizeof(int));

fun(&p,a);printf(“%d\n”,*p);

}

A)1B)9C)7D)11

4、以下程序的输出结果是

#include

f1()

{intx=0;x++;

printf(“%d,”,x);

}

f2()

{staticintx;x++;

printf(“%d,”,x);

}

main()

{intk;

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

f1(),f2();

}

A)1,1,1,1,1,1B)1,1,1,2,1,3

C)1,1,2,2,3,3D)1,1,2,1,3,1

5、若有以下程序片段,则表达式()中的值为6。

structst

{intn;

structst*next;

};

main()

{structsta[3],*p;p=a;

a[0].n=5;a[0].next=&a[1];

a[1].n=7;a[1].next=&a[2];

a[2].n=9;a[2].next=NULL;

}

A)p++->nB)p->n++C)(*p).n++D)++p->n

四、请阅读下列给出的程序,并根据程序

的功能改正程序中的错误

(本题10分,每小题5分)

1、请改正以下程序片段中的错误(本小题5分)

structsk

{inta;

floatb;

}data={100,25.6};

main()

{int*p;

p=&data;

printf(“%d,%f\n”,p->a,p->b);

}

 

2、下列给定程序中,fun函数的功能是:

将p所指的字符串中的字母转换为按字母序列的后续字母,如将‘A’变成‘B’,‘a’变成‘b’,‘Z’变成‘A’,‘z’变成‘a’……,其它字符不变。

请改正函数fun中的错误,使它能得出正确的结果。

charfun(char*p)

{while(*p!

='@')

{if(((*p>='a')&&(*p<'z'))||((*p>='A')&&(*p<'Z')))

*p+=1;

elseif(*p=='Z')*p='A';

elseif(*p=='z')*p='a';

(*p)++;

}}

main()

{chars[100];gets(s);fun(s);printf("%s\n",s);}

 

五、求解下列给出的问题

(本题10分,每小题5分)

1、请画出以下代码运行时的链表结构,并写出其运行结果。

(本小题5分)

#include

structNODE

{intnum;

structNODE*next;

};

main()

{structNODE*p,*q,*r;intsum=0;

p=(structNODE*)malloc(sizeof(structNODE));

q=(structNODE*)malloc(sizeof(structNODE));

r=(structNODE*)malloc(sizeof(structNODE));

p->num=1;q->num=2;r->num=3;

p->next=q;q->next=r;r->next=NULL;

sum+=q->next->num;

sum+=p->num;

printf(“sum=%d\n”,sum);

}

(1)链表结构图(4分):

(2)运行结果(1分):

2、请用程序流程图描述求解下列问题的算法。

(本小题5分)

设某学校新生入学时,需报选体育课程选修科目。

其科目包括有:

篮球、排球、体操、乒乓球和网球。

请为某班级(30人)统计报选各体育科目的人数。

设:

用数字0表示篮球

1表示排球

2表示体操

3表示乒乓球

4表示网球

六、请设计并编写求解下列问题的程序

(本题20分)

1、请编写fun函数,在下列给出的一个有序的数列中插入一个数,且当该数插入后,应使该数列仍然有序。

(本小题10分)

60,68,78,88,90,90,95,96,98,100

#defineN10

main()

{inta[N+1]={60,68,78,88,90,90,95,96,98,100};

inti,x;

intfun(int*p,intnum);

scanf("%d",&x);

fun(a,x);

for(i=0;i

printf("%4d",a[i]);

}

intfun(int*p,intnum)

{intk,s=0;

2、请设计并编写建立一个如图6-1所示的具有5个结点的单向动态链表fun函数(本小题10分)

(提示:

利用malloc函数实现动态链表的建立)

图6-1含有5个结点的单向链表

structsk

{intnum;

intscore;

structsk*next;

}*h,*p1,*p2;

structsk*fun()

{

return(h);

}

main()

{p1=fun();

while(p1!

=NULL)

{printf("%d,%d\n",p1->num,p1->score);

p1=p1->next;

}

}

 

哈尔滨工业大学(威海)2005(秋)学期

一、填空(本题20分,每小题2分)

1、结构化程序是由三种基本结构组成,即顺序结构、选择结构和()结构。

2、在C语言中,整型常量可以用十进制、八进制和十六进制形式来表示。

其中八进制数是以数字0为开头,而十六进制数是以()为开头。

3、设在内存中由两个字节存放的最小整数是1000000000000000,则它所对应的十进制整数应该是()。

4、算术运算符的结合方向是先左后右,赋值运算符的的结合方向是先右后左;而函数参数的结合方向是()。

5、在C语言中,调用函数和被调用函数之间的数据可以通过三种方式进行传递:

①实参与形参之间的数据传递;②通过return语句把函数值返回调用函数;③通过()进行数据的传递。

6、在C语言中,把用来存放内存地址的变量称为()。

7、对二维数组元素的操作可以用下标、数组名、指向一维数组的指针变量、行指针以及()。

8、若比较两个字符串是否相等,应当使用字符串()函数。

9、若将一个变量定义为寄存器变量,则应使用关键字()作声明。

10、若有如下定义:

inta[3][4],(*p)[4];

p=a;

则说明p是一个指针变量,它所指向的是包含有4个整型元素的一维数组,在C语言中把此变量p称为()指针变量。

二、写出下列程序的运行结果(本题20分,每小题5分)

1、main()

{intx,a,b,ok1,ok2;

x=100;a=10;b=20;ok1=5;ok2=0;

if(a

if(b!

=15)

if(!

ok1)

{x=1;printf(“x=%d\n”,x);}

elseif(ok2)x=10;

x=-1;

printf(“x=%d\n”,x);

}

2、main()

{intx=10;

y=x++;

printf(“%d,%d\n”,(x++,y),y++);

}

3、prt(int*x,int*y,int*z)

{printf(“%d,%d,%d\n”,++*x,++*y,*(z++));

}

main()

{inta=10,b=40,c=20;

prt(&a,&b,&c);

prt(&a,&b,&c);

}

4、#include

#include

voidfut(int**s,intp[2][3])

{**s=p[1][1];}

voidmain()

{inta[2][3]={1,3,5,7,9,11},*p;

p=(int*)malloc(sizeof(int));

fut(&p,a);

printf(“%d\n”,*p);

}

三、选择题(本题20分,每小题4分)

1、以下程序的输出结果是:

main()

{inta=-1,b=4,k;

k=(++a<0)&&!

(b--<=0);

printf(“%d,%d,%d\n”,k,a,b);

}

A)104B)103C)003D)004

A)

2、以下程序的输出结果是

main()

{intx=-1;

printf(“%d,%u,%o\n”,x,x,x);

}

A)-1,-1,-1B)-1,32767,-177777

C)-1,32768,-177777D)-1,65535,177777

3、以下程序的输出结果是

main()

{inta[]={1,2,3,4,5,6},*p=a;

*(p+3)+=2;

printf(“%d,%d\n”,*p,*(p+3));

}

A)0,5B)1,5C)0,6D)1,6

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

#include

voidf1()

{intx=0;

x++;

printf(“%d,”,x);

}

voidf2()

{staticintx;

x++;

printf(“%d,”,x);

}

voidmain()

{intk,i;

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

f1(),f2();

}

A)1,1,1,1,1,1,1B)1,1,1,2,1,3

C)1,1,2,2,3,3D)1,1,2,1,3,1

5、以下程序的输出结果是()

#include

main()

{chaf*p=“abcde\0fghijk\0”;

printf(“%d\n”,strlen(p));

}

A)12B)15C)6D)5

四、请阅读下列给出的程序,并根据程序的功能改正程序中的错误(本题10分,每小题5分)

1、下列给定程序中,main函数的功能是计算:

S=1!

+2!

+3!

+……+10!

请改正该函数中的错误。

main()

{ints,t,j,i;

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

{t=1;

for(j=1;j

s+=t;

}

printf(“s=%d\n”,s);

}

2、下列给定程序中,fun函数的功能是:

依次取出字符串中所有的字母,并取代原字符串。

请改正fun中的错误,使它能得到正确的结果。

#include

fun(char*s)

{inti,j;

for(i=0,j=0;s[i]!

=’\0’;i++)

if((s[i]>=’A’&&s[i]<=’Z’)&&(s[i]>=’a’&&s[i]<=’z’))

s[j]=s[i];

s[j]=”\0”;

}

main()

{charstr[80];

gets(str);fun(str);

printf(“%s\n”,str);

}

五、请设计并编写求解下列问题的程序(本题30分)

1、请编写一个fun函数,它的功能是:

求出一个4XM整型二维数组中最小元素的值,并将此值返回调用函数。

(8分)

注意:

部分源程序给出如下:

#defineM4

#include

main()

{inta[4][M],j,i,min;

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

for(j=0;j

scanf(“%d”,&a[i][j]);

min=fmin(a);

printf(“min=%d\n”,min);

}

intfmin(int(*p)[M])

{

}

注意:

05041-1,2,3,4和05042-1,2班学生做*2题,其他班做2题。

2、请编写一个查询学生成绩的fun函数,其功能是:

输入某学生学号,则应输出该学号所对应的成绩。

(10分)

#defineN2

#defineM8

main()

{ints[N][M]={{101,102,103,104,105,106,107,108},

{90,78,92,66,73,86,56,82}};

intnum,grade;

scanf(“%d”,&num);

grade=fun(s,&num);

printf(“num=%d,grade=%d\n”,num,grade);

}

fun(intt[N][M],int*p)

{

*2、学生的记录是由学号和成绩组成,现有N名学生的数据已存在由主函数建立的链表中,如下图所示。

请设计一个fun函数,其功能是:

把链表中分数最低的学生数据放在结构体数组t中,并要求由fun函数返回分数最低的学生人数。

注意,分数最低的学生可能不止一个。

请完成fun函数中的C代码。

(10分)

(本题只为05041-1,2,3,4和05042-1,2学生提供)

structstu1

{intnum;

ints;

structstu1*next;

};

structstu2

{intnum;

ints;

}t[5];

intn;

main()

{structstu1*h,*p1,*p2;

inti,k=0;h=NULL;

p1=p2=(structstu1*)malloc(sizeof(structstu1));

scanf("%d,%d",&p1->num,&p1->s);

h=p1;

for(i=1;i<5;i++)

{p1=(structstu1*)malloc(sizeof(structstu1));

p2->next=p1;

p2=p1;

scanf("%d,%d",&p1->num,&p1->s);

}

p2->next=NULL;

fun1(h);

n=fun(h);printf("n=%d\n",n);

for(i=0;i

printf("%d,%d\n",t[i].num,t[i].s);

getch();

}

intfun(structstu1*a)

{

}

3、请编写fun函数,其功能是将s所指字符串中ASCII码值为偶数的字符删除,串中剩余字符形成一个新串放在由t所指的数组中(12分)

例如:

若s所指字符串中的内容为:

ABCDEFG12345,其中的字符B的ASCII码值为偶数、……、字符2的ASCII码值为偶数、……,都应删除的字符,其他依次类推。

最后由t所指的数组中的内容应是:

ACEG135

注意:

部分源程序给出如下:

#include

#include

#include

intfun(char*s,chart[])

{

}

main()

{chars[100],t[100];

scanf(“%s\n”,s);

fun(s,t);

printf(“%s\n”,t);

}

考试时间:

2006年1月4日18:

30-20:

30

 

哈工大2004年秋季学期

C语言考试题

题号

总分

附加题

分数

说明:

考试成绩分为三部分:

实验成绩占10分,卷面笔试成绩占45分,机考成绩占45分,满分为100分。

本试卷为卷面笔试部分,卷面满分为45分。

参考答案

一、填空题(6分,每题2分)

1.C语言中基本数据类型包括整型、实型、字符型、枚举类型。

2.已知能被4整除而不能被100整除的或者能被400整除的年份是闰年,则判断某一年year是否是闰年的表达式为:

year%4==0&&year%100!

=0||year%400==0。

3.设有下列登记表,采用最佳方式对它进行类型定义。

姓名

性别

出生年月

家庭收入状况

家庭收入状况标记

低收入

中等收入

高收入

姓名用name表示,性别用sex表示,出生年月用birthDay表示,年用year表示,月用month表示,日用date表示,家庭收入状况用salary表示,低收入用low表示,中等收入用middle表示,高收入用high表示,家庭收入状况标记用salaryMark表示。

struct

{

charname[10];

charsex;

struct

{

intday;

intmonth;

intday;

}birthDay;

union

{

intlow;

intmiddle;

inthigh;

}salary;

intsalaryMark;

};

二、判断下列问题描述正确与否,正确的打“√”,错误的打“×”。

(3分,每题1分)

1.#definePI=3.14159;不是C语句。

(√)

2.在C语言中,可以用typedef定义一种新的类型。

(× )

3.共用体所占的内存空间大小取决于占空间最多的那个成员变量。

(√)

三、选择题:

(10分,每题1分)

1.以下不正确的C语言标识符是(D)。

A.AB1B.a2_bC._ab3D.4ab

2.若有定义int(*p)[4],则标识符p是一个D。

A、指向整型变量的指针变量

B、指向函数的指针变量

C、指向有四个整型元素的一维数组的指针变量

D、指针数组名,有四个元素,每个元素均为一个指向整型变量的指针

3.若用数组名作为函数调用时实参,则实际上传递给形参的是(A)。

A.数组首地址B.数组的第一个元素值

C.数组中全部元素的值D.数组元素的个数

4.C语言中规定函数的返回值的类型是由(B)。

A.return语句中的表达式类型所决定

B.在定义该函数时所指定的函数类型所决定

C.调用该函数时系统临时决定

D.调用该函数时的主调用函数类型所决定

5.以下错误的描述是(D)。

A.不同的函数中可以使用相同的变量名

B.形式参数是局部变量

C.一个函数内部定义的变量只能在本函数范围内有效

D.在一个函数内部的复合语句中定义的变量可以在本函数范围内有效

6.为了判断两个字符串s1和s2是否相等,应当使用(D)。

A.if(s1==s2)B.if(s1=s2)

C.if(strcpy(s1,s2))D.if(strcm

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2