C语言程序设计教程练习题解析_第1页
C语言程序设计教程练习题解析_第2页
C语言程序设计教程练习题解析_第3页
C语言程序设计教程练习题解析_第4页
C语言程序设计教程练习题解析_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

单选题

1、关于C语言中的函数,下列描述正确的是()

A.函数的定义可以嵌套,但函数的调用不可以嵌套

B.函数的定义不可以嵌套,但函数的调用可以嵌套

C.函数的定义和函数的嵌套均不可以嵌套

D.函数的定义和函数的调用均不可以嵌套

答案:B

解析:函数的定义不可以嵌套,但函数的调用可以嵌套

2?、定义一个函数:exce((vl,v2),(v3,v4,v5),v6);在该函数调用时,实参的个数为()

A.3

B.4

C.5

D.6

答案:A

解析:(vl,v2),(v3,v4,v5)和v6一共三个实参

3、关于C语言中print。函数与scanf()函数,下列描述中正确的是()

A.printfO函数可以向任何地方输出数据

B.printf()只向控制台输出数据

C.scanf()只能输入英文字母和数字

D.scanf()函数可以识别输入的空格

答案:B

解析:printf()是向控制台输出的函数

4、在C语言中,内部函数需要添加的关键字是()

A.extern

B.static

C.this

D.auto

答案:B

解析:在定义内部函数时,需要在函数的返回值类型前面添加static关键字(乂称为静

态函数)。

5、当调用时,会调用内部函数

A.当调用时,会调用内部函数

B.当调用时,会调用外部函数

C.当调用时,会调用两次,先调用内部函数再调用外部函数

D.都不调用,会报错

答案:A

解析:当内部函数与外部函数重名时,会优先调用内部函数

6、在C语言中,声明外部函数需要添加的关键字是()

A.extern

B.static

C.this

D.auto

答案:A

解析:声明外部函数的方式是在函数的返回值类型前面添加extern关键字

7、关于C语言中的局部变量,下列描述中错误的是()

A.局部变量就是在函数内部声明的变量

B.局部变量只在函数内部有效

B.全局变量会被屏蔽

C.都不会调用,系统会报错

D.会调用两次,先调用局部变量,再调用全局变量

答案:B

解析:当局部变量与全局变量重名时,全局变量会被屏蔽。

10、在C语言中,关于变量的作用域,下列描述中错误的是()

A.局部变量只在整个函数的运行周期中有效

B.全局变量的作用域为整个程序的运行周期

C.当全局变量与局部变量重名时,局部变量会屏蔽掉全局变量

D.全局变量会覆盖掉所有与它重名的局部变量

答案:D

解析:当全局变量与局部变量重名时,全局变量会被屏蔽掉

11、在C语言中,如果在一个函数的复合语句中定义了一个变量,则该变量()

A.只在该复合语句中有效,在该复合语句外无效

B.在该函数中任何位置都有效

C.在本程序的原文件范围内均有效

D.此定义方法错误,其变量为非法变量

答案:D

解析:?1、2与3错:函数复合语句中定义的变量在该复合语句中引用;但如果函数含有

该变量,则在函数中可以引用该变量

4对:在C++中在复合语句中定义变量为合法,但在C语言中是非法的

12、C语言程序的基本单位是()。

A.程序行

B.语句

C.函数

D.字符

答案:C

解析:函数是C语言程序的基本单位

13、C语言中决定函数返回值的类型的是()。

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

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

C.调用函数时临时

D.定义函数时所指定的函数类型

答案:D

解析:函数的返回值取决于定义函数时指定的返回值类型

14、若有函数调用语句:fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参

的个数是()。

A.3

B.4

C.5

D.6

答案:A

解析:a+b返回一个值,(x,y)返回一个值,fun(n+k,d,(a,b))返回一个值。

15、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是()。

A.inputx,y,z;

B.scanfC%d%d%d/,,&x,&y,&z);

