语言编程举例_第1页
语言编程举例_第2页
语言编程举例_第3页
语言编程举例_第4页
语言编程举例_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、编写一个程序,输入a,b,c三个值,输出其中最大者:main() int a,b,c,e,f;scanf(%d,%d,%d,&a,&b,&c);e=max(a,b);f=max(e,c);printf(max=%d,f);int max(int x,int y) int z;if (xy)z=x;else z=y;return(z);设圆半径r1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积.用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字.程序为:main()float r,h,j,c,area1,area2,V1,V2;scanf(%f,%

2、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);输入一个华氏温度,要求输出摄氏温度公式为c()输出要有文字说明,取两位小数nain()float c,F;scanf(%f,&F);c=5.0/9.0*(F-32);printf(c=%.2f,c);4.符号常量的使用:#define PRICE 30main()int num,total;num

3、=10;total=num*PRICE;printf(total=%d,total);5.输出单个字符:#include main() char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);6.输入单个字符:#include 或 #includestdio.hmain() char c;c=getchar();putchar(c);7.输入三角形的三边长,求三角形面积.已知求三角形面积的公式为area=s(s-a)(s-b)(s-c)的二分之一次方其中s=(a+b+c)/2 程序如下:include main()float a,b,c,

4、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.2fn,a,b,c,s);printf(area=%7.2fn,area);8.从键盘输入一个大写字母,要求改用小写字母输出#include main()char c1,c2;c1=getchar();printf(%c,%dn,c1,c1);c2=c1+32;printf(%c,%dn,c2,c2);9.输入两个实数,按代数值由小到大的次序输出这两个数.程序如下:ma

5、in()float a,b,t;scanf(%f,%f,&a,&b);if(ab)t=a;a=b;b=t;printf(%5.2,%5.2f,a,b);10.输入三个数字,要求按从小到大的顺序输出程序为:main()float a,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=tif(bc)t=b;b=c;c=tprintf(%5.2f,%5.2f,%5.2f,a,b,c);11.有一函数:当x时,y;当x时,y;当x时,y编一程序,输入一个x的值,输出y值main() int x,y;scanf(%d,&x)

6、;if(x=A & ch0,有两个不等实根.b*b-4ac0,有两个共轭复根.#includemain()float a,b,c,d,disc,x1,x2,realpart,imagpart;scanf(%f,%f,%f,&a,&b,&c);printf(The equation);if(fabs(a)=le-6)printf(is not a quadratic);elsedisc=b*b-4ac;if(fabs(disc)le-6)x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printf(has distinct real roots:%

7、8.4f and %8.4fn,x1,x2);elserealpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);printf(has complex roots:n);printf(%8.4f+%8.4fin,repart,imagpart);printf(%8.4f-%8.4fin,repart,imagpart);15.绘制余弦曲线在屏幕上用“*”显示0360度的余弦函数cos(x)曲线*问题分析与算法设计 如果在程序中使用数组,这个问题十分简单。但若规定不能使用数组,问题就变得不容易了。 关键在于余弦曲线在0360度的区间内,一行中要显示两个点,而对一般的

8、显示器来说,只能按行输出,即:输出第一行信息后,只能向下一行输出,不能再返回到上一行。为了获得本文要求的图形就必须在一行中一次输出两个“*”。 为了同时得到余弦函数cos(x)图形在一行上的两个点,考虑利用cos(x)的左右对称性。将屏幕的行方向定义为x,列方向定义为y,则0180度的图形与180360度的图形是左右对称的,若定义图形的总宽度为62列,计算出x行0180度时y点的坐标m,那么在同一行与之对称的180360度的y点的坐标就 应为62-m。程序中利用反余弦函数acos计算坐标(x,y)的对应关系。#include#includevoid main() double y; int x

9、,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.绘制余弦曲线和直线在屏幕上显示0360度的cos(x)曲线与直线f(x)=45*(y-1)+31的迭加图形。其中cos(x)图形用“*”表示,f(x)用“+”表示,在两个图形相交的点上则用f(x

10、)图形的符号。*问题分析与算法设计 本题可以在上题的基础上进行修改。图形迭加的关键是要在分别计算出同一行中两个图形的列方向点坐标后,正确判断相互的位置关系。为此,可以先判断图形的交点,再分别控制打印两个不同的图形。#include#includevoid main() double y; int x,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点对应的

