C语言程序设计期末考试题及答案

发布时间:2020-02-19 21:43:29   来源:文档文库   
字号:

班 级

学 号

姓 名

C语言程序设计 试 题

(2008 /2009 学年 第 二 学期)

总分

一. 选择题(满分30分,每题2分)

1.若a、b、c都定义为int类型且初值为0,则以下不正确的赋值语句是 D

A. a=b=c+8; B. a+=y+3;

C. c++; D. a+b+c

2. 已知int j,i=1;执行语句“j=i++;”后,变量i的值是 B

A. 1 B. 2 C. 1 D. -2

3.执行下面程序:

#include "stdio.h"

void main()

int a=1,b=2,c=3;

c=(a+=a+2),(a=b,b+3);

printf(%d,%d,%d,a,b,c);

}

则输出结果是: A

A. 2,2,4 B. 4,2,3 C. 5,5,3 D. 4,2,5

4.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为 D

A. a< >0 B. !a C. a=0 D. a

5. for (j=0;j<11;j++);循环结束后,j的值是 B

A. 12   B. 11   C. 10   D. 9

6. C语言中函数返回值的类型由 D 决定的。

A. return语句中的表达式类型 B. 调用该函数的主调函数的类型

C. 调用函数时临时决定 D. 定义函数时所指定的函数类型

7. 下列说法中正确的是 B

A 在调用用户自定义函数时,必须对其进行声明。

B 函数可以返回一个值,也可以什么值也不返回。

C 说明函数时,必须明确参数的类型和返回值。

D 在程序设计中空函数没有什么作用。

8. 若int i=10;执行下列程序后,变量i的正确结果是 D

switch ( i )

{case 0: i+=1;

case 10: i+=1;

case 11: i+=1;

default: i+=1;

}

A. 10 B. 11 C. 12 D. 13

9. 下列语句中不正确的字符串赋值或初始化的是 C

A char str[10]={"strings"}; B.char str[8]={'s','t','r','i','n ','g','s','\0'};

C. char str[10]; str= "strings"; D. char str[]= "strings";

10. 有如下程序:

#include

void main()

{

int a=1,b=0,c=0;

if (a

if (b<0) c=0;

else c++;

printf (%d\n,c);

}

该程序的运行结果是 D

A. 3   B. 2   C. 1   D. 0

11. 在函数调用,对参数传递的说法正确的是 A

A 实参和形参各占一个独立的存储单元。

B 实参和形参始终共用一个相同的存储单元。

C 可以由用户指定实参和形参是否共用一个存储单元。

D 可以由系统指定实参和形参是否共用一个存储单元

12. 以下正确的程序段是 C

A. char str1[ ]= "12345", str2[ ]= "abcdef"; strcpy(str1, str2);

B. char str[10], *st="abcde"; strcat(str, st);

C. char str[10]= " ", *st="abcde"; strcat(str, st);

D. char *st1="12345", *st2="abcde"; strcat(st1, st2);

13. 若有定义:int *p[4];则标识符p B

A. 是一个指向整型变量的指针

B. 是一个指针数组名

C. 是一个指针,它指向一个含有四个整型元素的一维数组

D. 说明不合法

班 级

学 号

姓 名

14. 以下程序的运行结果是 C

typedef union

{

long a[1];

int b[2];

char c[8];

} TEST;

TEST m;

main( )

{

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

}

A. 32 B. 16 C. 8 D. 24

15. 设有以下结构体类型:

struct st

{

char name[8];

int num;

float s[4];

}student[50];

并且结构体数组student中的元素都已有值,若要将这些元素写到硬盘文件file.txt中,以下不正确的形式是 C

A.fwrite(student,sizeof(struct st),50,fp);

B. fwrite(student,50*sizeof(struct st),1,fp);

C. fwrite(student,25*sizeof(struct st),25,fp);

D. for(i=0;i<50;i++)

fwrite(student+i,sizeof(struct st),1,fp);

二、填空题(满分20分,每空2分)

1. 每个C语言编写的程序必须有一个,并且只能有一个函数。

2. 设x和y均为int型变量,且x=1,y=2,则表达式3+x/y的值为 3

3. 若有定义:int a[ ]={2,4,6,8,10,12},*p=a;则*(p+1)的值是 4

4. 设x=0xAB,若要通过x|y使x低4位置1,高4位不变,则y= 0x0F

5. 测试char型变量m的最高位数据是否为1的表达式是 a&0x80

6. x=2y=-3x&&y的结果是 1

7. 与二进制数101等值的十进制数为 5

8. 定义int i=1;执行语句 while(i++<5); 后,i的值为 6

9. 下面程序的运行结果为 22222

#include

void main()

int i=2,j=5,s;

s=i;

for (;--j;)

s=s*10+i;

printf (%d,s);

}

10. 写出程序的执行结果: i=10,j=11

main ( )

{ int i=0,j=0;

while (i<10)

i++;

while (j++<10) ;

printf(i=%d, j=%d\n,i,j);

}

三、读程序写结果(满分16分,每题4分)

1. 判断下面程序的运行结果。

#include

void main()

{

int a=0,b=1;

int fun(int a,int b);

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

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

}

int fun(int m, int n)

{

static s=1;

s++;

return(s*(m+n));

}

2

程序运行的结果为: 3

班 级

学 号

姓 名

2. 以下程序的输出结果是 3,2

#include "stdio.h"

struct chain

{

int x;

int y;

struct chain *p;

}m[2];

void main( )

{

m[0].x=1;

m[0].y=2;

m[1].x=3;

m[1].y=4;

m[0].p=&m[1];

m[1].p=m;

printf("%d,%d\n",(m[0].p)->x,(m[1].p)->y);

}

3. 下面程序的运行结果是 7654321

