返回首页

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

时间:2010-11-18 22:16来源:知行网www.zhixing123.cn 编辑:麦田守望者

一、单项选择题,答案不写入答题栏的一律不得分!(每题1.5分,共52.5分)

1、结构化程序设计的3种结构是 。
A)顺序结构、选择结构、转移结构 B)分支结构、等价结构、循环结构
C)多分支结构、赋值结构、等价结构 D)顺序结构、选择结构、循环结构
 

2、以下叙述中正确的是 。
A)C语言比其他语言高级 B)C语言可以不用编译就能被计算机识别执行
C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D)C语言出现的最晚,具有其他语言的一切优点
 

3、C语言中最简单的数据类型包括 。
A)整型、实型、逻辑型 B)整型、实型、字符型
C)整型、字符型、逻辑型 D)字符型、实型、逻辑型
 

4、若变量已正确定义并赋值,以下符合C语言语法的表达式是 。
A)a:=b+1 B)a=b=c+2 C)int 18.5%3 D)a=a+7=c+b

 

5、若变量a,i已正确定义,且i已正确赋值,合法的语句是 。
A)a= =1 B)++i; C)a=a++=5; D)a=int(i);

 

6、已知:

int t=0;

while(t=1){...}

则以下叙述正确的是 。
A)循环控制表达式的值为0 B)循环控制表达式的值为1
C)循环控制表达式不合法 D)以上说法都不对
 

7、若变量已正确说明为float型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是 。
A)10<回车>22<回车>33<回车> B)10.0,22.0,33.0<回车>
C)10.0<回车>22.033.0<回车> D)10 22<回车>33<回车>

[解析]遇到"%d%d%d"或"%f%f%f"不能用逗号作几个数据间的分隔符。
 

8、有如下程序:
main()
{

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

switch(x)
{

case 0: b++;

case 1: a++;

case 2: a++;b++;

}

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

该程序的输出结果是
A)a=2,b=1 B)a=1,b=1 C)a=1,b=0 D)a=2,b=2

[解析]根据x=1,执行case 1,接着并未退出switch,而是执行case 2。即找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。
 

9、有以下程序
main()
{int i=1,j=1,k=2;

if((j++||k++)&&i++)
printf("%d,%d,%d\n",i,j,k);

}

执行后输出结果是 。
A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3

[解析]本题关键在于k保持原值2不变,因为或运算只需要检验j++是否为真即可判断整个表达式j++||k++为真,相当于没有执行k++。
 

10、有如下程序
main()
{float x=2.0,y;

if(x<0.0)y=0.0;

else if(x<10.0)y=1.0/x;

else y=1.0;

printf("%f\n",y);}

该程序的输出结果是 。
A)0.000000 B)0.250000 C)0.500000 D)1.000000

 

11、有如下程序:
main()
{int n=9;

while(n>6){n--; printf("%d",n);}

}

该程序的输出结果是 。
A)987 B)876 C)8765 D)9876

[解析]第一遍循环n=9,执行n - -,输出n现值8,以此类推得到B答案。
 

12、在下列选项中,没有构成死循环的是 。
A)int i=100;

while(1)
{i=i%100+1;

if(i>100)break;

}

B)for(;;);

C)int k=10000;

do{k++;}while(k>10000);

D)int s=36;
while(s)- -s;


 

[解析]A选项if表达式的条件是假,而while表达式是真,构成死循环;B选项相当于while(1),无终止的执行循环体;C选项第一次执行循环后k=10001,自此后k>10000恒为真,无终止循环;D答案选项当s自减至0时,while表达式为假,跳出循环。
 

13、设int x=1,y=1;表达式(!x||y--)的值是 。
A)0 B)1 C)2 D)-1

 

14、有以下程序
float fun(int x,int y)
{return(x+y);}

main()
{int a=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));

}

程序运行后的输出结果是 。
A)编译出错 B)9 C)21 D)9.0

[解析](int)fun(a+c,b)为(int)fun(10,5),经调用后值为15;接着计算fun((int)fun(a+c,b),a-c)为fun(15,-6),经调用后值为9。
 

15、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是 。
A)函数调用可以作为独立的语句存在 B)函数调用可以作为一个函数的实参
C)函数调用可以出现在表达式中 D)函数调用可以作为一个函数的形参
 

16、若有以下调用语句,则不正确的fun函数的首部是 。
main()
{ …
int a[50],n;


fun(n, &a[9]);


}

A)void fun(int m, int x[]) B)void fun(int s, int h[41])
C)void fun(int p, int *s) D)void fun(int n, int a)
[解析]把数组a中9号元素的地址传递给fun的函数参数,本题的考点是用什么来做函数的形参。A选项用不定长度的数组x作形参;B选项用长度小于50的数组h作形参;C用指针变量*s作形参;显然D中形参变量a只是普通的整形变量,不能接收来自于实参9号元素的地址。
 

17、fseek函数的正确调用形式是 。
A)fseek(文件指针,起始点,位移量) B)fseek(文件指针,位移量,起始点)
C)fseek(位移量,起始点,文件指针) D)fseek(起始点,位移量,文件指针)
 

18、若fp是指向某文件的指针,且已读到文件末尾,则函数feof(fp)的返回值是 。
A)EOF B)-1 C)1 D)NULL

 

19、若有说明语句:char c='\72'; 则变量c 。
A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法,c的值不确定
 