11、列坐标*/ for(x=0;x=62;x+) /*x: 屏幕列方向坐标*/ if(x=m&x=n) printf(+); /*直线与cos(x)相交时打印“+”*/ else if(x=n) printf(+); /*打印不相交时的直线图形*/ else if(x=m|x=62-m) printf(*); /*打印不相交时的cos(x)图形*/ else printf( ); /*其它情况打印空格*/ printf(n); 17.绘制圆在屏幕上用“*”画一个空心的圆*问题分析与算法设计 打印圆可利用图形的左右对称性。根据圆的方程: R*R=X*X+Y*Y 可以算出圆上每一点行和列的对应关系。*

12、程序说明与注释#include#includevoid main() double y; int x,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.分形图案绘制的原则是,先按某一方向画一条直线,

13、然后在此线段上找到一系列节点,在每一个节点处向左、右偏转60度各画一条分支。节点位置和节点处所画分支的长度比值按0.618分割#define g 0.618#define PAI 3.14#include #include#include#includefloat thita=60.0;void grow(int x,int y,float lenth,float fai);void main() int gm,gd; detectgraph(&gd,&gm); initgraph(&gd,&gm,tcbgi); grow(300,300,280.0,90.0); getch(); close

14、graph();void grow(int x,int y,float lenth,float fai) int x1,y1; int nx,ny,count; float nlenth; 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

15、-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先画一个大三角形,连接三角形的三条边的中点,得到四个较小的三角形,然后将外围的三个小三角形经过与大三角形相同的处理,得到一系列更小的三角形。以此类推,将三角形不断地分割下去,直到最小的三角形的边长小于某个值时停止分割。#include#includevoid draw(int x1,int y1,int x2,int y2,int x3,int y3);void ma

16、in() int gm,gd; int x1=360,y1=100,x2=260,y2=273,x3=460,y3=273; detectgraph(&gd,&gm); initgraph(&gd,&gm,tcbgi); line(x1,y1,x2,y2); line(x2,y2,x3,y3); line(x3,y3,x1,y1); draw(x1,y1,x2,y2,x3,y3); getch(); closegraph();void draw(int x1,int y1,int x2,int y2,int x3,int y3) int xm1,ym1,xm2,ym2,xm3,ym3,fx,f

17、y; xm1=(x1+x2)/2; ym1=(y1+y2)/2; xm2=(x2+x3)/2; ym2=(y2+y3)/2; xm3=(x3+x1)/2; ym3=(y3+y1)/2; line(xm1,ym1,xm2,ym2); line(xm2,ym2,xm3,ym3); line(xm3,ym3,xm1,ym1); fx=xm1-xm2; fy=ym1-ym2; if(fx*fx+fy*fy)150) return; draw(x1,y1,xm1,ym1,xm3,ym3); draw(xm1,ym1,x2,y2,xm2,ym2); draw(xm3,ym3,xm2,ym2,x3,y3);

18、20.蛇吃蛋#include graphics.h #include stdio.h #define MAX 200 #define MAXX 30 #define MAXY 30 #define UP 18432 #define DOWN 20480 #define LEFT 19200 #define RIGHT 19712 #define ESC 283 #define ENTER 7181 #define PAGEUP 18688 #define PAGEDOWN 20736 #define KEY_U 5749 #define KEY_K 9579 #define CTRL_P 65

19、12 #define TRUE 1 #define FALSE 0 #define GAMEIN99v 1 #define GAMESTART 2 #define GAMEHAPPY 3 #define GAMEOVER 4 struct SPlace int x; int y; int st; placeMAX; int speed; int count; int score; int control; int head; int tear; int x,y; int babyx,babyy; int class; int eat; int game; int gamedelay=5000,

20、4000,3000,2000,1000,500,250,100; int gamedelay2=1000,1; static int hitme=TRUE,hit = TRUE; void init(void); void nextstatus(void); void draw(void); void init(void) int i; for(i=0;i= MAXY-1) | (control = 3) | (control = 4) & (x = MAXX-1) ) ) ) hit = FALSE; if ( (y = MAXY) | (x = MAXX) ) game = GAMEOVE

