正确语句: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
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 {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 intm,i; m=a[0]; for(i=1;i 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 {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(\