20、若有说明 int a[3][4];则a数组元素的非法引用是 。
A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4]
 

21、设有以下说明语句
struct stu

{int a;

float b;

} stutype;

则下面的叙述不正确的是 。
A)struct是结构体类型的关键字 B)struct stu是用户定义的结构体类型
C)stutype是用户定义的结构体类型名 D)a和b都是结构体成员名
 

22、在C语言中,引用数组元素时,其数组下标的数据类型允许是 。
A)整型常量 B)整型表达式 C)整型常量或整型表达式 D)任何类型的表达式
 

23、若运行时给变量x输入12,则以下程序的运行结果是 。
main()
{int x,y;

scanf("%d",&x);

y=x>12?x+10:x-12;

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

}

A)0 B)22 C)12 D)10

 

24、以下说法正确的是 。
A)C语言程序总是从第一个的函数开始执行
B)在C语言程序中,要调用函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)C语言程序中的main()函数必须放在程序的开始部分
 

25、表达式0x13^0x17的值是 。
A)0x04 B)0x13 C)0xE8 D)0x17

 

26、有以下程序

#define F(X,Y)(X)*(Y)
main()
{int a=3, b=4;

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

}

程序运行后的输出结果是 。
A)12 B)15 C)16 D)20

 

27、下列程序执行后的输出结果是 。
void func(int *a,int b[])
{ b[0]=*a+6; }

main()
{int a,b[5];

a=0; b[0]=3;

func(&a,b); printf("%d\n",b[0]);

}

A)6 B)7 C)8 D)9

[解析]func(&a,b)中两个参数分别把整形变量a的地址传递给指针变量*a、把数组b(即数组名作实参)首元素的地址传递给形参数组b[]。因此在func()函数中,b[0]=*a+6=0+6=6。
 

28、若有下面的程序段:
char s[]="china";char *p; p=s;

则下列叙述正确的是 。
A)s和p完全相同 B)数组s中的内容和指针变量p中的内容相等
C)s数组长度和p所指向的字符串长度相等 D)*p与s[0]相等
 

29、有以下程序
void sort(int a[],int n)
{int i,j,t;

for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}

}

main()
{int aa[10]={1,2,3,4,5,6,7,8,9,10},i;

sort(&aa[3],5);

for(i=0;i<10;i++)printf("%d,",aa[i]);

printf("\n");

}

程序运行后的输出结果是 。
A)1,2,3,4,5,6,7,8,9,10, B)10,9,8,7,6,5,4,3,2,1,

C)1,2,3,8,7,6,5,4,9,10, D)1,2,10,9,8,7,6,5,4,3,

[解析]sort(&aa[3],5)的作用是把数组aa的第3号元素及其后续4个元素(一共5个元素)由大到小排列,其他元素原样输出。
 

30、以下程序的运行结果是 。

------分隔线----------------------------
标签(Tag):程序设计
------分隔线----------------------------
推荐内容
  • 一图看懂开源许可协议:GPL、BSD、MIT、Mozilla、Ap

    以下是上述协议的简单介绍( 单击图片可看大图 ): BSD开源协议 BSD开源协议是一个给...

  • 程序员必备的5款软件简介

    我不是一个程序员,没有码农的那种才华,但是经常也会折腾网站,有的时候可以说的为了...

  • 几个用于诊断HTTP响应时间情况的小工具

    如果有人说你的 HTTP 接口响应慢,那可能是他的电脑慢,也可能是网络本身慢,还可能是...

  • 什么是EV 代码签名证书?

    什么是EV 代码签名证书? EV代码签名证书是指扩展验证代码签名证书,具有标准代码签名...

  • 知行网告诉你 机器学习最流行的语言是……?

    应该掌握哪门编程语言,才能获得机器学习或数据科学的工作机会呢?这是一个银弹的问题...

  • 从一个范例看XML的应用详解教程

    如果你已经看了Asp.Net Ajax的两种基本开发模式 这篇文章,你可能很快会发现这样一个...

  • 猜你感兴趣
  • 教育技术学动态
  • 教育技术学论文
  • 理论研究
  • 应用研究
  • 资源收藏
  • 百家观点
  • 英文文献
  • 中国电化教育
  • 电化教育研究
  • 中国远程教育
  • 开放教育研究
  • 现代教育技术
  • 远程教育杂志
  • 现代远距离教育
  • 中国教育信息化
  • 中国信息技术教育
  • 中小学信息技术
  • Flash龙8娱乐官网手机版
  • Photoshop龙8娱乐官网手机版
  • 3DMAX龙8娱乐官网手机版
  • AutoCAD龙8娱乐官网手机版
  • CorelDRAW龙8娱乐官网手机版
  • Matlab龙8娱乐官网手机版
  • 其他龙8娱乐官网手机版
  • .Net龙8娱乐官网手机版
  • Asp龙8娱乐官网手机版
  • Php龙8娱乐官网手机版
  • Jsp龙8娱乐官网手机版
  • Ajax龙8娱乐官网手机版
  • Android教程
  • 其他龙8娱乐官网手机版
  • Word教程
  • Excel教程
  • PowerPoint教程
  • Ubuntu教程
  • 其他教程
  • 课件下载
  • 软件下载
  • 视频教程下载
  • 其他下载
  • 教案大全
  • 试题大全
  • 课件大全
  • 其他大全
  • 人像摄影
  • 风光摄影