c语言程序设计试题汇编pdf 谭浩强,C语言程序设计试题汇编

c语言程序设计试题汇编pdf 谭浩强,C语言程序设计试题汇编

c语言程序设计问题

一、选择题(一题一分,共20分) )。

1 .在c语言中,main函数在源程序中的位置()。

a .必须先做

b .必须在系统调用的库函数之后

c .可任选

d .必须做最后一件事

2 .在以下四个选项中,合法浮点数的选项均为() :

A. 1e 1 5e-9.4 03e2

B. -.60 12e-4 -8e5

C. 123e 1.2e-.4 2e-1

D. -e3 .8e-4 5.e-0

在a=-14、b=3情况下,条件式ab? 答: b 1的值为。

A. -14 B. -13 C. 3 D. 4

int n,i=1,j=2; 是否执行语句n=ij? ( I ) j; I和j的值为()。

a.1、2b.1、3c.2、2d.2和3

5 .使用()来确定两个字符串s1和s2是否相等

a.if(S1==S2 ) a.if(S1==S2 ) ) ) ) ) )。

c.if(strcmp(S1,s2 ) )

d.if(strcmp(S1,s2 )==0) ) ) ) ) ) ) ) ) ) ) )。

6 .以下正确陈述是()。

a .函数定义可以嵌套,但函数调用不能嵌套。

b .函数定义不能嵌套,但函数调用可以嵌套。

c .函数定义和函数调用不能嵌套。

d .函数定义和函数调用可以嵌套。

7 .在c语言中,以下函数的非法描述是() :

a .将数组名称作为形状参数时,可以通过改变形状参数组的值来改变实际参数组的值。

b .允许函数递归调用。

c .函数形式参数的作用范围限定在定义的函数内。

d .子函数必须在主函数之前。

8 .如果某个函数中的复合句中定义了变量,以下正确的说法是() )。

a .这个变量只在这个复合句中有效

b .此变量在此函数中有效

c .此变量在本程序范围内有效

d .此变量为非法变量

9 .以下正确的函数格式为() :

a.doublefun(intx,int y ) { z=x y; 返回z; () ) ) ) )。

b.fun(intx,y ) { int z; 返回z; () ) ) ) )。

c.fun(x,y ) { int x,y; 双z; z=x y; 返回z; () ) ) ) )。

d.doublefun(intx,int y ) {double z; z=x y; 返回z; () ) ) ) )。

10 .以下程序的输出结果为()。

#includestdio.h

#definef(y ) 8.19-y

#defineprint(a ) printf(\’%d”,) ( a ) )

语音主(语音)。

{

int x=2;

打印( x * f )3);

() ) ) ) )。

A. 10 B. 13 C. 11 D .错误报告

11 .以下程序中编译和运行的结果正确的是()。

a.a.voidmain(void ) )。

{

union

{

int n;

float x;

} comm={1};

printf(\’%d \’,comm.n );

() ) ) ) )。

b.b.voidmain(void ) )。

{

union

{

int n;

float x;

} comm={12.5};

printf(\’%f \’,comm.x );

() ) ) ) )。

c.c.voidmain(void ) )。

{

union

{

float x;

int n;

} comm={12.5}

printf(\’%f \’,comm.x );

() ) ) ) )。

d.d.voidmain(void ) )。

{

union

{

int n;

float x;

( } comm=5;

printf(\’%d \’,comm.n );

() ) ) ) )。

12 .设置定义: int a=1,*p=a; float b=2.0; char c=\’A \’; 以下非法运算为()。

A. p; B. a–; C. b; D. c–;

13 .在以下程序中调用scanf函数在变量a中输入数值的方法是错误的。 那个错误的原因是()。

main ( ) )

{

int *p,*q,a,b;

p=a;

打印( inputa:);

scanf(\’%d \’,*p );

……

() ) ) ) )。

A. *p表示指针变量p的地址

B. *p表示变量a的值,而不是变量a的地址

C. *p表示指针变量p的值

D. *p只能用于指示p是指针变量

14 .如果num、a、b、c都是int型变量,则执行公式num=(a=4,b=16,c=32 ); 后num的值为()。

A. 4 B. 16 C. 32 D. 52

15 .如果要求a1、a2、c1、c2的值分别为10、20、a、b,则从第一列输入数据时,正确的数据输入方式是()、(注: _表示空格) )。

int al、a2、char c1、c2;

scanf(\’%d%c%d%c )、a1、c1、a2、c2 );

a.10a _ 20 _ b.10 _ a _ 20 _ BC.10a 20bd.10a 20 _ b

16 .如果有说明:对int a[10] a数组元素的正确引用是()。

A. a[10] B. a[3.5] C. a[5-3] D. a[-1]

17 .在c语言中,一维数组定义如下:

类型说明符数组名称;

A. [整数常数表达式] B. [表达式]

C. [整数常数] D. [整数表达式]

18 .能够正确初始化一维数组a的语句如下。

a.ina [ 10 ]=( 0,0.0,0,0 );

B. int a[10]={}; C. int a[]={0};

D. int a[10]={10*1};

19 .下一段()。

x=-1;

do

{

x=x*x;

() ) ) ) )。

while (! x;

a .死循环b .循环执行两次

循环执行一次丙. D . 有语法错误

20 .以下关于do-while循环的不准确描述是() :

A. do-while的循环体至少执行一次

B. do-while循环以do开始,以while结束。 不能在while (表达式)之后写分号

do-while循环体始终需要将while之后的表达式的值归零( false )

D. do-while的循环体可以是复合句

二、是非判断问题(每题1分,共15分) )。

1 .在c语言中,标识符中的字母一般规定区分大小写。

2 .控制台的标准输入设备一般是指键盘。

如果使用while和do-while循环,则初始化循环变量的操作必须在循环语句之前处理。

continue语句在整个循环中的作用是终止整个循环的执行。

5 .关系表达式的值为0或1。

6 .如果有说明,int a[3][4]={0},只有元素a[0][0]才能得到初始值0。

7 .字符串作为一维数组存储在内存中。

8 .字符数组的元素中存储字符。

9 .字符数组中的最后一个字符必须是“0”。

10 .如果形参是指针变量,则实参必须是数组名称。

11 .用数组名称创建函数参数时,传递的是数组的值。

12 .可以在任何函数的任何表达式中使用全局变量。

13 .函数可以带回整数值、字符值、实数值等,也可以带回指针类型的数据。

14 .式I和I在任何情况下功能都完全相同。

15 .在赋值表达式中,赋值编号左边的变量和右边的表达式的值的数据类型可以不同。

三、多选题(一题一分,共五分) ) ) ) ) ) ) ) )。

1 .要求if之后的一对圆在括号中表示a不等于0的关系时,无法正确表示该关系

的公式为()。

A.a0

b . A

C.a=0

D.a

E.a!=0

2 .选举所有合法常数(。

A.3e22.5

B.-e-3

C.-.1e-1

d.\’基本\’

E.\’\\045 \’

F.0fd

G.0xfdaL

H.e8

I.\’\\\\”

是J.\’\\”

3 .以下关于函数原型的说法有误:

)1)变量的定义)和“声明”是一回事,函数的“定义”和“声明”也是一回事。

)2)声明函数原型时,允许只写参数的类型,而不是参数的名称。

)3)如果在定义函数时不指定函数类型,函数类型将被隐式指定为int类型。

(4)调用一个函数时,函数名、实参数、实参数类型必须与函数原型一致。

)5)如果被调函数的定义出现在主调函数之前,则可以不声明。

)6)所有函数都可以互相调用。

)7)在c语言中,所有函数都是平行的,一个函数不能从属于另一个函数。 也就是说,不能嵌套定义。

)8)如果函数没有返回值,则在定义时可以省略函数类型。

)在c语言中,任何函数的定义都不允许为空。

( 10 ) c语言规定,向实变元的变形元传递数据是“传递值”。

4 .以下指南的相关描述中,请选择5个正确的描述:

(1)指针即地址。

)2)请首先分配一个值,然后再使用指针。

)3)如果指针p指向数组a的起始地址,则p[i]和a[i]可以参照数组元素,因此这里p和a是等价的。

) int *p指示定义了指向int类型数据的指针变量p。

)5)数组的指针是指数组的起始地址。

(6) int a[4],*p=a被定义的情况下,p的后面p指的是数组a所占存储器的第2个字节。

(7)将指针变量作为函数参数使用,采取“传递值”的方式。

)8)同一类型的指针可以相减。

)9)指针变量和许多变量一样可以进行四则运算。

( 10 )指针p指向数组元素a(2),指向a )4)时,执行p=p*2即可。