C.scanf("%d%d%d”,x,y,z);

D.read("%d%d%d”,&x,&y,&z);

答案:B

解析:读取键盘输入的数据要用scanfO函数,scant()中的参数要传入变量的地址

16、若变量已正确说明为float类型,要通过语句scanfC/%f%f%f,z,&a,&b,&c);给a赋

予10.0,b赋予22.0,c赋予33.0,不正确的输入形式是()。

A.102233

B.10.0,22.0,33.0

C.10.022.033.0

D.10;22;33

答案:B

解析:用scanfO读取从键盘输入的数据时,中间不能加逗号,要用空格隔开

17、若有定义:intx,y;chara,b,c;并有以下输入数据(此处\u代表空格):1\U2\UA\UB\UC,

那么能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确

程序段是()。

A.scanf(〃x=%dy=%d〃,&x,&y);a=getchar();b=getchar0;c=getchar();

B.scanfC%d%d〃,&x,&y);a=getchar();b=getchar();c=getchar();

C.scanf(,,%d%d%c%c%c,&x,&y,&a,&b,&c);

D.scanf(,,%d%d%c%c%c%c%c%c,&x,&y,&a,&a,&b,&b,&c,&c);

答案:D

解析:空格也会作为一个字符赋给字符变量。

18、对嵌套子程序调用说法正确的是()。

A.外层子程序可以调用所有的内层子程序

B.内层子程序只可以调用包含本身的外层子程序,不可以隔层调用

C.外分程序必须能完全套住内分程序

D.以上说法均不止确

答案:C

19、C语言中函数能否嵌套调用和递归调用?()

A.二者均不可

B.前者可,后者不可

C.前者不可,后者可

D.二者均可

答案:D

解析:两者调用都可以

20、C语言规定,程序中各函数之间()0

A.既允许直接递归调用也允许间接递归调用

B.不允许直接递归调用也不允许间接递归调用

C.允许直接递归调用不允许间接递归调用

D.不允许直接递归调用允许间接递归调用

答案:A

解析:各程序间既可以直接调用也可以间接调用。

21?、有如卜程序:

longfib(intn)

(

if(n>2)

returnfib(n-1)+fib(n-2);

else

return2;

}

voidmain()

printf(z,%d\n/z,fib(3));

该程序的输出结果是()。

A.2

B.4

C.6

D.8

答案:B

解析:向fib()函数传入3时,返回fib(l)+fib(2)的值;向fib()函数传入1和2时,

都返回2,所以fib⑶返回2+2=4。

22、?以下程序的输出结果是()o

longfun(intn)

(

longs;

if(n==l||n==2)

s=2;

else

s=n-fun(n-l);

returns;

)

voidmain()

(

printfC%ld\n",fun(3));

)

A.1

B.2

C.3

D.4

答案:A

解析:fun()函数传入3时,返回3-fun(2);fun()函数传入2时,返回2。所以fun(3)

返回3-2=1o

23、在C语言中,函数的隐含存储类别是()。

A.auto

B.static

C.extern

D.无存储类别

答案:C

解析:为简化编程,C语言中允许在定义外部函数时省略关键字extern。

24、以卜叙述中不止确的是()。

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

B.函数中的形式参数是局部变量

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

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

答案:D

解析:函数内的复合语句中定义的变量仅仅在该复合语句中有效。

25?、以下程序运行后,输出结果是()。

intfunc(inta,intb)

staticintm=0,i=2;

i+=m+l;

m=i+a+b;

returnm;

)

voidmain()

(

intk=4,m=l,p;

p=func(k,in);

printf(〃%d,〃,p);

p=func(k,m);

printf("貌\n",p);

}

A.8,15

B.8,16

C.8,17

D.8,8

答案:C

解析:函数体内的静态局部变量不随函数的调用结束而销毁,而是一直存在。

26?、以下程序的输出结果是()。

intd=l;

intfun(intp)

(

staticintd=5;

d+二p;

printf(z,%d〃,d);

returnd;

)

voidmain()

(

inta=3;

printf(/z%d\n,z,fun(a+fun(d)));

}

A.699

B.669

C.61515

D.6615

答案:C

解析:?首先调用fun(d),将全局变量d=l带入,此时fun()函数内的静态局部变量d的

值是1,d+=pBd的值是6,输出d的值,返回d的值;

然后调用fun(a+6),将局部变量a=3带入,此时fun()函数内的静态局部变量d的值是6,

