您好,欢迎访问三七文档
1.编写一个程序,输入a,b,c三个值,输出其中最大者:main(){inta,b,c,e,f;scanf(%d,%d,%d,&a,&b,&c);e=max(a,b);f=max(e,c);printf(max=%d,f);}intmax(intx,inty){intz;if(xy)z=x;elsez=y;return(z);}2.设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积.用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字.程序为:main(){floatr,h,j,c,area1,area2,V1,V2;scanf(%f,%f,&r,&h);j=3.14;c=z*j*r;area1=j*r*r;area2=4*j*r*r;V1=4.0/3*j*r*r*r;V2=j*r*r*h;printf(c=%.2f,area1=%.2f,area2=%.2f,V1=%.2f,V2=%.2f,C,area1,area2,V1,V2);}3.输入一个华氏温度,要求输出摄氏温度.公式为c=5/9(F-32)输出要有文字说明,取两位小数.nain()floatc,F;scanf(%f,&F);c=5.0/9.0*(F-32);printf(c=%.2f,c);}4.符号常量的使用:#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf(total=%d,total);}5.输出单个字符:#includestdio.hmain(){chara,b,c;a='B';b='O';c='Y';putchar(a);putchar(b);putchar(c);}6.输入单个字符:#includestdio.h或#includestdio.hmain(){charc;c=getchar();putchar(c);}7.输入三角形的三边长,求三角形面积.已知求三角形面积的公式为area=[s(s-a)(s-b)(s-c)]的二分之一次方其中s=(a+b+c)/2程序如下:#includemain.hmain(){floata,b,c,s,area;scanf(%f,%f,%f,&a,&b,&c);s=1.0/2*(a+b+c);area=sprt(s*(s-a)*(s-b)*(s-c));printf(a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n,a,b,c,s);printf(area=%7.2f\n,area);}8.从键盘输入一个大写字母,要求改用小写字母输出.#includestdio.hmain(){charc1,c2;c1=getchar();printf(%c,%d\n,c1,c1);c2=c1+32;printf(%c,%d\n,c2,c2);}9.输入两个实数,按代数值由小到大的次序输出这两个数.程序如下:main(){floata,b,t;scanf(%f,%f,&a,&b);if(ab){t=a;a=b;b=t;}printf(%5.2,%5.2f,a,b);}10.输入三个数字,要求按从小到大的顺序输出.程序为:main(){floata,b,c,t;scanf(%f,%f,%f,&a,&b,&c);if(ab){t=a;a=b;b=t;}if(ac){t=a;a=c,c=t}if(bc){t=b;b=c;c=t}printf(%5.2f,%5.2f,%5.2f,a,b,c);}11.有一函数:当x<0时,y=-1;当x=0时,y=0;当x>0时,y=1.编一程序,输入一个x的值,输出y值.main(){intx,y;scanf(%d,&x);if(x0)y=-1;elseif(x==0)y=0;elsey=1;printf(x=%d,y=%d\n,x,y);}12.输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换.然后输出最后得到的字符.main(){charch;scanf(%c,&ch);ch=(ch='A'&&ch='Z')?(ch+32):ch;printf(%c,ch);}13.写程序,判断某一年是否闰年.main(){intyear,leap;scanf(%d,&year);if(year%4==0){if(year%100==0){if(year%400==0)leap=1;elseleap=0;}elseleap=1;}elseleap=0;if(leap)printf(|%dis,year);elseprintf(%disnot,year);printf(aleapyear.\n);}14.求ax*x+bx+c=0方程的解.(若a=0,不是二次方程;若b*b-4ac=0,有两个相等的实根;b*b-4ac0,有两个不等实根.b*b-4ac0,有两个共轭复根.#includemath.hmain(){floata,b,c,d,disc,x1,x2,realpart,imagpart;scanf(%f,%f,%f,&a,&b,&c);printf(Theequation);if(fabs(a)=le-6)printf(isnotaquadratic);else{disc=b*b-4ac;if(fabs(disc)=le-6)printf(hastwoequalroots:%8.4\n,-b/(2*a));elseif(discle-6){x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);printf(hasdistinctrealroots:%8.4fand%8.4f\n,x1,x2);}else{realpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);printf(hascomplexroots:\n);printf(%8.4f+%8.4fi\n,repart,imagpart);printf(%8.4f-%8.4fi\n,repart,imagpart);}}}15.绘制余弦曲线在屏幕上用“*”显示0~360度的余弦函数cos(x)曲线*问题分析与算法设计如果在程序中使用数组,这个问题十分简单。但若规定不能使用数组,问题就变得不容易了。关键在于余弦曲线在0~360度的区间内,一行中要显示两个点,而对一般的显示器来说,只能按行输出,即:输出第一行信息后,只能向下一行输出,不能再返回到上一行。为了获得本文要求的图形就必须在一行中一次输出两个“*”。为了同时得到余弦函数cos(x)图形在一行上的两个点,考虑利用cos(x)的左右对称性。将屏幕的行方向定义为x,列方向定义为y,则0~180度的图形与180~360度的图形是左右对称的,若定义图形的总宽度为62列,计算出x行0~180度时y点的坐标m,那么在同一行与之对称的180~360度的y点的坐标就应为62-m。程序中利用反余弦函数acos计算坐标(x,y)的对应关系。#includestdio.h#includemath.hvoidmain(){doubley;intx,m;for(y=1;y=-1;y-=0.1)/*y为列方向,值从1到-1,步长为0.1*/{m=acos(y)*10;/*计算出y对应的弧度m,乘以10为图形放大倍数*/for(x=1;xm;x++)printf();printf(*);/*控制打印左侧的*号*/for(;x62-m;x++)printf();printf(*\n);/*控制打印同一行中对称的右侧*号*/}}16.绘制余弦曲线和直线在屏幕上显示0~360度的cos(x)曲线与直线f(x)=45*(y-1)+31的迭加图形。其中cos(x)图形用“*”表示,f(x)用“+”表示,在两个图形相交的点上则用f(x)图形的符号。*问题分析与算法设计本题可以在上题的基础上进行修改。图形迭加的关键是要在分别计算出同一行中两个图形的列方向点坐标后,正确判断相互的位置关系。为此,可以先判断图形的交点,再分别控制打印两个不同的图形。#includestdio.h#includemath.hvoidmain(){doubley;intx,m,n,yy;for(yy=0;yy=20;yy++)/*对于第一个y坐标进行计算并在一行中打印图形*/{y=0.1*yy;/*y:屏幕行方向坐标*/m=acos(1-y)*10;/*m:cos(x)曲线上y点对应的屏幕列坐标*/n=45*(y-1)+31;/*n:直线上y点对应的列坐标*/for(x=0;x=62;x++)/*x:屏幕列方向坐标*/if(x==m&&x==n)printf(+);/*直线与cos(x)相交时打印“+”*/elseif(x==n)printf(+);/*打印不相交时的直线图形*/elseif(x==m||x==62-m)printf(*);/*打印不相交时的cos(x)图形*/elseprintf();/*其它情况打印空格*/printf(\n);}}17.绘制圆在屏幕上用“*”画一个空心的圆*问题分析与算法设计打印圆可利用图形的左右对称性。根据圆的方程:R*R=X*X+Y*Y可以算出圆上每一点行和列的对应关系。*程序说明与注释#includestdio.h#includemath.hvoidmain(){doubley;intx,m;for(y=10;y=-10;y--){m=2.5*sqrt(100-y*y);/*计算行y对应的列坐标m,2.5是屏幕纵横比调节系数因为屏幕的行距大于列距,不进行调节显示出来的将是椭圆*/for(x=1;x30-m;x++)printf();/*图形左侧空白控制*/printf(*);/*圆的左侧*/for(;x30+m;x++)printf();/*图形的空心部分控制*/printf(*\n);/*圆的右侧*/}}18.分形图案绘制的原则是,先按某一方向画一条直线,然后在此线段上找到一系列节点,在每一个节点处向左、右偏转60度各画一条分支。节点位置和节点处所画分支的长度比值按0.618分割#defineg0.618#definePAI3.14#includegraphics.h#includemath.h#includestdio.h#includeconio.hfloatthita=60.0;voidgrow(intx,inty,floatlenth,floatfai);voidmain(){intgm,gd;detectgraph(&gd,&gm);initgraph(&gd,&gm,\\tc\\bgi);grow(300,300,280.0,90.0);getch();closegraph();}voidgrow(intx,inty,floatlenth,floatfai){intx1,y1;intnx,ny,count;floatnlenth;x1=x+lenth*cos(fai*PAI/180.0);y1=y-lenth*sin(fai*PAI/180.0);line(x,y,x1,y1);if(lenth10)return;nlenth=lenth;nx=x;ny=y;for(count=0;count7;count++){nx=nx+nlenth*(1-g)*cos(fai*PAI/180.0);ny=ny-nlenth*(1-g)*sin(fai*PAI/180.0);grow(nx,ny,nlenth*(1-g),fai+thita);grow(nx,ny,nlenth*(1-g),fai-thita);nlenth*=g;}}19.分形图案2先画一个大三角形,连接三角形的三条边的中点,得到四个较小的三角形,然后将外围的三个小三角形经过与大三角形相
本文标题:47C语言编程举例
链接地址:https://www.777doc.com/doc-4441709 .html