5 .在以下关于排列的叙述中,五种最准确的说法是:

)1)声明数组变量时,必须指定大小。

)2)必须用恒等式说明数组变量的大小。

)3)初始化数组时,大括号中的数据数必须与数组的大小相同。

(4)变量定义inta [3]={ 0,1,2 },b[3]; 中选择所需的族。 b=a,可以使数组b的各元素和a的各元素相等。

)5)在c语言中,可以将字符串作为字符数组处理。

)6)字符数组char c[11]; 要为其赋值,请单击c=\’china \’; 请参阅。

(7) chars[15]={\’Iama(0Student\’}; 那么strlen(s )的值为6。

)在c语言中,按每行存储二维排列中要素排列的顺序。

)在c语言中,不能初始化局部数组变量。

( 10 )宣言时初始化数组需要指定数组大小。

四、程序执行结果问题(各问题4分,共20分) )。

1.(4分) )。

下一个程序的执行结果是()。

#includestdio.h

语音主(语音)。

{

int i;

char a[]=\’Time \’,b[]=\’Tom \’;

for(I=0; a[i]!=\’\\0\’b[i]!=\’\\0 \’; I )

if(a(I )==b ( I ) )

if(a ) I ) ) a ) I )=( z ) ) printf )、a(I )-32 );

ELSEprintf(\’%c \’,a[i] 32 );

elseprintf(\’* );

() ) ) ) )。

2.( ) 4分)。

下一个程序段的执行结果为()。

i=1; s=3

do

{

s=i;

if(s%7==0) continue;

else i;

( whlie ) s15;

printf(\’%d \’,I );

3.( )四分。

运行时输入( 5999 )将生成以下程序的执行结果(保留小数点后一位) )。

语音主(语音)。

{

int x;

float y;

scanf(\’%d \’,x );

if(x=0x=2999 ) y=18 ) 0.12*x;

if(x=3000x=5999 ) y=36 0.6*x;

if(x=6000x=10000 ) y=54 0.3*x;

printf(\’%6.1f \’,y );

() ) ) ) )。

4.( ( 4分) )。

以下程序的执行结果为()。

语音主(语音)。

{

int a=1,k;

for(k=0; k3; k ) printf(m ),f1 ( a ) )

() ) ) ) )。

是intF1(intx )

{

静态输入z=3,y=0;

y;

z;

返回( XYZ );

() ) ) ) )。

5.( ) 4分)。

以下程序的功能计算函数f(x,y,z )=( xy )/( x-y ) ) z y )/( z-y ) )的值,请填写空白栏。

#includestdio,h

#includemath.h

浮体fun1( float,float );

语音主(语音)。

{

float x,y,z,sum;

scanf(\’%f%f )、x、y和z );

sum=fun1( ) fun1);

printf(sum=%f(n ),sum );

() ) ) ) )。

浮动函数1 (浮动,浮动b ) )。

{

浮动编号;

num=a/b;

return num;

() ) ) ) )。

五、填空题(每题2分,共20分)。

1 .用1./6=1/(11 )1/) 22 )1/) 33 )的公式起作用.

求出的近似值,直到最后一项的值小于10e-6。

#include stdio.h

#include math.h

语音主(语音)。

{

long i=1;

_________; pi=0;

wile(I*I=10e6) pi=____; I; () ) ) ) )。

pi=sqrt(6.0*pi;

printf(pi=.6f(n ),pi );

() ) ) ) )。

2 .下一个程序的功能是将以下给定的字符以其矩阵形式读入数组str1,输出矩阵编号之和为3的数组元素。

语音主(语音)。

{

char str1[4][3]={\’A \’,\’ b \’,\’ c \’,\’ d \’,\’ e \’,\’ f \’,\’ h \’,\’ I \’,\’ j \’,\’ k \’,\’ I \’

(;

int x、y、z;

for(x=0; x4; x )

for(y=0; ________; y )

{

z=x y;

if(_______ ) ( printf )、str1[x][y];

() ) ) ) )。

() ) ) ) )。

3 .据了解,以下程序的功能是用递归方法计算学生年龄,第一个学生年龄最小,为10岁,其余学生比一个大2岁,求出第五个学生的年龄。

递归公式如下。

age(1)=10

age(n )=age(n-1 ) (2) N1 ) ) ) ) ) ) ) ) ) ) )。

#includestdio.h

输入(输入)。

{

int c;

if(n==1) c=10;

else c=_________;

返回c;

() ) ) ) )。