d+=p后d赋值15,输出d的值,返回d的值。

27、在C语言中,若需一变量只在本文件中所有函数使用,则该变量的存储类别是()。

A.extern

B.register

C.auto

D.static

答案:D

解析:ssiic修饰全局变量时,表示该变量仅在本文件中可使用。

28?、下列程序的输出结果是()o

intb=2;

intfunc(int*a)

(

b+=*a;

returnb;

)

voidmain()

(

inta=2,res=2;

res十二func(&a);

printf(〃%d\n”,res);

}

A.4

B.6

C.8

D.10

答案:B

解析:func()函数中,对全局变量b自增a的值,func()函数返回4;res+=4,res赋值

为6。

29?、请读程序:

voidmain()

(

inta=l,b=2,c=3;

++a;

c+=++b;

(

intb=4,c;

c=b*3;

a+二c;

printf("first%d\n〃,a,b,c);

a+=c;

printf("Seconded,%d,%d\n〃,a,b,c);

printf("third:%d,%d,%d\n〃,a,b,c);

}

该程序的输出是()

A.first:12,4,12Secord:26,4,12third:4,3,6

B.first:14,4,12Second:26,12,12third:26,3,4

C.first:14,4,12Second:26,4,12third:26,3,6

D.first:14,4,12Second:26,6,12third:26,4,6

答案:C

解析:程序运行到第6行时,a=2,b二3,c二6;程序运行到第10行时,a=14,局部变量

b=4,.12;程序运行到第13行时,a=26,局部变量b=4,c=12;程序运行到第15

行时,a=26,b=3,c=6o

30?、以下程序运行后,输出结果是()。

intd=l;

intfun(intp)

intd=5;

d+=p++;

printf(飞d〃,d);

)

intmain()

(

inta=3;

fun(a);

d+=a++;

printfd);

)

A.84

B.99

C.95

D.44

答案:A

解析:fun()函数调用时代入局部变量a的值,fun()函数体内局部变量d自增3,输Hld

的值,即8,fun()函数返回8,此时全局变量d的值不变。d+=a++后,全局变量d

自增3,此时全局变量d的值是4,输出全局变量d的值。

31?、以下程序的输出结果是()。

inta,b;

voidfun()

(

a=100;b=200;

)

voidmain()

(

inta=5,b=7;

fun();

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

)

A.100200

B.57

C.200100

D.75

答案:B

解析:fun()函数改变的是全局变量的值,printf()函数输出的是局部变量的值,fun()

函数不会改变局部变量a、b的值。

多选题

1、在调用外部函数时,下列描述中正确的是()(多选)

A.只要有函数名,就能调用外部函数

B.调用外部函数要包含外部函数所在的头文件

C.外部函数与调用者定义在同一个源文件下

D.在声明外部函数时,外部函数与原函数定义的返回值类型、函数名称和参数列表必须

一致

答案:B,D

解析:外部函数调用时要包含其所在的头文件,当调用者声明了外部函数的原型,也可以

不用包含头文件

判断题

1、局部变量就是在函数内部声明的变量。

答案:true

解析:局部变量就是在函数内部声明的变量。

2、局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量就会

失去作用。

答案:true

解析:局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量

就会失去作用。

3、局部变量就是在函数内部声明的变量,它只在本函数内有效。

答案:true

解析:局部变量就是在函数内部声明的变量,它只在本函数内有效,也就是说,只能在本

函数内使用它。

4、局部变量只有当它所在的函数被调用时才会被使用,当函数调用结束时局部变量还会一

直存在。

答案:false

解析:局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量

就会失去作用。

简答题

1、?请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如

果能,请写出运行结果。

voidfunc(inta,intb)

(

printf(〃%d,z,a+b);

)

voidmain()

(

func(3,2);

printf(〃\rT);

)

答案:5

解析:fun()是一个实现两个数相加的函数,在主函数中调用并传入值,得到两个数的和

2?、请阅读下面的程序,在空白处填写正确的代码,将函数的结果返回给调用者。

intfunc(inta,intb)

intsum=0;

sum=a+b;

)

voidmain()

(

intsum=0;

=func(3,2);

printf(〃两个数相加的结果为%d〃,sum);

}

答案:?returnsum;

sum;

解析:?returnsum;return将函数结果返回

sum;主函数中sum接收函数返回的值

3、?请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如

果能,请写出运行结果。

voidmain()

intnum=100;

printf(u%d,%o,%x\n,J,num,num,num);

}

