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

下载本文档

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

文档简介

1、精品文档单选题1、关于 C 语言中的函数,下列描述正确的是()A. 函数的定义可以嵌套,但函数的调用不可以嵌套B函数的定义不可以嵌套,但函数的调用可以嵌套C函数的定义和函数的嵌套均不可以嵌套D函数的定义和函数的调用均不可以嵌套答案:B解析:函数的定义不可以嵌套,但函数的调用可以嵌套2、定义一个函数:exce(v1, v2), (v3,v4,v5),v6); 在该函数调用时,实参的个数为()个A.3B.4C.5D.6答案:A解析:(v1, v2),(v3,v4,v5)和v6 一共三个实参3、关于C语言中print()函数与scanf()函数,下列描述中正确的是()A. printf() 函数可以

2、向任何地方输出数据B. printf() 只向控制台输出数据C. sca nf()只能输入英文字母和数字D. sca nf()函数可以识别输入的空格答案: B解析: printf() 是向控制台输出的函数4、在C语言中,内部函数需要添加的关键字是()A. externB. staticC. thisD. auto答案: B解析:在定义内部函数时,需要在函数的返回值类型前面添加static关键字(又称为静态函数)。5、当调用时,会调用内部函数A. 当调用时,会调用内部函数B. 当调用时,会调用外部函数C. 当调用时,会调用两次,先调用内部函数再调用外部函数D都不调用,会报错答案: A解析:当内部

3、函数与外部函数重名时,会优先调用内部函数6、 在C语言中,声明外部函数需要添加的关键字是()A. externB. staticC. thisD. auto答案: A 解析:声明外部函数的方式是在函数的返回值类型前面添加 extern 关键字7、关于C语言中的局部变量,下列描述中错误的是()A局部变量就是在函数内部声明的变量B. 局部变量只在函数内部有效C局部变量只有当它所在的函数被调用时才会被使用D. 局部变量一旦被调用,其生存周期持续到程序结束答案: D解析:当函数调用结束时局部变量就会失去作用&关于C语言中的全局变量,下列描述中正确的是()A全局变量的作用域一定比局部变量的作用域

4、范围大B静态类别变量的生存周期贯穿于整个程序的运行期间C函数的形参都属于全局变量D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值答案:B解析:选项 1 不对:如果程序中只有一个主函数,则在整个程序运行中,局部变量都在起 作用;选项3不对:除了 C+的引用类型参数,所有函数的形参都是局部变量;选项 4 不对: static 变量定义时就存储地全局区,初始化为0;9、 当全局变量与局部变量重名时,那么在调用时()A局部变量会被屏蔽B全局变量会被屏蔽C都不会调用,系统会报错D会调用两次,先调用局部变量,再调用全局变量答案: B解析:当局部变量与全局变量重名时,全局变量会被屏蔽

5、。10、 在C语言中,关于变量的作用域,下列描述中错误的是()A. 局部变量只在整个函数的运行周期中有效B. 全局变量的作用域为整个程序的运行周期C当全局变量与局部变量重名时,局部变量会屏蔽掉全局变量D全局变量会覆盖掉所有与它重名的局部变量答案: D解析:当全局变量与局部变量重名时,全局变量会被屏蔽掉11、在C语言中,如果在一个函数的复合语句中定义了一个变量,则该变量()A. 只在该复合语句中有效,在该复合语句外无效B. 在该函数中任何位置都有效C在本程序的原文件范围内均有效D.此定义方法错误,其变量为非法变量答案: D解析: 1、 2 与 3 错:函数复合语句中定义的变量在该复合语句中引用;

6、但如果函数含有该 变量,则在函数中可以引用该变量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. 3B. 4C. 5D. 6答案: A

