C程序设计基础练习题3及答案_第1页
C程序设计基础练习题3及答案_第2页
C程序设计基础练习题3及答案_第3页
C程序设计基础练习题3及答案_第4页
C程序设计基础练习题3及答案_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、单选题

1、下列合法的字符串常量是()o

A.'56'

B.n56"

C.'\t'

D.56

正确答案:B

解析:A、单引号内只能一个字符,或转义字符,才是字符常量

2、己知字母A的ASCII码为十进制的65,下面程序的输出是()o

intmain()

(

charchl,ch2;

chUA'+5-3;

ch2=,A'+'6'-,3,;

printf("%d,%c“,chl,ch2);

)

A.B,C

B.不确定的值

C.C,D

D.67,D

正确答案:D

解析:D、数字字符的ASCII码与数字一样,按序递增,所以,5-3

结果为2,

字母字符的ASCII码与字母顺序一样,按序递增,所以,

7V+5・3=7V+2=C,按%(1输出,输出它的ASCII为67

同理,ch2='D',按%(:输出,结果为D

3、若变量c为char类型,能正确判断出c为小写字母的表达式是()。

A.(c>='a')11(c<='z')

B.(c>='a')&&(c<='z')

C.('a'<=c)and('z'>=c)

D.,a'<=c<='z'

正确答案:B

4、有如下程序段,执行该程序段后,x的值为()。

inta=14,b=15,x;

charc='A';

x=(a&&b)&&(c<'B');

A.false

B.O

D.14

正确答案:C

解析:C、非0即为真,a&&b结果为l,c<B结果为1,因此,x=l&&

1,结果为1

5、若有下列类型说明语句:

charw;intx;floaty;doublez;

则表达式值的正确数据类型为()

w*x+z-yo

A.char

B.double

C.float

D.int

正确答案:B

解析:B、z是double型,因此,隐式转换规则,其它类型都将转

为double型,结果为double

6、若有下列类型说明语句:

intx;doubley;

则表达式x-y值的正确数据类型为()。

A.float

B.double

C.char

D.int

正确答案:B

解析:B、根据隐式自动转换规则,int与double运算,int将自动

转为double型

7、下面()将十进制数转为八进制数输出。

A.printf("%c",50);

B.doublefun(floatu,floatv)

{returnu+v;}

C.doublefun(doubleu,v)

{returnu+v;}

0.doublefun(u,v)

{floatu,v;returnu+v;}

正确答案:B

解析:A、形参间不能用分号C、形参定义错误,v没有定义类型

D、形参定义错误,u,v没有定义类型

11、以下函数fun的返回值类型为()。

fun(doublex){.....}

A.void

B.无法确定类型

C.double

D.int

正确答案:D

解析:D-,没有写函数类型,默认为int型

12、C语言中函数返回值类型由()决定。

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

B.调用该函数的主调函数类型

C.定义函数时指定的函数类型

D.函数参数类型

正确答案:C

解析:A、由定义函数时指定类型,当表达式类型与它不一致时,

要转换成函数类型

13、

voidarea(intlength,intwidth)

(

ints;

s=length*width;

printf(“长%d,宽%€1的长方形面积是%5「",length,width,

s);

}

有如上求长方形面积函数,正确的调用方法是()o

提示:

本题area是无返回值的函数。

A.c=area(l,2);

B.area(l,2);

C.area();

D.c=area();

正确答案:B

解析:A、错误。area无返回值,不能放在表达式中C、少实参

14、

intarea(intlength,intwidth)

(

ints;

s=length*width;

returns;

)

有如上求长方形面积函数,正确的调用方法是()o

提示:

本题area是有返回值的函数。

A.area(l);

B.area();

C.c=area(l,2);

D.c=area("12";,34");

正确答案:C

解析:A、实参个数与形参不一致D、实参为字符串型,与形参

类型不一致

15、编写函数areafintlength,intwidth),函数的功能是:求长方

形面积,并打印输出面积值。

下面()是正确的。

提示:

本题area没有要求返回值。

A.voidarea(intlength,intwidth)

(

ints;

s=length*width;

returns;

)

B.intarea(intlength,intwidth)

(

ints;

s=length*width;

returns;

)

C.voidarea(intlength,intwidth)

(

ints;

s=length*width;

printf(“长方形面积是%d\n",s);

)

D.intarea(intlength,intwidth)

ints;

s=length*width;

printf(“长方形面积是%d\n",s);

)

止确答案:C

解析:A、有返回值,函数类型应为int型。此外,函数内没有输出

s,与题意不符。B、函数内无printf语句,与题目要求不符。D、

无return语句,无返回值,area函数类型应为void

16^编写函数areafintlength,intwidth),函数的功能是:求长方

形面积,并返回面积值。

下面()是正确的。

A.intarea(intlength,intwidth)

(

ints;

s=length*width;

returns;

)

B.voidarea(intlength,intwidth)

(

ints;

s=length*width;

printf(“长方形面积是%d\rT,s);

C.intarea(intlength,intwidth)

(

ints;

s=length*width;

printf(“长方形面积是%d\n",s);

)

D.voidarea(intlength,intwidth)

(

ints;

s=length*width;

returns;

)

正确答案:A

解析:B、没有用return返回面积,与题意不符。C、无return

语句,无返回值,area函数类型应为void。此外,没有用return返回

面积,与题意不符。D、有返回值,函数类型应为int型。

17、以下叙述中错误的是()o

A.函数中定义的变量默认是自动变量

B.staticintx;

则x会被初始化为0

C.函数形参是存储类型为自动类型的局部变量

D.全局变量的存储类别是auto型的。

正确答案:D

解析:D、全局变量的存储类别默认是extern型

18、下列叙述错误的是()o

A.形参是局部变量

B.主函数中定义的变量在整个程序中都有效

C.其他函数中定义的变量在主函数中不能使用

D.复合语句中定义的变量只在该复合语句中有效

正确答案:B

解析:B、主函数中定义的变量也是局部变量,只能在主函数中使

19、当全局变量与函数内部的局部变量同名时,则在函数内部()o

A.全局变量与局部变量都无效

B.全局变量有效

C.局部变量有效

D.全局变量与局部变量都有效

正确答案:C

解析:C、公共作用域范围内,全局变量暂时被同名局部变量屏蔽。

假设每个函数是一间教室,函数中的变量(局部变量)比作教室内的

椅子,每间教室可以使用自己的椅子,不能使用其它教室的椅子。

全局变量比作公共场所的椅子,大家都可以使用。

因此,某学生即可以使用公共场所的椅子,又可以使用自己教室的椅

子,但进入教室后,他使用的是教室内的崎子,即函数内的变量

20、下面程序运行中,x被分配一释放存储空间,总共有()次这样

的过程。

#include<stdio.h>

voidproc(inta);

intmain()

(

proc(2);

proc(3);

)

voidproc(inta)

(

staticintx;

•♦♦•,*

)

全局变量、static型变量在编译时,给变量分配存储空间;整个

程序运行结束,释放变量所占的存储空间。

本题x是静态存储变量。

A.1

B.2

c.o

D.3

正确答案:A

解析:A、x是静态存储变量,与全局变量一样,只分配1次存储

空间,整个程序运行结束,才释放空间

21、下面程序运行中,形参a被分配一释放存储空间,总共有()次

这样的过程。

#include<stdio.h>

voidproc(inta);

intmain()

(

proc(l);

proc(2);

proc(3);

)

voidproc(inta)

(

a=2;

••••J*

}

提示:

本题a是局部变量,作用域只在proc函数内

(1)定义变量a时,给a分配存储空间。

(2)proc函数执行结束,a消失,释放a所占的存储空间

A.2

B.4

C.3

D.1

正确答案:C

解析:C、形参a是局部变量,每次执行proc函数时,给a分配存

储空间,执行结束,释放存储空间。

proc被调用3次,所以形参a被分配一释放存储空间3次

22、程序输出结果为()

#include<stdio.h>

voidproc();

intmain()

(

intx=l;〃定义局部变量x,局部变量只在木

函数中有效

proc();

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

)

voidproc()

(

intx;〃定义局部变量x,局部变量只在本函

数中有效

x=2;

)

A.2

B.main,proc函数中都定义了变量x,程序错误

C.1

D.0

正确答案:C

解析:B、C语言允许在不同的函数中使用同名变量,且不同函数

中变量互不影响C、main,proc函数中都定义了变量x,但main中

的x只在main中可使用,proc中的x只在proc中可使用,互不干扰。

例如,2间教室都有黑板,但上面可书写各自的内容,互不影响。main、

proc可视为2间教空,其中的x变量可视为黑板

23、下面程序的执行结果为()0

#include<stdio.h>

voidproc();

intmain()

intx=8;〃定义局部变量x,局部变量只在本函数

中有效

proc();

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

return0;

)

voidproc()

(

x=100;

)

A.100

B.8

C.编译不能通过

D.随机数

正确答案:C

解析:C、变量在使用前要定义,但proc中的x没有定义

二、多选题

1、编程统计某高速收费站单向通过的车辆数量,该高速为3车道,

一次通过的车不超过3辆。

程序功能:通过车辆时,输入相应的数(1-3之间),程序进行累加;

当输入字符S时,输出当前通过的车辆总和;当输入e时,输出通过

的车辆总数,并结束程序。

程序有一个空,请选择正确的答案。

#include<stdio.h>

intmain()

(

charcl;

inttotal=0;

printf(“\t\t\t\t计数程序\n\n“);〃输出提示菜单

printf("s---显示当前通过的车辆总数\t1-3一新增车辆数\te—显示通

过的车辆总数,并结束程序\n\n“);

do

(

______________________________〃输入一个字符

if(cl=='s')

("当前通过的车辆总数是:

printf%d\n",total);

elseif(cl=='l')

total=total+l;

elseif(cl=='2')

total=total+2;

elseif(cl==*3')

total=total+3;

}while(cl!='e');

printf("总过的车辆总数是:%d\n",total);

return0;

)

输入、输出样例如下图:

s-显示当解通过的车辆总数1-3-新增隼辆数e—显示通过的车辆总数.并结束程序

1

%前通过的车辆总数是:3

2

士陶通过的车辆总数是:7

1

&过的车辆总数是:13

A.getchar();

前有空格

B.scanf("%c",&cl);//%c

C.scanf(”%c,&cl);

D.cl=getchar();

正确答案:B、C、D

解析:A、输入一个字符,但没有保存下来,后面if中的变量cl

没有值B、输入一个字符,可以跳过空格、tab与回车C、输入一

个字符,并赋值给变量clD、输入一个字符,并赋值给变量cl

2、用for循环语句编程输出A~Z之间的所有大写字母,字母之间以

空格分隔,要求一行输出8个字符。下面的程序有一个空,请选择恰

当的循环语句完善程序。

#include<stdio.h>

intmain()

(

charc;

intcount=0;

printf("%c",c);

count++;

if(count%8==0)〃每8个字符换行

printf("\n");

}

return0;

)

A.for(c=l;c<=26;C++)

B.for(c='a';c<='z';C++)

C.for(c=65;c<=90;C++)

D.for(c='A';c<='Z';C++)

正确答案:C、D

解析:A、如果用此循环,输出语句就要改为printf(“%c,c+7V.l);

与字母字符的ASCII码值对应B、输出的是小写字母,与题意不符C、

65-90是大写字母TV-'Z'的ASCII标准码值,循环从7V的ASCII码值遍

历至Z的ASCII码值,printf(”%c”,c);则输出对应的字母D、可以使

用字符常量做为循环变量的值,从7V遍历至Z,实质上使用的是字符

的ASCII码值参与循环

本题中用字母为循环变量的值比较方便,注意7V与Z上要加单引号才

是字符常量,才有ASCII码值

三、填空题

1、编写函数计算下面多项式的值,并返回值

2f+3N+1

编写main,输入x,调用该函数计算多项式的值并显示结果。

请完善下面的程序:(有2个空,答案一行写一个,不要添加多余的

空格)

#include<stdio.h>

doublef(doublex)

2*x*x+3*x+l;〃返回计算结果

intmain()

doublex;

printf("请输入x:");

scanf(”%lf”,&x);

printf("f(%.2f)的值是%.2f“,x,);〃调用f函

return0;

}

正确答案:return

f(x)

解析:第一个空,f函数是有返回值的,所以,必须有return语句

第二个空,调用函数的格式是:函数名(实参),所以,应写f(x)

2、一个正整数如果恰好等于它的除自身外的因数之和,这个数称为

“完数”。例如,6的因数有1、2、3,且6=1+2+3,因此6是“完数”。

编写判别完数的函数wanshu(intx):功能判断x是否为完数,如果是,

则返回1,不是,则返回0o

编写main。中让x从工循环至1000,并调wanshu函数,如果返回值

为1,则输出该数。

请完善下面的程序:(有3个空,答案一行写一个,不要添加多余的

空格)

#include<stdio.h>

intwanshu(intx)

(

inti,r=0;

for(i=l;i<x;i++)

if()〃判断X能整除i?即判断i是否是X的

因数

r=r+i;〃将因数累加进r中

}

if(r==x)〃判断因数和是否等于x,是则返回1,不是,返回0

return1;

else

return;

)

intmain()

(

inti;

for(i=l;i<=1000;i++)

(

if()〃调用wanshu函数,根据函

数值,判断i是否为完数,

printf("%d是完数\n,i);

}

return0;

)

正确答案:x%i==0

0

wanshu(i)==l

解析:第一个空:r保存因数和,当满足条件时,因数加入r。所以,

条件应该是判断i是否是因数,应填x%i==O

第二个空:题目要求不是完数,返回0。当不满足r==x,即因数和不

是x,不是完数,所以,填0

第三个空:要填的是判断i是完数的条件,满足,就输入i.

在wanshu函数中,当是完数时,返回值是L所以,应该填wanshu(i)==l

3、编写求最大公约数函数gcd:功能是求两数的最大公约数,并返

回该数。

main函数中调用该函数,并输出最大公约数。

请填空完善程序。(有2个空,答案一行写一个,不要添加多余的空

格)

#include<stdio.h>

intgcd(intmjntn)〃求的公约数的函数

(

intr;

r=m;//r是公约数,

初值为m

while((m%r!=0)||(n%r!=0))〃当r不是公约数

时,循环直至找到公约数

_________________________________;//r减小1

returnr;

)

intmain()

(

intmzn;

printf("请输入两个数”);

scanf("%d%d",&m,&n);

printf("最大公约数%€1\e,);〃调用gcd函数

return0;

)

正确答案:r=r・l

gcd(m,n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论