答案:10014464

解析:printfO函数将十进制数100分别以十进制,八进制,十六进制形式输出。

4?、请阅读卜面的程序,当用户从键盘输入helloworld时,分析程序是否能编绎通过并

正确运行,如果不能,说明原因;如果能,请写出运行结果。

voidmain()

(

charstr[256];

scanf("%s",str);

printf(u%s\nv,str);

}

答案:hello

解析:输入helloworld时,中间的空格对scanf()函数来说是终止符,后面的内容无法

读取。

5?、请阅读下面的程序,在空白处填写正确的代码,实现下列功能。

用户从键盘输入两个整型数据,将两个数据相加输出。

voidmain()

(

inta,b;

t

printf("%d\n”,);

)

答案:?scanf(<<%d%d>,,&a,&b);

a+b;

解析:?键盘输入数据,用scanf()函数;

输入两个数据的和a+b;

6、?请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如

果能,请写出运行结果。

intfunc2(inta,intb)

intc;

c=a*b%3;

returnc;

}

intfund(inta,intb)

(

intc;

a+=a;

b+=b;

c=func2(a,b);

returnc*c;

)

voidmain()

(

intx=11,y=19;

printf(z,thefinalresultis:%d\n〃,fund(x,y));

}

答案:4

解析:x=11,y=19传入funcl()函数,在funcl()函数中经过运算变为22,38,然后

传入给func2()函数,返回运算结果2,funcl()函数收到返回值2以后再经过运算

返回给主调用函数结果为4。

7?、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如

果能,请写出运行结果。

voidfunc2(inta,intb)

(

a=a+10;

b=a+10;

}

voidfunc(inta,intb)

(

a=func2();

b=func2();

}

voidmainO

intx=1,y=10;

fund(x,y);

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

}

答案:x=1,y=10;

解析:将实参传递给形参,只是复制了一份给x,y的值,参数在被调用函数内部改变,不

影响其在调用函数中的值。

8?、请阅读下面的程序,在空白处填写正确的代码,实现下列功能。

用户从键盘输入四个数,比较得出四个数中的最大值并输出。

intmax2(inta,intb)

(

if(a>b){

returna;

else

returnb;

)

)

intmax4(inta,intb,intc,intd)

(

intres;

res=max2(a,b);

res=;

res=max2(res,d);

f

}

voidmain()

inta,b,c,d,max;

printf("请输入四个整数:");

max=max4(a,b,c,d);

printf(/zmax=%d\n〃,max);

)

答案:?max2(res,c);

returnres;

scanf(<<%d%d%d%d",&a,&b,&c,&d);

解析:在max4()函数中,res=max2(a,b)返回的是a,b中的最大值,这个最大值再与c

进行比较,所以res=max2(res,c),返回的较大的值再与d作比较,再将比较得

出的较大的值返回给主调用函数,这个较大的值就是四个数中的最大值。

9?、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如

果能,请写出运行结果。

intadd(intn)

(

if(n==1)

return1;

else

returnn+add(n-1);

)

voidmain()

(

intn=5;

intsum=add(5);

printf(“结果为:%d\n",sum);

}

答案:15

解析:add()函数进行递归调用,传入的参数5,会一直递减相加直到递减至1。

10、?请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如

果能,请写出运行结果。

voidfun(intn)

if(n>0)

printf(〃%d\t〃,n);

fun(-n);

}

)

voidmain()

(

inta=5;

fun(a);

)

答案:54321

解析:fun()函数递归调用,每打印一次就自减再调用一次自己。

11?、请阅读下面的程序,在空白处填写正确的代码,实现下列功能。

用递归方法求出n!。

intfac(intn)

intt;

if()

return1;

else

(

t=;

returnt;

)

}

voidmain()