#include

#include

void fun(char *w, int n)

{

char t,*s1,*s2;

s1=w;

s2=w+n-1;

while(s1

{

t=*s1;

*s1=*s2;

*s2=t;

s1++;

s2--;

}

}

void main( )

{

char p[]="1234567";

fun(p, strlen(p));

puts(p);

}

4. 下面程序的输出结果为 4,2

#include "stdio.h"

struct ks

{

int a;

int *b;

}s[4],*p;

void main( )

{

int n=1,i;

printf("\n");

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

{

s[i].a=n;

s[i].b=&s[i].a;

n=n+1;

}

p=&s[0];

p++;

printf("%d,%d\n",(++p)->a,(p++)->a);

}

四、程序设计(满分34分)

1. 编写一个程序,判断某一年是否为闰年。(6分)

#include

void main()

{

int year;

printf(input year=);

scanf(%d,&year);

if ((year%4==0&&year%100!0)||year%400==0)

printf(%4d is a leap year \n,year);

else

printf(%4d is not a leap year \n,year);

}

班 级

学 号

姓 名

2. 公式求的近似值,直到最后一项的绝对值小于为止,请编程实现。(8分)

#include “math.h”

void main()

{

int s;float n,t,pi;

t=1; pi=0; n=1.0; s=1;

while((fabs(t))>1E-6)

{

pi=pi+t;

n=n+2;

s=-s;

t=s/n;

}

pi=pi*4;

printf(“pi=%10.6f\n”,pi);

}

3. 编写程序,利用子函数实现计算字符串的长度。(10分)

#include

int length(char *s);

void main( )

{

char a[100];

int i;

printf("Please input the string:\n");

gets(a);

i=length(a);

printf("\nThe length of string is %d",i);

}

int length(char *s)

{

char *p=s;

while(*p)

p++;

return(p-s);

}

4.将一个整数字符串转换为一个整数,如"-1234"转换为-1234。(10分)

#include

#include

int chnum(char *p);

void main( )

{

char s[6];

int n;

gets(s);

if(*s=='-')

n=-chnum(s+1);

else

n=chnum(s);

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

}

chnum(char *p)

{

int num=0,k,len,j;

len=strlen(p);

for( ;*p!= '\0';p++)

{

k=*p-'0';

j=(--len);

while(j-->0)

k=k*10;

num=num+k;

}

return(num);

}

 

庄子云:“人生天地之间,若白驹过隙,忽然而已。”是呀,春秋置换,日月交替,这从指尖悄然划过的时光,没有一点声响,没有一刻停留,仿佛眨眼的功夫,半生已过。

  人活在世上,就像暂时寄宿于尘世,当生命的列车驶到终点,情愿也罢,不情愿也罢,微笑也罢,苦笑也罢,都不得不向生命挥手作别。

  我们无法挽住时光的脚步,无法改变人生的宿命。但我们可以拿起生活的画笔,把自己的人生涂抹成色彩靓丽的颜色。

  生命如此短暂,岂容随意挥霍!只有在该辛勤耕耘的时候播洒汗水,一程风雨后,人生的筐篓里才能装满硕果。

  就算是烟花划过天空,也要留下短暂的绚烂。只有让这仅有一次的生命丰盈充实,才不枉来尘世走一遭。雁过留声,人过留名,这一趟人生旅程,总该留下点儿什么!

  生活是柴米油盐的平淡,也是行色匆匆的奔波。一粥一饭来之不易,一丝一缕物力维艰。

  前行的路上,有风也有雨。有时候,风雨扑面而来,打在脸上,很疼,可是,我们不能向生活低头认输,咬牙抹去脸上的雨水,还有泪水,甩开脚步,接着向前。

  我们需要呈现最好的自己给世界,需要许诺最好的生活给家人。所以,生活再累,不能后退。即使生活赐予我们一杯不加糖的苦咖啡,皱一皱眉头,也要饮下。

  人生是一场跋涉,也是一场选择。我们能抵达哪里,能看到什么样的风景,能成为什么样的人,都在于我们的选择。

  如果我们选择面朝大海,朝着阳光的方向挥手微笑,我们的世界必会收获一片春暖花开。如果我们选择小桥流水,在不动声色的日子里种篱修菊,我们的世界必会收获一隅静谧恬淡。

  选择临风起舞,我们就是岁月的勇者;选择临阵脱逃,我们就是生活的懦夫。

  没有淌不过去的河,就看我们如何摆渡。没有爬不过去的山,就看我们何时启程。

  德国哲学家尼采说:“每一个不曾起舞的日子,都是对生命的辜负。”让我们打开朝着晨光的那扇窗,迎阳光进来,在每一个日出东海的日子,无论是鲜衣怒马少年时,还是宠辱不惊中年时,都活出自己的明媚和精彩。

  时间会带来惊喜,只要我们不忘记为什么出发,不忘记以梦为马,岁月一定会对我们和颜悦色,前方也一定会有意想不到的惊喜。

  人生忽如寄,生活多苦辛。

  短暂的生命旅程,

  别辜负时光,别辜负自己。

  愿我们每一个人自律、阳光、勤奋,

  活成自己喜欢的模样,

  活成一束光,



欢迎您的光临,word文档下载后可以修改编辑。双击可以删除页眉页脚。谢谢!

单纯课本内容,并不能满足学生的需要,通过补充,达到内容的完善

教育之通病是教用脑的人不用手,不教用手的人用脑,所以一无所能。教育革命的对策是手脑联盟,结果是手与脑的力量都可以大到不可思议。

本文来源:https://www.2haoxitong.net/k/doc/4be9acdcacf8941ea76e58fafab069dc51224745.html

《C语言程序设计期末考试题及答案.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式