4 .下一个程序的功能是确定输入的年份是否是闰年。

语音主(语音)。

{

输入年,是;

scanf(\’%d \’,year );

if(year@0==0) yes=1;

ELSEif(________ ) yes=1;

else ____________;

if(yes ) printf ) \’ %dis \’,year;

elseprintf(\’%disnot \’,year );

打印( aleapyear.\\ n );

() ) ) ) )。

5 .将实现以下程序: 输入三个整数,按从大到小的顺序输出。

语音主(语音)。

{

int x,y,z,c;

scanf(%d%d%d )、x、y和z );

if(_______ ) ) { c=y; y=z; z=c; () ) ) ) )。

if(_______ ) ) c=x; x=z; z=c; () ) ) ) )。

if(_______ ) ) c=x; x=y; y=c; () ) ) ) )。

printf(\’%d,%d,%d \’,x,y,z );

() ) ) ) )。

六、填空题(每题1分,共20分) )。

1 .在c语言中,一个浮点型数据占用内存的字节数为() )字节一个双精度型数据占用内存的字节数为()字节。

2 .如果有定义,则char c=\’\\010 \’; 变量c中包含的字符数为()。

3. C源程序的基本单位是()。

4.c语言(以16位PC为例,一个char型数据在存储器中所占字节数);

一个int类型数据在内存中所占的字节数为()。

5 .现有定义:

int m;

float n,k;

char chl,ch2;

为了使m=3,n=6.5,k=12.6,ch1=\’a \’,ch2=\’A \’,输入数据的格式如下。

3 6.5 12.6aA

相应的scanf语句为(); 请参阅。

6 .执行下一段时,x的值为()。

i=10; I; x= i;

7 .如果将a、b、c都作为int型变量,则执行以下for循环时,c的值为() )。

for(a=1,b=5; a=b; a ) c=a b;

8 .以下do-while语句中循环体的执行次数为()。

a=10;

b=0;

do { b=2; a-=2 b; ( while ) a=0;

9 .假设x和y都是int型变量,则以下for循环中scanf语句的可执行次数最大()。

for(x=0,y=0; y!=123×3; x )

Scanf(\’%d \’,y );

10 .如有以下定义和案文:

int *p[3],a[9],I;

for(I=0; i3; I ) p(I )=a(3*I );

那么,*p[0]是数组元素(); *(p[1]1是数组元素) )。

11 .假设a=3,b=4,c=5,则公式a||b cb==c的值为()。

12 .进行逻辑和运算的运算符是()。

13.a=6、b=4、c=2时,公式! ( ( a-b ) c-1b c/2的值为) )。

14 .下一段中循环体的执行次数为(次)。

for(I=1,s=0; i11; i=2) s=i;

15 .如有以下定义和案文:

inta [4]={ 0,1,2,3 },*p;

p=a[2];

那么*–p的值是()。

16 .在执行下一段后,s的值为() )

inta [ ]={ 5,3,7,2,1,5,3,10 },s=0,k;

for(k=0; k8; k=2)

s=*(ak;

17 .执行以下段,m的值为() ) ) ) ) ) ) ) ) ) ) ) )。

inta [ ]={ 7,4,6,3,10 },m,k,*ptr;

m=10;

ptr=a[0];

for(k=0; k5; k=2)

m=((* ) ptrk ) m )? *(ptrk ):m;

答案:

一、选题( 20分)。

1.~5.CBACD 6.~10.BDADB

11.~15.CABCC 16.~20.CACCB

二、是非判断问题( 15分) )。

……………………。

三.多选题( 5分)。

1.ABC2. ce gij3. adfhi4. abde H5.be GHI

四.程序执行结果问题( 20分)。

1. t*M

2. 8

3. 3635.4

4. 6 8 10

5. z y,z-y^x y,x-y

五.程序填补问题( 20分)。

1? doublepi1.0/(I*I ) ) ) ) )) ) )。

2 )) y3z==2

3? age(n-1 ) 2

4? year%4==0yeaar0!=0是=0

5? zyzxyx

六.填空题( 20分)

1.(4/)8/

2. 1/1个

3? 函数

4. 1 /一2 /

5 )scanf(\’%d%f%f%c%c ),m,n,k,ch1,ch2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )

6. 12

7. 10

8.(3)9)3 ) 10 )a[0]a[4]

11. 112. 13. 1.14. 5

15. 1

16. 16

17. 6