(

intm,y;

printf(''Enterm:\n");

scanf&m);

if(m<0)

printf(z,InputdataError!\n〃);

else

y=fac(m);

printf(z,\n%d!=%d\n”,m,y);

)

}

答案:?(n==1)||(n==0)

n*fac(n-1)

解析:实现n的阶乘,当n=0或者n=l时,阶乘没有意义,当n>l时,实现阶乘,则为

n*fun(n-l);

12、?请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如

果能,请写出运行结果。

intx=5;

staticvoidcudeO

(

X=x*x*x;

}

voidmainO

cude();

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

)

答案:125

解析:全局变量x,当调用cude()内部函数时,并没有传入参数,没有复制,所以x值的

变化直接改变了x本身的值

13?、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如

果能,请写出运行结果。

first,c文件

intfunc(inta,intb)

(

returna+b;

)

second,c文件

sLeilicinLfunc(inLa,intb)

returnab;

)

voidmain()

(

intx=5,y=2;

printf("%d\n”,func(5,2));

)

答案:3

解析:当内部函数与外部函数重名时,会优先调用内部函数

14?、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如

果能,请写出运行结果。

first,c源文件

intfunc(inta,intb)

returna+b;

}

second,c源文件

externintfunc(inta,intb);

voidmain()

(

intx=5,y=2;

printf("%d\n”,func(5,2));

)

答案:7

解析:在second,c中声明了intfunc(inta,intb);函数原型,可以调用first,c中

的函数。

15?、请阅读下面的程序,在空白处填写正确的代码,实现下列功能。

有一个外部函数,用户输入一个数字,可以实现奇偶数的判断。实现在主函数中调用这个

外部函数。

first,c源文件

voidfunc(intnum)

if(num%2==0)

printf(“这是一个偶数!\n");

)

second,c源文件

9

voidmain()

(

intnum;

scanf(飞d”,&num);

func(num);

)

答案:externvoidfunc(intnum);

解析:调用外部函数,可以包含函数所在的头文件,也可以在本文件中声明函数原型。

16、?请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如

果能,请写出运行结果。

voidshow()

intx=0;

)

voidmain()

(

printf("x的值为:%d\n",x);

}

答案:不能运行

解析:变量x为函数show:)的局部变量,只在show。函数范围内有效,在main。中无法

调用。

17?、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如

果能,请写出运行结果。

intshow()

{

intx=0;

returnx;

}

voidmain()

(

intx=10;

show();

printf(〃x的值为:%d\n〃,x);

)

答案:x的值为:10

解析:main。函数中的x是局部变量,不受show。函数调用的影响。

18、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如

果能,请写出运行结果。

intx=10;

voidmainO

(

intx=100;

printf(“%d”,x);

}

答案:100

解析:当全局变量与局部变量重名时,全局变量会被屏蔽掉。

19?、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如

果能,请写出运行结果。

intx=2;

voidfunc(intx)

(

X=X*X*X;

)

voidmain()

(

func(x);

printf(zz%d\nz/,x);

)

答案:2

解析:全局变量作为实参传递给函数,在函数中的运算并不改变其原来的值。

20、?请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如

果能,请写出运行结果。

intx=l0;

voidshow()