21、R; control = 0; return; for (i = 0; i = MAX) head = 0; placehead.x = x; placehead.y = y; placehead.st= TRUE; if (eat = FALSE) placetear.st = FALSE; tear +; if (tear = MAX) tear = 0; else eat = FALSE; exit = TRUE; while(exit) babyx = rand()%MAXX; babyy = rand()%MAXY; exit = FALSE; for( i = 0; i MAX;

22、i+ ) if( (placei.st)&( placei.x = babyx) & (placei.y = babyy) exit +; if (head = tear) game = GAMEHAPPY; void draw(void) char temp50; int i,j; for (i = 0; i MAX; i+ ) setfillstyle(1,9); if (placei.st) bar(placei.x*15+1,placei.y*10+1,placei.x*15+14,placei.y*10+9); setfillstyle(1,4); bar(babyx*15+1,ba

23、byy*10+1,babyx*15+14,babyy*10+9); setcolor(8); setfillstyle(1,8); bar(placehead.x*15+1,placehead.y*10+1,placehead.x*15+14,placehead.y*10+9); /* for( i = 0; i = MAXX; i+ ) line( i*15,0, i*15, 10*MAXY); for( j = 0; j = MAXY; j+ ) line( 0, j*10, 15*MAXX, j*10); */ rectangle(0,0,15*MAXX,10*MAXY); sprint

24、f(temp,Count: %d,count); settextstyle(1,0,2); setcolor(8); outtextxy(512,142,temp); setcolor(11); outtextxy(510,140,temp); sprintf(temp,1P: %d,score); settextstyle(1,0,2); setcolor(8); outtextxy(512,102,temp); setcolor(12); outtextxy(510,100,temp); sprintf(temp,Class: %d,class); setcolor(8); outtext

25、xy(512,182,temp); setcolor(11); outtextxy(510,180,temp); main() int pause = 0; char temp50; int d,m; int key; int p; static int keydown = FALSE; int exit = FALSE; int stchange = 0; d = VGA; m = VGAMED; initgraph( &d, &m, ); setbkcolor(3); class = 3; init(); p = 1; while(!exit) if (kbhit() key = bios

26、key(0); switch(key) case UP: if( (control != 2)& !keydown) control = 1; keydown = TRUE; break; case DOWN: if( (control != 1)& !keydown) control = 2; keydown = TRUE; break; case LEFT: if( (control != 4)& !keydown) control = 3; keydown = TRUE; break; case RIGHT: if( (control != 3)& !keydown) control =

27、 4; keydown = TRUE; break; case ESC: exit = TRUE;break; case ENTER: init();break; case PAGEUP: class -; if (class7) class = 7; break; case KEY_U: if( ( (control =1) |(control =2)& !keydown) control = 3; else if( (control = 3) | (control = 4)& !keydown) control = 1; keydown = TRUE; break; case KEY_K:

28、 if( ( (control =1) |(control =2)& !keydown) control = 4; else if( (control = 3) | (control = 4)& !keydown) control = 2; keydown = TRUE; break; case CTRL_P:pause = 1 - pause; break; stchange + ; putpixel(0,0,0); if (stchange gamedelayclass + gamedelay2hit) stchange = 0; keydown = FALSE; p = 1 - p; s

29、etactivepage(p); cleardevice(); if (!pause) nextstatus(); else settextstyle(1,0,4); setcolor(12); outtextxy(250,100,PAUSE); draw(); if(game=GAMEOVER) settextstyle(0,0,6); setcolor(8); outtextxy(101,101,GAME OVER); setcolor(15); outtextxy(99,99,GAME OVER); setcolor(12); outtextxy(100,100,GAME OVER);

30、sprintf(temp,Last Count: %d,count); settextstyle(0,0,2); outtextxy(200,200,temp); if(game=GAMEHAPPY) settextstyle(0,0,6); setcolor(12); outtextxy(100,300,YOU WIN); sprintf(temp,Last Count: %d,count); settextstyle(0,0,2); outtextxy(200,200,temp); setvisualpage(p); closegraph(); 21.歌星大奖赛 在歌星大奖赛中,有10个评

31、委为参赛的选手打分,分数为1100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。#includevoid main() int integer,i,max,min,sum; max=-32768; /*先假设当前的最大值max为C语言整型数的最小值*/ min=32767; /*先假设当前的最小值min为C语言整型数的最大值*/ sum=0; /*将求累加和变量的初值置为0*/ for(i=1;imax)max=integer; /*通过比较筛选出其中的最高分*/ if(integermin)min=integer; /*通过比较筛选出其中的最低分*

32、/ printf(Canceled max score:%dnCanceled min score:%dn,max,min); printf(Average score:%dn,(sum-max-min)/8); /*输出结果*/*运行结果 Input number1=90 Input number2=91 Input number3=93 Input number4=94 Input number5=90 Input number6=99 Input number7=97 Input number8=92 Input number9=91 Input number10=95 Canceled

33、 max score:99 Canceled min score:90 Average score:9222.问的约数中最大的三位数是多少?*问题分析与算法设计根据约数的定义,对于一个整数N,除去1和它自身外,凡能整除N的数即为N的约数。因此,最简单的方法是用2到N-1之间的所有数去除N,即可求出N的全部约数。本题只要求取约数中最大的三位数,则其取值范围可限制在100到999之间。#includevoid main() long i; int j; printf(Please input number:); scanf(%ld,&i); for(j=999;j=100;j-) if(i%j=0

34、) printf(The max factor with 3 digits in %ld is:%d,n,i,j); break; 输入: 输出:The max factor with 3 digits in is:77723.高次方数的尾数 求13的13次方的最后三位数*问题分析与算法设计 解本题最直接的方法是:将13累乘13次方截取最后三位即可。 但是由于计算机所能表示的整数范围有限,用这种“正确”的算法不可能得到正确的结果。事实上,题目仅要求最后三位的值,完全没有必要求13的13次方的完整结果。 研究乘法的规律发现:乘积的最后三位的值只与乘数和被乘数的后三位有关,与乘数和被乘数的高位无关

35、。利用这一规律,可以大大简化程序。#includevoid main() int i,x,y,last=1; /*变量last保存求X的Y次方过程中的部分乘积的后三位*/ printf(Input X and Y(X*Y):); scanf(%d*%d,&x,&y); for(i=1;i=y;i+) /*X自乘Y次*/ last=last*x%1000; /*将last乘X后对1000取模,即求积的后三位*/ printf(The last 3 digits of %d*%d is:%dn,x,y,last%1000); /*打印结果*/*运行结果 Input X and Y(X*Y):13*

36、13 The last 3 digits of 13*13 is:253 Input X and Y(X*Y):13*20 The last 3 digits of 13*20 is:80124.借书方案知多少 小明有五本新书,要借给A,B,C三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法?*问题分析与算法设计 本问题实际上是一个排列问题,即求从5个中取3个进行排列的方法的总数。首先对五本书从1至5进行编号,然后使用穷举的方法。假设三个人分别借这五本书中的一本,当三个人所借的书的编号都不相同时,就是满足题意的一种借阅方法。*程序说明与注释void main() int a,b,c,

37、count=0; printf(There are diffrent methods for XM to distribute books to 3 readers:n); for(a=1;a=5;a+) /*穷举第一个人借5本书中的1本的全部情况*/ for(b=1;b=5;b+) /*穷举第二个人借5本书中的一本的全部情况*/ for(c=1;a!=b&c=2) 当J=1或J=N+1时:其值为1 J!=1且J!=N+1时:其值为第N-1行的第J-1个值与第N-1行第J个值之和 将这些特点提炼成数学公式可表示为: 1 x=1或x=N+1 c(x,y)= c(x-1,y-1)+c(x-1,y)

38、 其它 本程序应是根据以上递归的数学表达式编制的。*程序说明与注释#includevoid main() int i,j,n=13; printf(N=); while(n12) scanf(%d,&n); /*控制输入正确的值以保证屏幕显示的图形正确*/ for(i=0;i=n;i+) /*控制输出N行*/ for(j-0;j24-2*i;j+) printf( ); /*控制输出第i行前面的空格*/ for(j=1;ji+2;j+) printf(%4d,c(i,j); /*输出第i行的第j个值*/ printf(n); void int c(int x,int y) /*求杨辉三角形中第x行第y列的值*/ int z; if(y=1)|(y=x+1) return 1; /*若为x行的第1或第x+1列,则输出1*/ z=c(x-1,y-1)+c(x-1,y); /*否则,其值为前一行中第y-1列与第y列值之和*/ return z;*运行结果输入:N=12输出:略26.数制转

温馨提示

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

评论

0/150

提交评论