7、解析:a+b返回一个值,(x,y)返回一个值,fun(n+k,d,(a,b)返回一个值。15、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是()。A. input x,y,z;B. scanf("%d%d%d",&x,&y,&z);C. scanf("%d%d%d",x,y,z);D. read("%d%d%d",&x,&y,&z);答案: B解析:读取键盘输入的数据要用scanf()函数,scanf()中的参数要传入变量的地址16、 若变量已正确说明为

8、float类型,要通过语句 scanf("%f %f %f",&a,&b,&c);给a赋予10.0, b赋予22.0,c赋予33.0,不正确的输入形式是()。A. 10 22 33B. 10.0,22.0,33.0C. 10.0 22.0 33.0D. 10; 22; 33答案: B解析:用scanf()读取从键盘输入的数据时,中间不能加逗号,要用空格隔开17、 若有定义: int x,y; char a,b,c; 并有以下输入数据(此处 u 代表空格) : 1u2uAuBuC , 那么能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋

9、字符C的正确程 序段是( )。A. scanf("x=%d y=%d",&x,&y);a=getchar();b=getchar();c=getchar();B. scanf("%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,&

10、;a,&b,&b,&c,&c);答案: D解析:空格也会作为一个字符赋给字符变量。18、对嵌套子程序调用说法正确的是()。A外层子程序可以调用所有的内层子程序B内层子程序只可以调用包含本身的外层子程序,不可以隔层调用C. 外分程序必须能完全套住内分程序D. 以上说法均不正确答案:C19、C语言中函数能否嵌套调用和递归调用?()A. 二者均不可B. 前者可,后者不可C. 前者不可,后者可D. 二者均可答案: D解析:两者调用都可以20、C语言规定,程序中各函数之间()。A. 既允许直接递归调用也允许间接递归调用B. 不允许直接递归调用也不允许间接递归调用C. 允许

11、直接递归调用不允许间接递归调用D. 不允许直接递归调用允许间接递归调用答案: A解析:各程序间既可以直接调用也可以间接调用。21 、有如下程序:long fib(int n)if (n>2)return fib(n-1)+fib(n-2);else return 2;void main()printf("%dn",fib(3); 该程序的输出结果是( )。A. 2B. 4C. 6D. 8答案: B解析:向fib()函数传入3时,返回fib(1)+fib(2)的值;向fib()函数传入1和2时,都返回2, 所以fib(3)返回2+2=4。22、以下程序的输出结果是()。

12、long fun(int n)long s;if (n=1 | n=2) s=2;else s=n-fun(n-1);return s;void main()printf("%ldn", fun(3);A. 1B. 2C. 3D. 4 答案: A解析:fun()函数传入3时,返回3-fun(2) ;un()函数传入2时,返回2。所以fun(3)返回3-2=1。23、在C语言中,函数的隐含存储类别是()。A. autoB. staticC. externD. 无存储类别答案: C解析:为简化编程,C语言中允许在定义外部函数时省略关键字extern。24、 以下叙述中不正确的是

13、()。A. 在不同的函数中可以使用相同名字的变量B. 函数中的形式参数是局部变量C. 在一个函数内定义的变量只在本函数范围内有效D. 在一个函数内的复合语句中定义的变量在本函数范围内有效答案:D 解析:函数内的复合语句中定义的变量仅仅在该复合语句中有效。25、 以下程序运行后,输出结果是()。int func(int a, int b)static int m=0,i=2;i+=m+1; m=i+a+b;return m;void main()int k=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("

14、;%dn",p);A. 8,15B. 8,16C. 8,17D. 8,8答案: C解析:函数体内的静态局部变量不随函数的调用结束而销毁,而是一直存在。26、以下程序的输出结果是()。int d=1;int fun(int p)static int d=5;d+=p;printf("%d ",d);return d;void main()int a=3;printf("%d n",fun(a+fun(d);A. 6 9 9B. 6 6 9C. 6 15 15D. 6 6 15答案: C解析:首先调用fun(d),将全局变量d=1带入,此时fun(

15、)函数内的静态局部变量 d的值是 1, d+=p 后 d 的值是 6,输出 d 的值,返回 d 的值;然后调用fun(a+6),将局部变量a=3带入,此时fun()函数内的静态局部变量d的值是6,d+=p 后 d 赋值 15,输出 d 的值,返回 d 的值。27、在C语言中,若需一变量只在本文件中所有函数使用,则该变量的存储类别是()。A. externB. registerC. autoD. static答案: D解析: static 修饰全局变量时,表示该变量仅在本文件中可使用。28、 下列程序的输出结果是()。int b=2;int func(int *a)b += *a;return

16、b;void main()int a=2, res=2;res += func(&a); printf("%dn",res);A. 4B. 6C. 8D. 10答案: B解析:func()函数中,对全局变量b自增a的值,func()函数返回4; res+=4, res赋值为6。29、请读程序: void main() int a=1,b=2,c=3;+a;c+=+b;int b=4,c;c=b*3;a+=c;printf("first:%d,%d,%dn",a,b,c);a+=c;printf("Second:%d,%d,%dn&quo

17、t;,a,b,c); printf("third:%d,%d,%dn",a,b,c);该程序的输出是( )A. first: 12,4,12 Second: 26,4,12 third: 4,3,6B. first: 14,4,12 Second: 26,12,12 third: 26,3,4C. first: 14,4,12 Second: 26,4,12 third: 26,3,6D. first: 14,4,12 Second: 26,6,12 third: 26,4,6答案: C解析:程序运行到第6行时,a=2, b=3,c=6;程序运行到第10行时,a=14,局部

18、变量b=4, c=12;程序运行到第13行时,a=26,局部变量b=4, c=12;程序运行到第15行时, a=26, b=3, c=6。30、以下程序运行后,输出结果是( )。int d=1;int fun(int p)int d=5;d+=p+;printf("%d",d);int main()int a=3;fun(a);d+=a+;printf("%dn",d);A. 84B. 99C. 95D. 44答案: A解析: fun() 函数调用时代入局部变量 a 的值, fun() 函数体内局部变量 d 自增 3,输出 d 的 值,即8, fun()

19、函数返回8,此时全局变量d的值不变。d+=a+后,全局变量d自增 3,此时全局变量 d 的值是 4,输出全局变量 d 的值。31、以下程序的输出结果是()。int a, b;void fun()a=100; b=200;void main()int a=5, b=7;fun();printf("%d%d n",a,b);A.100200B.57C. 200100D. 75答案: B解析:fun()函数改变的是全局变量的值,printf()函数输出的是局部变量的值,fun()函数不会改变局部变量 a、b 的值。多选题1、在调用外部函数时,下列描述中正确的是()(多选)A.只要

20、有函数名,就能调用外部函数B调用外部函数要包含外部函数所在的头文件C. 外部函数与调用者定义在同一个源文件下D在声明外部函数时,外部函数与原函数定义的返回值类型、函数名称和参数列表必须一致答案: B, D解析:外部函数调用时要包含其所在的头文件,当调用者声明了外部函数的原型,也可以 不用包含头文件判断题1、局部变量就是在函数内部声明的变量。答案: true 解析:局部变量就是在函数内部声明的变量。2、局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量就会 失去作用。答案: true 解析:局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量 就会失去作

21、用。3、局部变量就是在函数内部声明的变量,它只在本函数内有效。答案: true 解析:局部变量就是在函数内部声明的变量,它只在本函数内有效,也就是说,只能在本 函数内使用它。4、局部变量只有当它所在的函数被调用时才会被使用,当函数调用结束时局部变量还会一 直存在。答案: false 解析:局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量 就会失去作用。简答题1、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果 能,请写出运行结果。void func(int a, int b)printf(" %d",a + b);void

22、 main()func(3,2); printf("n");答案: 5解析: fun() 是一个实现两个数相加的函数,在主函数中调用并传入值,得到两个数的和2、请阅读下面的程序,在空白处填写正确的代码,将函数的结果返回给调用者。 int func(int a, int b)int sum = 0;sum = a + b;;void main()int sum = 0;= func(3,2);printf(" 两个数相加的结果为 %d",sum);答案: return sum;sum ;解析: return sum;return 将函数结果返回sum ;

23、主函数中 sum 接收函数返回的值3、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果 能,请写出运行结果。void main()int num = 100;printf(“ %d, %o,n” ,num,num,num);答案: 100 144 64解析: printf() 函数将十进制数 100 分别以十进制,八进制,十六进制形式输出。4、请阅读下面的程序,当用户从键盘输入hello world 时,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。void main()char str256;scanf( “ %s” ,str);p

24、rintf(“n%”s,str);答案: hello解析:输入hello world时,中间的空格对scanf()函数来说是终止符,后面的内容无法读取。5、请阅读下面的程序,在空白处填写正确的代码,实现下列功能。 用户从键盘输入两个整型数据,将两个数据相加输出。void main()int a,b;Jprintf(“n%”d ,);答案: scanf( “%d%”d ,&a,&b);a + b;解析:键盘输入数据,用scanf()函数;输入两个数据的和 a + b;6、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果 能,请写出运行结果。int fu

25、nc2(int a, int b)int c;c = a * b % 3;return c;int func1(int a, int b)int c; a += a; b += b;c = func2(a, b); return c * c;void main()int x = 11, y = 19;printf("the final result is:%dn", func1(x, y);答案: 4解析:x = 11,y = 19传入func1()函数,在func1()函数中经过运算变为22 , 38,然后传入给func2()函数,返回运算结果2, func1()函数收到

26、返回值2以后再经过运算返回给主调 用函数结果为 4。7、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果 能,请写出运行结果。void func2(int a, int b)a = a + 10;b = a + 10;void func(int a, int b)a = func2();b = func2();void main()int x = 1, y = 10; func1(x,y);n” ,x, y);答案: x = 1, y = 10;解析:将实参传递给形参,只是复制了一份给 x,y 的值,参数在被调用函数内部改变,不 影响其在调用函数中的值。8、请阅读下

27、面的程序,在空白处填写正确的代码,实现下列功能。 用户从键盘输入四个数,比较得出四个数中的最大值并输出。int max2(int a, int b)if (a > b)return a;elsereturn b;int max4(int a, int b, int c, int d)int res;res = max2(a, b);res =;res = max2(res, d);void main()int a, b, c, d, max;printf(" 请输入四个整数: ");Jmax = max4(a, b, c, d); printf("max=%

28、d n", max);答案: max2(res,c);return res;scanf( “ %d%d%d%”d ,&a,&b,&c,&d);解析:在max4()函数中,res = max2(a,b)返回的是a,b中的最大值,这个最大值再与c进行比较,所以res = max2(res,c),返回的较大的值再与d作比较,再将比较得出的较大的值返回给主调用函数,这个较大的值就是四个数中的最大值。9、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果 能,请写出运行结果。int add(int n)if (n = 1)return

29、1;elsereturn n + add(n - 1);void main()int n = 5;int sum = add(5);printf( “结果为 :%dn ” ,sum);答案: 15解析: add() 函数进行递归调用,传入的参数5,会一直递减相加直到递减至 1。10、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果 能,请写出运行结果。void fun(int n)if (n>0)printf("%dt", n);fun(-n);void main()int a = 5;fun(a);答案: 5 4 3 2 1解析: fun

30、() 函数递归调用,每打印一次就自减再调用一次自己。11、请阅读下面的程序,在空白处填写正确的代码,实现下列功能。用递归方法求出 n! 。int fac(int n)int t;if( )return 1;elset = ;return t;void main()int m, y;printf("Enter m : n");scanf("%d", &m);if (m<0)printf("Input data Error!n"); else y = fac(m); printf("n%d!= %d n"

31、, m, y);答案: (n = 1) | (n = 0)n*fac(n - 1)解析:实现 n 的阶乘,当 n =0 或者 n=1 时,阶乘没有意义,当 n>1 时,实现阶乘,则为 n*fun(n-1);12、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果 能,请写出运行结果。int x = 5;static void cude()x = x*x*x;void main()cude();printf("x = %dn", x);答案: 125解析:全局变量 X,当调用cude()内部函数时,并没有传入参数,没有复制,所以X值的变化直接改

32、变了 x 本身的值13、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果 能,请写出运行结果。first.c 文件int func(int a, int b)return a + b;second.c 文件static int func(int a, int b)return a -b;void main()int X = 5, y = 2;printf(“n%”d,func(5, 2);答案: 3解析:当内部函数与外部函数重名时,会优先调用内部函数14、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果 能,请写出运行结果。first.c

33、 源文件int func(int a, int b)return a + b;second.c 源文件extern int func(int a, int b);void main()int x = 5, y = 2;printf( “n%”d ,func(5, 2);答案: 7解析:在 second.c 中声明了 int func(int a, int b); 函数原型,可以调用 first.c 中的函数。15、请阅读下面的程序,在空白处填写正确的代码,实现下列功能。有一个外部函数, 用户输入一个数字, 可以实现奇偶数的判断。 实现在主函数中调用这个外 部函数。first.c 源文件void

34、 func(int num)if(num %2 = 0)printf( “这是一个偶数 !n ” );second.c 源文件Jvoid main()int num;scanf( “ %d” ,&num);func(num);答案: extern void func(int num); 解析:调用外部函数,可以包含函数所在的头文件,也可以在本文件中声明函数原型。16、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果 能,请写出运行结果。void show()int x = 0;void main()printf("x 的值为: %dn",

35、 x);答案:不能运行解析:变量x为函数show()的局部变量,只在 show()函数范围内有效,在main()中无法调用。17、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果 能,请写出运行结果。int show()int x = 0; return x;void main()int x = 10;show();printf("x 的值为: %dn", x);答案: x 的值为: 10解析:main()函数中的x是局部变量,不受 show()函数调用的影响。18、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果 能

36、,请写出运行结果。int x = 10;void main()int x = 100;printf(“ %d” ,x);答案: 100 解析:当全局变量与局部变量重名时,全局变量会被屏蔽掉。19、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果 能,请写出运行结果。int x = 2;void func(int x)x;void main()func(x);printf("%dn", x);答案: 2 解析:全局变量作为实参传递给函数,在函数中的运算并不改变其原来的值。20、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;

37、如果 能,请写出运行结果。int x=10;void show()int x=20;printf("show() 函数中 x 的值为: %dn",x);void main()int x=30;printf("main() 函数中 x 的值为: %dn",x);show();答案: main() 函数中 x 的值为: 30show() 函数中 x 的值为: 20 解析:局部变量只在它所在的函数内部有效,且当全局变量与局部变量重名时,局部变量 会屏蔽掉全局变量21、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果 能,请写出运行结

38、果。int a, b;void func()a = 100;b = 200;void main()int a = 5, b = 7;func();printf("a = %d, b = %dn", a, b);答案: a = 5, b = 7解析:全局变量与局部变量重名时,局部变量会屏蔽掉全局变量22、请阅读下面的程序, 在空白处填写正确的代码, 该程序的功能是: 用函数求 x 的绝对值。 void main()int x,y;scanf("%d",&x);printf("y=%dn",y);int abs(int a)int

39、 b;if (a>=0) b=a;else答案: y=abs(x); b=-a; return b;解析:abs()函数是求绝对值的函数。23、以下 check 函数的功能是对 value 中的值进行四舍五入计算,若计算后的值与 ponse 的 值相等,则显示“ WELL DONE”!,否则显示计算后的值。请填空。void check(int ponse, float value)int val;val = ;print(" 计算后的值: %d", val);if ()printf("n WELL DONE!n");elseprintf("

40、;nSorry the correct answer is %dn",val);答案: (int)(value*10 + 5)/10)val = ponse解析:第一个填空处利用 float 型转 int 型的规则实现四舍五入的计算;第二个填空处判断 是否计算后的值与 ponse 的值相等。24、请阅读下面的程序, 在空白处填写正确的代码, 该程序的功能是: 求整数 num1 和 num2 的最大公约数,并返回该值。int gongyue(int num1, int num2)int temp;while ()temp = num1 % num2;num1 = num2;num2 =

41、 temp;return ;答案: num2!=0 num1解析:循环条件是 num2 !=0,因为被模数不能为 0; num1 在对 num2 取模的过程中一直在 改变,最后返回 num1 的值。x 的输入,求25、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:根据对1到x的累加和。int fun(int n)int i,c;c=0;for (i=1;i<=n;i+) c=c+i;void main()int x;scanf("%d", );printf("%dn",fun(x);答案: return c;&x解析:函数fun

42、()中求总和,c是总和变量,最后返回c;从键盘输入X,则要对scanf()函数传入变量x的地址。26、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:先输入数组a中,再输入x,然后在a数组中查找与x值相同的元素的所在位置。 void main()int a11,x,i;printf("Enter 10 integers:n");for (i=1; ;i+)scanf("%d",a+i);printf("Enter x:");*a=x;i=10;while (x!=*(a+i)if (i>0) printf("

43、%5d's position is:%4dn",x,i);else printf("%d Not been found!n",x);答案: i<=10scanf("%d",&x);break;27、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:输入 数组x中,然后计算各元素的和,并将和存入S中。void main()int x10,i,s;10 个数据到10 个整数存入for (i=0;i<10;i+)s=0;for (i=1; i<10; i+)printf("%d",s);答

44、案: scanf("%d",&xi); s+=i;解析:第一个空格从键盘输入元素的值;第二个空格将元素存入变量 s 中;28、请阅读下面的程序, 在空白处填写正确的代码,该程序的功能是:读入一个两位的正整 数,按字符型形式输出。void main()int n;scanf();printf();答案: "%d",&n "%c",n29、请阅读下面的程序, 分析代码是否能够编译通过, 如果能编译通过, 请列出运行的结果, 否则请说明编译失败的原因。#include<stdio.h>int sum(int a)

45、int c=0;static int b=3;c+=1;b+=2;return a+b+c;void main()int i;int a=2;for (i=0; i<5; i+)printf("%d,", sum(a);答案: 8,10,12,14,16,解析:sum()函数体中的静态局部变量b会一直存在,其值不随函数调用结束而销毁。30、编写一个函数,判断一个数是奇数还是偶数,并在主函数中调用。答案: #include <stdio.h>void func(int num)if(num %2 = 0)printf( “该数是偶数” );elseprint

46、f( “该数是奇数” );int main()int num;scanf( “ %d” ,&num);func(num);return 0;解析: func() 函数对传入进来的参数num 进行奇偶判断;主函数中调用 func() 函数,传入参数得到判断结果。31、编写一个函数,实现1-100 的相加和,并在主函数中调用。答案: #include <stdio.h>int func()int num, sum = 1;for(num = 1; num <= 100; num+) sum += num;return sum;int main()int sum = 0;s

47、um = func();printf( “ sum = %d ” ,sum);return 0;解析:func()函数实现1-100的相加和,并将结果返回给调用者。主函数中的sum接收调用func函数的返回值,并将其打印32、请编写一个程序,用户从键盘输入英文字母,如果是大写,将其转换成小写输出;如果 是小写,将其转换成大写输出。提示:英文字母在计算机中以ASCII码表形式存在。答案: #include <stdio.h>int main()char ch;printf(" 请输入英文字母: n");scanf("%c", &ch);

48、if (ch >= 'A' && ch <= 'Z') printf("%cn", ch + 32);else if (ch >= 'a' && ch <= 'z')printf("%cn", ch - 32);return 0;解析:英文字母对应的 ASCII码值,大写比对应小写小 3233、 请编写一个程序,用户输入一个十进制整数,分别输出其十进制、八进制、十六进制 对应的数值。答案: #include <stdio.h>

49、;int main()int num;scanf( “ %d” ,&num);printf( “十进制为: %dn 八进制为: %on 十六进制为: %xn” ,num,num,num); return 0;解析:十进制输入格式符为 d,八进制输出格式符为 o,十六进制输出格式符为 x。34、请编写一个程序,实现两个数的求和,并打印出来。答案: #include <stdio.h>void show(int s)printf(" 两个数的和为: %d", s);return;void add(int a, int b)int s = a + b;show

50、(s); return;int main()int s = a + b;show(s);return 0;解析:add()函数实现两个数相加,show()函数将两个数相加的结果打印出来。35、请编写一个程序, 用户从键盘随机输入四个数, 比较这个四个数得出其中最大值并输出。 提示:1) 编写一个两个数值比较的函数2) 编写一个四个数值比较的函数,调用这个函数,在该函数中调用两个数值比较的函数答案: #include <stdio.h>int max2(int a, int b)if (a > b) return a;else return b;int max4(int a,

51、int b, int c, int d)int res;res = max2(a, b);res =max2(res,c);res = max2(res, d);return res;int main()int a, b, c, d, max;printf(" 请输入四个整数: ");scanf( “ %d%d%d%”d ,&a,&b,&c,&d);max = max4(a, b, c, d);printf("max=%d n", max);return 0;m ax2 ()函数进行两两比较,解析:输入四个数,调用max4

52、()函数,在max4()函数中又调用最后得出最大值,返回给调用函数。36、请编写一个程序,计算s = 2A2! + 3人2!;提示:1) 编写一个函数计算平方值2) 编写一个函数计算阶乘答案: #include <stdio.h>long f1(int p)int k;long r;long f2(int);k = p*p;r = f2(k);return r;long f2(int q)long c = 1;int i;for (i = 1; i <= q; i+) c = c*i;return c;int main()int i;long s = 0;for (i = 2

53、; i <= 3; i+) s = s + f1(i);printf("ns=%ldn", s);return 0;解析:函数f1()实现了计算数值的平方,函数f2()实现了阶乘计算,在f1()中调用f2()实现了计算表达式的值。37、 请编写一个程序,用递归方法实现n!。提示:1 ) 递归调用是函数自身调用自身的过程2) 每递归调用一次 n 就要自减一次 答案: #include <stdio.h> int add(int n)if (n = 1)return 1;elsereturn n + add(n - 1);int main()int n ;sc

54、anf(“ %d” ,&n);int sum = add(n);printf( “结果为 :%dn ” ,sum);return 0;解析:add()函数实现递归,每调用一次n要减1.38、 请编写一个程序,求出m 的 n 次方。 提示:编写递归函数求解。答案: #include <stdio.h>int func(int m, int n)if (n = 1)return m;else return m*func(m, n - 1);int main()int m, n,sum;scanf("%d%d", &m, &n);sum = func(m, n);printf("%dn", sum);return 0;解析:func()实现递归调用,每乘上一个m,再用n-1调用函数,实现m的n次方。39、 假设有一对兔子, 从出生后第 3 个月起每个月都生一对兔子, 小兔子长到第三个月后每 个月又生一对兔子,假如兔子都存活,问一年之后(第 13 个月)月兔子总数为多少对 ? 提示:兔子的规律为数列 1, 1 , 2, 3, 5,

温馨提示

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

评论

0/150

提交评论