(

intx=20;

printf(z/show()函数中x的值为:%d\n",x);

}

voidmain()

(

intx=30;

printf("main0函数中x的值为:%d\n〃,x);

show();

)

答案:?main()函数中x的值为:30

show。函数中x的值为:20

解析:局部变量只在它所在的函数内部有效,且当全局变量与局部变量重名时,局部变量

会屏蔽掉全局变量

21、?请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因:如

果能,请写出运行结果。

inta,b;

voidfunc0

(

a=100;

b=200;

)

voidmain()

(

inta=5,b=7;

func();

printf(/za=%d,b=%d\n,,,a,b);

}

答案:a=5,b=7

解析:全局变量与局部变量重名时,局部变量会屏蔽掉全局变量

22?、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:用函数求x的绝对

值。

voidmain()

(

intx,y;

scanf(〃%d〃,&x);

printf(〃y=%d\n〃,y);

}

intabs(inta)

(

intb;

if(a>=0)

b二a;

else

答案:?y=abs(x);b=-a;returnb;

解析:abs()函数是求绝对值的函数。

23、?以卜check函数的功能是对value中的值进行四舍五入计算,若计算后的值与ponse

的值相等,则显示“WELLDONE!!”,否则显示计算后的值。请填空。

voidcheck(intponse,floatvalue)

(

intval;

val=;

print(〃计算后的值:%d”,val);

if()

printfC\nWELLD0NE!!\n〃);

else

printf(〃\nSorrythecorrectansweris%d\n,z,val);

)

答案:?(int)((value*10+5)/10)val==ponse

解析:第一个填空处利用float型转int型的规则实现四舍五入的计算;第二个填空处判

断是否计算后的值与ponse的值相等。

24、?请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:求整数numl和num2

的最大公约数,并返回该值。

intgongyue(intnuml,intnum2)

{

inttemp;

while()

(

temp=numl%num2;

numl=num2;

num2=temp;

)

return;

}

答案:?num2!=0numl

解析:循环条件是num2!=0,因为被模数不能为0;nuiil在对num2取模的过程中一直在改

变,最后返回numl的值。

25?、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:根据对x的输入,

求1到x的累加和。

intfun(intn)

(

inti,c;

c=0;

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

c=c+i;

}

voidmain()

intx;

scanf(线d〃,);

printf(〃%d\n〃,fun(x));

)

答案:?returnc;&x

解析:函数fun()中求总和,c是总和变量,最后返回c;

从键盘输入x,则要对scanf()函数传入变量x的地址。

26?、请阅读卜面的程序,在空白处填写止确的代码,该程序的功能是:先输入10个数据

到数组a中,再输入x,然后在a数组中查找与x值相同的元素的所在位置。

voidmain()

(

inta[ll],x,i;

printf(''Enter10integers:Xn^);

for(i=l;;i++)

scanf(〃%d〃,a+i);

printf(z,Enterx:〃);

*a=x;i=10;

while(x!=*(a+i))

if(i>0)

printf("%5d'spositionis:%4d\n”,x,i);

else

printfC%dNotbeenfound!\n',x);

)

答案:?i<=10scanf(飞d〃,&x);break;

27?、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:输入10个整数存

人数组x中,然后计算各元素的和,并将和存入S中。

voidmain()

(

intx[10],i,s;

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

s=0;

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

printf(〃/d〃,s);

)

答案:?scanf(,z%d*,&x[i]);s+=i;

解析:第一个空格从键盘输入兀素的值;

第二个空格将元素存入变量s中;

28、?请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:读入一个两位的正

整数,按字符型形式输出。

voidmain()

(

intn;

scanf();

printf();

}

答案:?〃%d〃,&n〃机〃,n

29、?请阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结

果,否则请说明编译失败的原因。

ttinclude<stdio.h>

intsum(inta)

(

intc=0;

staticintb=3;

c+=l;

b+=2;

returna+b+c;

}

voidmainO

(

inti;

inta=2;

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

printf(〃%d,〃,sum(a));

)

答案:8,10,12,14,16,

解析:sum()函数体中的静态局部变量b会一直存在,其值不随函数调用结束而销毁。

30、编写一个函数,判断一个数是奇数还是偶数,并在主函数中调用。

答案:?#include<stdio.h>

voidfunc(intnum)

(

if(num%2==0)

printf(“该数是偶数”);

else

printf(“该数是奇数”);

}

intmain()

intnum;

scanf(“%d”,&num);

func(num);

return0;

}

解析:?func0函数对传入进来的参数num进行奇偶判断;

主困数中调用funcO函数,传入参数得到判断结果。

31、编写一个函数,实现1T00的相加和,并在主函数中调用。

答案:?#include<stdio.h>

intfunc()

{

intnum,sum=1;

for(num=1;num<=100;num++)

(

sum+=num;

}

returnsum;

}

intmainO

{

intsum=0;

sum=func0;

printf(**sum=%d”,sum);

return0;

}

解析:?func()函数实现卜100的相加和,并将结果返回给调用者.

主函数中的sum接收调用func函数的返回值,并将其打印

32、?请编写一个程序,用户从键盘输入英文字母,如果是大写,将其转换成小写输出;如

果是小写,将其转换成大写输出。

提示:英文字母在计算机中以ASCII码表形式存在。

答案:?#include<stdio.h>

intmain()

charch;

printf(〃请输入英文字母:\n〃);

scanf(〃%c〃,&ch);

if(ch>='A'&&ch<='Z')

printf("%c\n”,ch+32);

elseif(ch>='a'&&ch<='z')

printf(z,%c\n,z,ch-32);

return0;

)

解析:英文字母对应的ASCH码值,大写比对应小写小32

33、请编写一个程序,用户输入一个十进制整数,分别输出其十进制、八进制、十六进制

对应的数值。

答案:?#include<stdio.h>

intmain()

intnum;

scanf(“%d”,&num);

printf(“十进制为:%d\n八进制为:%o\n十六进制为:%x\nw,num,num,num);

return0;

}

