《C语言程序设计习题与上机指南》答案(8)

2019-08-30 16:32

正确语句:intfac(intn);inti,f=1;for(i=1;i<=n;i++)f=f*i;

2.#include“stdio.h” intfunc(inta,intb) {

return(a+b); }

main()

{intx=2,y=5,z=8,r; r=func(func(x,),z); printf(“%d\\n”,r); }

错误语句:r=func(func(x,),z); 正确语句:r=func(func(x,y),z); 3.#include“stdio.h” void(intk) {

if(k>0)fun(k-1); elsereturn(2)

printf(“%d”,k); }

main() {

intw=5; fun(w); printf(“\\n”); }

错误语句:void(intk)elsereturn(2) 正确语句:voidfun(intk)elsereturn(2); 4.#include“stdio.h”

voidfun(i,j) {

intx=7;

printf(“i=%d;j=%d;x=%d\\n”,i,j,x); }

main() {

inti=2,x=5,j=7; fun(j,6);

printf(“i=%d;j=%d;x=%d\\n”,i,j,x); }

错误语句:voidfun(i,j)运行结果:i=7;j=6;x=7 正确语句:voidfun(inti,intj)i=2;j=7;x=5 5.#include“stdio.h”

inta,b; voidfun()

{inta,b;

a=100;b=200;} main() {

inta=5,b=7; fun(a,b);

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

错误语句:inta,b;fun(a,b);运行结果:57 正确语句:inta,b;fun(); 6.#include“stdio.h”

main()

{intm=4,n=2,k; k=fun(m,n,k); printf(“%d\\n”,k); }

fun(intm,intn)

{return(m*m*m-n*n*n);}

错误语句:k=fun(m,n,k);运行结果:56 正确语句:k=fun(m,n);

7.#include“stdio.h”

main() {

chara=A; intb=13; a=fun(a,b); putchar(a); }

charfun(chara,intb) {chark; k=a+b; return(k); }

错误语句:chara=A;运行结果:N 正确语句:chara=?A?;

8.#include“stdio.h” fun()

{staticintx=5; x++; (x); }

main() {inti,x;

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

x=fun();

printf(“%d\\n”,x); }

错误语句:(x);运行结果:8 正确语句:return(x); 9.#include“stdio.h”

fun(inta) {intx=5; x+=a++;

printf(“%d”,x); }

main()

{inta=3,x=1; f(a); x+=a++;

printf(“%d\\n”,x); }

错误语句:f(a);运行结果:84 正确语句:fun(a);

四.编程题

1.写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。 #include voidmain() {

intprime(int); intn;

printf(“请输入一个整数:”); scanf(“%d”,&n);

if(prime(n))printf(“\\n%d是一个素数。\\n”,n); elseprintf(“\\n%d不是一个素数。\\n”,n); }

intprime(intn) {intflag=1,i;

for(i=2;i

2.编一个函数求n!。主函数求6!+7!+8! #include intfac(intn) {intc,i; c=1; if(n>=0)

{for(i=1;i<=n;i++) c=c*i;

}

return(c);} voidmain() {ints;

s=fac(6)+fac(7)+fac(8); printf(“%d”,s);} 运行结果:46080

3.编一个函数求n个数中最大值.主函数求10个数中最大值. #include intmaxm(inta[],intn) {

intm,i; m=a[0];

for(i=1;ivoidmain() {

inta[10],i,big; for(i=0;i<10;i++) scanf(“%d”,&a[i]); big=maxm(a,10);

printf(“%d”,big);}

4.用递归法将一个整数n转换成字符串,例如输入483,应输出字符串“483”。n的位数不确定,可以是任意位数的整数。 #include voidmain()

{voidconvert(intn); intnumber;

printf(“请输入一个整数:”); scanf(“%d”,&number); printf(“输出:“);

if(number<0){putchar(‘-‘);number=-number;}/*负数时先输出一个‘-’号*/ convert(number); putchar(‘\\n’); }

voidconvert(intn) { inti;

if((i=n/10)!=0)convert(i);

putchar(n+’0’);}/*一个数+‘0’的ASCII码值为该数的ASCII码值*/ /*先输出个位,再通过递归输出十位,以此类推*/

5.编写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。两个整数由键盘输入。 #include

voidmain()

{ inthcf(int,int); intlcd(int,int,int); intu,v;

scanf(“%d,%d”,&u,&v);

printf(“最大公约数=%d\\n”,hcf(u,v));

printf(“最小公倍数=%d\\n”,lcd(u,v,hcf(u,v))); }

inthcf(intu,intv) { intt,r;

if(v>u){t=u;u=v;v=t;}/*让u>v*/

while((r=u%v)!=0){v=r;} return(v);}

/*大数除小数的余数如果不为0,则将余数赋给v,否则如果大数整除小数时,v中是两个数中小的数。V中的数则为最大公约数。*/ intlcd(intu,intv,inth) { return(u*v/h);}

6.定义一个函数,根据给定的三角形三条边长,函数返回三角形面积。 #include“stdio.h” #include“math.h”

floatss(inta,intb,intc) {floats,p; p=(a+b+c)/2;

s=sqrt(p*(p-a)*(p-b)*(p-c)); return(s); }

voidmain() {

floata,b,c,area;

scanf(“%f,%f,%f”,&a,&b,&c); if(a+b>c&&b+c>a&&c+a>b) {area=ss(a,b,c);

printf(“area=%.2f\\n”,area);} else

printf(“它不是一个三角形”); }

7.编写一个函数,输入一个4位数字,要求输出这4个数字字符,使每两个数字字符间空一个空格。如输入2008,则应输出“2008”。 #include\#include\voidmain() {charstr[80];

voidinsert(charstr[]);

printf(\


《C语言程序设计习题与上机指南》答案(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:矩阵练习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: