《C语言程序设计练习题含程序及参考答案》由会员分享,可在线阅读,更多相关《C语言程序设计练习题含程序及参考答案(49页珍藏版)》请在金锄头文库上搜索。
1、C 语 言 练 习 题(所提供的源程序均采用自定义函数方式解决,如不采用函数方式,也可直接在main函数中借鉴该思想编程,因时间有限,所有程序未能一一验证,仅供参考使用)1、定义一个函数intfun(inta,intb,intc) ,它的功能是:若a,b,c能构成等边三角 形函数返回3,若能构成等腰三角形函数返回 2,若能构成一般三角形函数返回1, 若不能构成三角形函数返回00#includeintfun(inta,intb,intc)if(a+bc&b+ca&a+cb)if(a=b&b=c)return3;elseif(a=b|b=c|a=c)return2;elsereturn1; els
2、ereturn0;voidmain()inta,b,c,shape;printf(nInputa,b,c:);scanf(%d%d%d,&a,&b,&c);printf(na=%d,b=%d,c=%dn,a,b,c);shape=fun(a,b,c);printf(nnTheshape:%dn,shape);2、编写一个程序,将两个变量的值交换,例如变量a中的值原为3, b中的值原为8, 程序运行后a中的值为8, b中的值为3。#includevoidfun(int*x,int*y)(intt;t=*x;*x=*y;*y=tvoidmain()(inta=3,b=8;printf(%d%dn,
3、a,b);fun(&a,b);printf(%d%dn,a,b);,最小值放在变量c中。3、从键盘输入3个数,将最大值放在变量a中 例如,输入的数为:551234,输出结果应当是:a=,b=,c= o#includevoidfun(float*p,float*q,float*s)(floatk;if(*p*q)k=*p;*p=*q;*q=k;if(*q*s)k=*s;*s=*p;*p=k;if(*p*q)k=*p;*p=*q;*q=k;voidmain()floata,b,c;printf(Inputabc:);scanf(%f%f%f,&a,&b,&c);printf(a=%,b=%,c=%
4、nn”,a,b,c);fun(&a,&b,&c);printf(a=%,b=%,c=%nn,a,b,c);4、编写函数fun(intn),它的功能是:计算正整数n的所有因子(1和n除外)之 和作为函数值返回。例如:n=120W,函数值为239。#include#include intfun(intn) (inti,s=0;for(i=2;in;i+) if(n%i=0)s=s+i;returns;voidmain()/* 主函数 */(voidNONO();printf(%dn,fun(120);NONO();voidNONO()/*请在此函数内打开文件,输入测试数据,调用 fun函数, 输出
5、数据,关闭文件。*/FILE*wf;wf=fopen(,w);fprintf(wf,%dn,fun(120);fclose(wf);5、计算s,并输出111S=1+1+1+21+2+31+2+3+mn通过键盘输入,例如:若n的值为11时,则函数值为:#include#includefloatfun(intn)(inti;floats=,h=1;for(i=2;i=n;i+)(h=h+i;s=s+h;returns;voidmain()(intn;floats;printf(nPleaseenterN:);scanf(%d,&n);s=fun(n);printf(theresultis:%f,s
6、);6、将一个整数中的每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:时,t中的数为:7531。#includevoidfun(longs,long*t)(intd;longs1=1;*t=0;while(s0)(d=s%10;if(d%2!=0)(*t=d*s1+*t;s1=s1*10;s/=10;main()(longs,t;printf(nPleaseenters:);scanf(%ld,&s);fun(s,&t);printf(Theresultis:%ldn,t);7、计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值
7、从键盘传 入,若k的值为500,则输出4622。#includeintfun(intk)(intm=0,mc=0,j;while(k=1)&(mc10)(if(k%13=0)|(k%17=0)(m=m+k;mc+;k-;returnm;voidmain()(printf(%dn,fun(500);8、已知一个数列的前三项分别为0, 0, 1,以后的各项都是其相邻的前三项之和 计算并输出该数列前n项的平方根之和sum,例如,当n=10时,程序的输出结果 应为:。#include#includedoublefun(n)(doublesum,s0,s1,s2,s;intk;sum=;if(n=2)s
8、um=;s0=;s1=;s2=;for(k=4;k=n;k+)s=s0+s1+s2;sum+=sqrt(s);s0=s1;s1=s2;s2=s;returnsum;voidmain()intn;printf(InputN=);scanf(%d,&n);printf(%fn,fun(n);9、编写一个程序,从键盘输入 项 输出大于ml紧随m勺素数#includeintfun(intm)(inti,k;for(i=m+1;i+)for(k=2;k=i)return(i);voidmain()intn;printf(nPleaseentern:);scanf(%d,&n);printf(%dn,fu
9、n(n);10、判断两个整数 林口门是否互质(即是否有公共的因子)(rn 1, nwl)。方法是:用2到t (t取mFDn中较小的那个数)之间的数分别去除 麻On,若mFDn能同时被某个数除尽,则nffin不互质;否则它们互质。例如,若输入187和85,则应输出No (表示它们不互质,它们有公因子17)。若 输入89和187,则应输出Yes (表示它们互质)。#includeintIsThat(intm,intn)intk,t,mk=1;t=m;if(mn)t=n;for(k=2;k=t;k+)if(m%k=0&n%k=0)mk=0;break;returnmk;voidmain()intm,
10、n;printf(nPleaseenter2numbers:n);scanf(%d%d”,&m,&n);if(IsThat(m,n)printf(Yesn);elseprintf(Non);11、将十进制正整数m专换成k进制数(2 k 9)并输出(m k从键盘输入)例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)#include voidTrans(intm,intk) ( intaa20,i , j; for(i=0;m;i+) ( aai=m%k;m/=k;for(j=i-1;j=0;j-) printf(%d,aaj); voidmain()( intb,n
11、;printf(nPleaseenteranumberandabase:n);scanf(%d%d”,&n,&b); Trans(n,b);12、统计从键盘输入的50个实数中有多少个正数、多少个负数、多少个零#includevoidfun(int*zs,int*fs,int*l,floataa)(inti;for(i=0;i0)(*zs)+;if(aai0)(*fs)+;if(aai=0)(*l)+;voidmain()(floatnum50;inti,czs,cfs,cl;czs=cfs=cl=0;printf(nPleaseenter50floatnumbers:n);for(i=0;i5
12、0;i+)scanf( f,&numi);fun(&czs,&cfs,&cl,num);printf(n正数:d,负数:d,零:dn,czs,cfs,cl);13、计算并输出方程 太+Y=1989的所有整数解#includevoidfun()(intx,y;for(x=1;x=44;x+)for(y=1;y=44;y+)if(x*x+y*y=1989)printf(x=%d,y=%dn ,x,y); voidmain()(printf( “方程 xA2+yA2=1989 的整数解为:n ); fun();14、从键盘输入10个整数,求出其中的最大值。#includeintfun(intaa)(
13、intm,i;m=aa0;for(i=1;im)m=aai;returnm;voidmain()(intnum10,i;printf(请从键盘输入10个整数:n );for(i=0;i10;i+)scanf( d ,&numi);printf(“n 最大的数是:dn,fun(num);15、从键盘输入n值,输出如右图形。(例如n=5时)12345#include1123411123voidfun(intn)1111a11111inti,j;for(i=1;i=n;i+)for(j=1;j=i;j+) printf(3d ,1);for(j=2;j=n+1-i;j+) printf(3d ,j);printf(n” );)voidmain()intn;printf( n请输入图形的行数:”);scanf( d ,&n);fun(n);16、使用函数的方式,计算如下