解析:十进制输入格式符为国d,八进制输出格式符为加,十六进制输出格式符为歌。

34、请编写一个程序,实现两个数的求和,并打印出来。

答案:?#include<stdio.h>

voidshow(ints)

(

printf("两个数的和为:%d",s);

return;

}

voidadd(inta,intb)

ints=a+b;

show(s);

return;

)

intmain()

(

ints=a+b;

show(s);

return0;

}

解析:add()函数实现两个数相加,show。函数将两个数相加的结果打印出来“

35?、请编写一个程序,用户从键盘随机输入四个数,比较这个四个数得出其中最大值并输

出。

提不:

1)编写一个两个数值比较的函数

2)编写一个四个数值比较的函数,调用这个函数,在该函数中调用两个数值比较的函数

答案:?#include<stdio.h>

intmax2(inta,intb)

if(a>b)(

returna;

else

returnb;

intmax4(inta,intb,intc,intd)

intres;

res=max2(a,b);

res=max2(res,c);

resmax2(res,d);

returnres;

}

intmainO

{

inta,b,c,d,max;

printf(〃请输入四个整数:〃);

scanf(M%d%d%d%d,,,&a,&b,&c,&d);

max=max4(a,b,c,d);

printf(〃max趣d\n”,max);

return0;

}

解析:输入四个数,调用max4()函数,在max4()函数中乂调用max2()函数进行两两比较,

最后得HI最大值,返回给调用函数。

36、?请编写一个程序,计算s=2-2!+3-2!;

提示:

1)编写一个函数计算平方值

2)编写一个函数计算阶乘

答案:?#include<stdio.h>

longfl(intp){

intk;

longr;

longf2(int);

k=p*p;

r=f2(k);

returnr;

}

longf2(intq){

longc=1;

inti;

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

c=c*i;

returnc;

}

intmainO

{

inti;

longs=0;

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

s=s+fl(i);

printf("\ns=%ld\n”,s);

return0;

}

解析:函数fl()实现了计算数值的平方,函数f2()实现了阶乘计算,在fl()中调用f2()

实现了计算表达式的值。

37、?请编写一个程序,用递归方法实现n!。

提示:

1)递归调用是函数自身调用自身的过程

2)每递归调用一次n就要自减一次

答案:?#include<stdio.h>

intadd(intn)

{

if(n==1)

return1;

else

returnn+add(n-1);

}

intmain()

{

intn;

scanf(“%d",&n);

intsum=add(n);

printf(“结果为:%d\n",sum);

return0;

}

解析:add()函数实现递归,每调用一次n要减1.

38?、请编写一个程序,求出口的n次方。

提示:编写递归函数求解。

答案:?#include<stdio.h>

intfunc(intm,intn)

{

if(n==1)

returnm;

else

returnm*func(m,n-1);

}

intmain()

(

intm,n,sum;

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

sum=func(m,n);

printf(〃%d\n〃,sum);

return0;

}

解析:func()实现递归调用,每乘上一个m,再用nT调用函数,实现m的n次方。

39?、假设有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后

每个月又生一对兔子,假如兔子都存活,问一年之后(第13个月)月兔子总数为多少对?

提示:兔子的规律为数列1,1,2,3,5,8,13,-

答案:?#incl

温馨提示

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

评论

0/150

提交评论