《c语言案例源程序-精品文档资料整理.doc》由会员分享,可在线阅读,更多相关《c语言案例源程序-精品文档资料整理.doc(63页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第2章 简单C程序2.1.1 显示一行文字/*显示一行文字“Welcome to C World!”的程序*/#includemain()printf(”Welcome to C World!n”);2.1.2 两个整数求和/*计算并显示两整数之和的程序*/#includemain()int a,b,sum; /*变量声明*/printf(”Input first integer n”); /*显示提示信息*/scanf(”%d”,&a); /*读取一个整数*/printf(”Input second integer n”); /*显示提示信息*/scanf(”%d”,&b); /*读取一个整
2、数*/sum=a+b; /*两数相加*/printf(”Sum is %d n”,sum); /*显示两数之和*/ return 0; /*返回0表示程序成功地结束*/2.2.1 算术运算#includemain()printf(“nL1:40%7=%d”, 40%7);printf(“nL2:40%7=%d”, 40%7);printf(“nL3:3.0/-4.0+1.6*2.0/5.0=%f”, 3.0/-4.0+1.6*2.0/5.0);printf(“nL4:2/3*1000=%d”, 2/3*1000);printf(“nL5:2/3*1000=%f”, 2/3*1000);prin
3、tf(“nL6:2/3*1000=%e”, 2/3*1000);printf(“nL7:2.0/3*1000=%f”, 2.0/3*1000);printf(“nL8:2f/3*1000=%f”, 2f/3*1000);printf(“nL9:Size of 3 is %d”,sizeof(3);printf(“nL10:Size of 3.0 is %d”,sizeof(3.0);2.2.2 赋值运算#includemain()int k,x,y;k=5;x=k+; /*后缀运算,先把k的值赋给x,然后k的值加1*/printf(nL1:k=%d,x=%d,k,x);k=5;y=+k; /*
4、前缀运算,先使k的值加1,然后将k的值赋给y */printf(nL2:k=%d,y=%d,k,y);x=y=5;printf(nL3:-x is %d,y- is %d,-x,y-);k=x=y=5;k=+x-+y;printf(nL4:%d,%d,%d,k,x,y);k=+x+y+;printf(nL5:%d,%d,%d,k,x,y);k=x-+-y;printf(nL6:%d,%d,%d,k,x,y);k=-x+y;printf(nL7:%d,%d,%d,k,x,y);x=y=5;printf(nL8:x+=x-=x*x is %d,x+=x-=x*x);printf(nL9:y+=y-
5、=y*=y is %d ,y+=y-=y*=y);2.2.3 printf中输出表列求值#includevoid main()int i=8;printf(%d,%d,%d,%d,%dn,+i,-i,i-,i+,-i-);2.2.4 交换两个变量的值#includemain()int a,b,tem;printf(”Input integer a and bn”);scanf(”%d,%d”,&a, &b);tem=a;a=b;b=tem;printf(”a=%d,b=%dn”,a,b);2.2.5 四舍五入#include#includemain()double a,b;printf(Inp
6、ut real a n);scanf(%lf,&a);b=floor(a*100+0.5)/100;printf(b=%.2fn,b);第4章 分支程序设计4.1.1 求绝对值#include”stdio.h”main() int x, y;scanf(“%d”,&x);y=x;if(xmax) max=b; if(cmax) max=c; printf(“the maximum is:%dn”,max);min=a; if(minb) min=b; if(minc) min=c; printf(“the minimum is:%dn”,min);4.2.1 两数的比较#include”std
7、io.h”main()int x,y;printf(“input x,y:”);scanf(“%d,%d”,&x,&y);if(xy) printf(“the maximum is:%d”,x);else printf(“the maximum is:%d”,y);4.2.2 判定一数能否被另一数整除 main() int x,y; printf(“input x,y:”); scanf(“%d,%d”,&x,&y); if(x%y) printf(“NO”); else printf(“YES”);4.3.1 分段函数求解main() int x,y;scanf(“%d”,&x);if (x
8、=0) if(x0) y=x+1; else y=x;else y=x-1;printf(“x=%d,y=%dn”,x,y);4.3.2 一元二次方程求解#includemath.hmain()float a,b,c,d,a2,x1,x2; printf(Input a,b,cn); scanf (%f,%f,%f,&a,&b,&c); if (a=0) /*解一元一次方程*/x1=-c/b;printf(root=%fn,x1); /*输出一次方程根*/else /*解一元二次方程*/ d=b*b-4*a*c; a2=2*a; x1=-b/a2;if(d=0) x2=sqrt(d)/a2;p
9、rintf(real root:n); /*输出实根*/printf(root1=%f, root2=%fn,x1+x2,x1-x2); else x2=sqrt(-d)/a2;printf(complex root:n); /*输出复根*/printf(root1=%f+%fin,x1,x2);printf(root2=%f-%fin,x1,x2); 4.3.3 闰年判断问题#include”stdio.h”main()int year,leap=0;/* leap=0:预置为非闰年*/printf(Please input the year:);scanf(%d,&year);if (ye
10、ar % 100!=0) if (year % 4 = 0) leap=1;else if (year%400=0) leap=1; if (leap) printf(%d is a leap year.n,year);else printf(%d is not a leap year.n,year);4.3.4显示学生成绩与等级 main()int x; printf(“please input x(0=x100|x=90) printf(“x=%d is grade A!n”,x); else if (x=80) printf(“x=%d is grade B!n”,x); else if
11、(x=60)printf(“x=%d is grade C!n”,x); else printf(“x=%d is grade D! n”,x);4.3.5 个人所得税计算(1)用嵌套的if语句编写程序main()float s,m,t;printf(please input the income:);scanf(%f,&s);s=s-1600;if(s100000) m=s-100000; t=m*0.45+20000*0.4+20000*0.35+20000*0.3+20000*0.25 +15000*0.2+3000*0.15+1500*0.1+500*0.05; else if(s80
12、000) m=s-80000; t=m*0.4+20000*0.35+20000*0.3+20000*0.25 +15000*0.2+3000*0.15+1500*0.1+500*0.05; else if(s60000) m=s-60000; t=m*0.35+20000*0.3+20000*0.25+15000*0.2+3000*0.15+1500*0.1+500*0.05; else if(s40000) m=s-40000; t=m*0.3+20000*0.25+15000*0.2+3000*0.15+1500*0.1+500*0.05; else if(s20000) m=s-200
13、00; t=m*0.25+15000*0.2+3000*0.15+1500*0.1+500*0.05; else if(s5000) m=s-5000; t=m*0.2+3000*0.15+1500*0.1+500*0.05; else if(s2000) m=s-2000; t=m*0.15+1500*0.1+500*0.05; else if(s500) m=s-500; t=m*0.1+500*0.05; else m=s; t=m*0.05; printf(the tax is:%7.2fn,t); getch();(2)用switch语句编写程序main() float m,s,r;
14、 int t; printf(input the income:); scanf(%f,&s); s=s-1600; t=s/10000; switch(t) case 0:if(s=500) m=s*0.05; printf(the tax is:%f,m); else if(s=2000) s=s-500; m=s*0.1+500*0.05; printf(the tax is:%f,m); else if(s=5000) s=s-2000; m=s*0.15+1500*0.1+500*0.05; printf(the tax is:%f,m); else if(s=10000) s=s-
15、5000; m=s*0.2+3000*0.15+1500*0.1+500*0.05; printf(the tax is:%f,m); break; case 1:s=s-5000; m=s*0.2+3000*0.15+1500*0.1+500*0.05; printf(the tax is:%f,m); break; case 2:if(s=20000) s=s-5000; m=s*0.2+3000*0.15+1500*0.1+500*0.05; printf(the tax is:%f,m); case 3:s=s-20000; m=s*0.25+15000*0.2+3000*0.15+1
16、500*0.1+500*0.05; printf(the tax is:%f,m); break; case 4:if(s=40000) s=s-20000; m=s*0.25+15000*0.2+3000*0.15+1500*0.1+500*0.05; printf(the tax is:%f,m); case 5:s=s-40000; m=s*0.3+20000*0.25+15000*0.2+3000*0.15+1500*0.1+500*0.05; printf(the tax is:%f,m); break; case 6:if(s=60000) s=s-40000; m=s*0.3+2
17、0000*0.25+15000*0.2+3000*0.15+1500*0.1+500*0.05; printf(the tax is:%f,m); case 7:s=s-60000; m=s*0.35+20000*0.3+20000*0.25+15000*0.2+3000*0.15+1500*0.1+500*0.05; printf(the tax is:%f,m); break; case 8:if(s=80000) s=s-60000; m=s*0.35+20000*0.3+20000*0.25+15000*0.2+3000*0.15+1500*0.1+500*0.05; printf(t
18、he tax is:%f,m); case 9:s=s-80000; m=s*0.4+20000*(0.35+0.3+0.25)+15000*0.2+3000*0.15+1500*0.1+500*0.05; printf(the tax is:%f,m); break; if(s=100000) s=s-80000; m=s*0.4+20000*(0.35+0.3+0.25)+15000*0.2+3000*0.15+1500*0.1+500*0.05; printf(the tax is:%f,m); else s=s-100000; m=s*0.45+20000*(0.4+0.35+0.3+
19、0.25)+15000*0.2+3000*0.15+1500*0.1+500*0.05; printf(the tax is:%f,m); 第5章 循环程序设计5.1.1 累加和程序1:应用for循环设计/* for循环求s=1*2+2*3+99*100 */main() long i,s; s=0; for(i=1;i=99;i+) /* 设置循环i=1,2,99 */ s+=i*(i+1); /* 把通项i*(i+1)累加到s中 */ printf(1*2+2*3+99*100=%ldn,s); 程序2: 应用while循环设计 /* while循环求s=1*2+2*3+99*100 */
20、main() long i,s; i=1;s=0; while(i=99) /* 设置循环i=1,2,99 */ s+=i*(i+1);i+; /* 把通项i*(i+1)累加到s中 */ printf(1*2+2*3+99*100=%ldn,s); 程序3: 应用do while循环设计/* do while循环求s=1*2+2*3+99*100 */main() long i,s; i=1;s=0; do s+=i*(i+1);i+; /* 把通项i*(i+1)累加到s中 */ while(i=99); /* 设置循环i=1,2,99 */ printf(1*2+2*3+99*100=%ld
21、n,s); 5.1.2 代数和/* 求s=1-1/2+1/3-1/4+-1/100 */main()int k,n;float s=0; for(k=1;k=100;k+) if(k%2=1) s+=1.0/k; /* 应用分支实现符号一正一负 */ else s-=1.0/k; printf(s=%9.6f,s); 5.1.3 阶乘计算/* 循环累乘求阶乘n! */main()int i,n; long t;scanf(%d,&n);t=1; /* 积变量t赋初值1 */for(i=1;i=n;i+) t=t*i; /* 循环变量i累乘到t,体现阶乘运算 */printf(%d!=%ldn,
22、n,t);/* 递归求阶乘N!*/float fac(n)int n;long f; if(n=0) f=1; /* 初始条件 */ else f=n*fac(n-1); /* 递归关系 */ return (f); main() int n; long y; printf(input n:); scanf(%d,&n); y=fac(n); printf(%d!=%ldn,n,y); 5.1.4 定积分计算#includemath.hmain() int i,n=1000; float a,b,h,t1,t2,s,x; printf(请输入积分限a,b:); scanf(%f,%f,&a,&
23、b); h=(b-a)/n; for(s=0,i=1;i=n;i+) x=a+(i-1)*h;t1=exp(-x*x/2);t2=exp(-(x+h)*(x+h)/2); s+=(t1+t2)*h/2; /* 梯形面积累加 */ printf(梯形法算得积分值:%f.n,s);5.2.1 百鸡问题main()int x,y,z; for(x=1;x=19;x+) for(y=1;y=33;y+) for(z=1;z=100;z+) if(z%3=0 & x+y+z=100 & 5*x+3*y+z/3=100) printf(x=%d,y=%d,z=%dn,x,y,z); /* 同时满足时打印
24、*/ 5.2.2 解 Pell方程/* 解 PELL方程: x2-ny2=1. */#include main()int n,m,t; long a,x,y; printf(解PELL方程: x2-ny2=1.n); printf(请输入非平方正整数 n:); scanf(%d,&n); m=sqrt(n); if(m*m=n) printf(n为平方数,方程无正整数解!n); return; printf(解PELL方程:x2-%dy2=1n,n); for(y=1;y=10000;y+) /* 实施穷举,约定10000内 */ a=n*y*y;x=sqrt(a+1); if(x*x=a+1
25、)printf(方程的基本解为:); printf( x=%ld , y=%ldn,x,y); break; 5.2.3 牛顿迭代法解方程#includefloat solut(a,b,c,d)float a,b,c,d; float x=1,x0,f,f1; do x0=x; /* 在循环中实施迭代 */ f=(a*x0+b)*x0+c)*x0+d; f1=(3*a*x0+2*b)*x0+c; x=x0-f/f1; while(fabs(x-x0)=1e-5); return(x);main()float a,b,c,d;printf(input a,b,c,d:n);scanf(%f,%f
26、,%f,%f,&a,&b,&c,&d);printf(n x=%10.6fn,solut(a,b,c,d);5.2.4 水手分椰子main() int k,n; long x,y; printf(n=); scanf(%d,&n); /* 输入水手个数n */ for(x=n-1;x1000000;x+=n-1) y=x; for(k=1;kn) y=y/(n-1)*n+1; printf(%d个水手分椰子,原有椰子至少有:%ld个.n,n,y); for(k=1;k=n;k+) printf(第%d个分:%ld=%d*%ld+1,k,y,n,(y-1)/n); y=(y-1)/n*(n-1)
27、; printf(分后剩余:%ld=%d*%ldn,y,n-1,y/(n-1); printf(最后一起分:%ld=%d*%ld+1,y,n,(y-1)/n); break; 5.3.1 探求区间素数main() long int a,b,k,t,j,n; n=0; printf(请输入区间:); scanf(%ld,%ld,&a,&b); printf(%ld-%ldn,a,b); for(k=a;k=b;k+) t=0; for(j=2;j=k/2;j+) /* 实施试商判别 */if(k%j=0) t=1; if(t=0) n+; printf(n n=%ldn,n); 5.3.2 梅森
28、素数#includemain() long int k,t,j,m,n,x; x=0;t=2; for(n=2;n=30;n+) t*=2;k=t-1;m=0; for(j=3;j=sqrt(k);j+=2) /* 实施试商判别 */ if(k%j=0) m=1; if(m=0) x+;printf(2%ld-1=%ldn,n,k); printf(x=%ld n,x); 5.3.3 合数世纪#include main()long a,b,k; int s,x; for(a=21;a200000;a+) /* 在约定区间内穷举世纪 */ s=0; for(b=a*100-99;b=a*100-
29、1;b+=2) /* 穷举每个奇数年号b */ x=0; for(k=3;k=sqrt(b);k+=2) if(b%k=0) x=1;break; s=s+x; /* 年号b为合数时,x=1,s增1 */ if(s=50) /* s=50,即有50个合数 */ printf(最早出现的合数世纪为:%ld 世纪!n,a);break; 5.3.4 质因数分解 /* 质因数分解乘积形式 */#includemath.hmain()long int b,i,k,m,n,w=0;printf(m,n中整数分解质因数.n);printf(请输入m,n:);scanf(%ld,%ld,&m,&n);for
30、(i=m;i=n;i+) /* i为待分解的整数 */printf(%ld=,i); b=i;k=2; while(k1) printf(%ld*,k);continue; /* k为质因数,返回 */ if(b=1) printf(%ldn,k); k+; if(b1 & b0) a=b;b=r;r=a%b; /* 实施辗转相除 */ printf(最大公约数为:%ldn,b); printf(最小公倍数为:%ldn,k/b);5.4.2 水仙花数main()int i,j,k,n; for(n=100;n1000;n+) i=n/100;j=(n/10)%10;k=n%10; /* 分离n
31、各位数字i,j,k */ if(n=i*i*i+j*j*j+k*k*k) /* 检验是否符合条件 */ printf(%d ,n); 5.4.3 完全数#include math.h main() int b,i,k,m,n,c100; long a,s,x,y,d100; printf(求区间x,y中的完全数.); printf(请输入整数x,y:); scanf(%ld,%ld,&x,&y); printf(%ld,%ld中的完全数有:n,x,y); for(a=x;a=y;a+) s=1;n=0;b=sqrt(a); for(k=2;k=b;k+) /* 试商寻求a的因数k */if(a
32、%k=0) s=s+k+a/k;n+;cn=k;dn=a/k; /* a/k也是a的因数 */ if(a=b*b) s=s-b;m=n-1; /* 若a=b2,去掉一个b重复因数 */ else m=n; if(a=s)printf(%ld=1,a); /* 分两段从小到大打印因数之和 */ for(i=1;i=1;i-) printf(+%ld,di); if(a%2=1) printf( 奇完全数!); printf(n); 5.4.4 勾股数/* 勾股数组 */#include “math.h”main()long a,b,x,y,z,d,n=0; scanf(“%ld,%ld”,&a,&b); printf(“在%ld,%ld范围内,寻求勾股数组:n”); for(x=a;x=b-2;x+) /* 设xyz,循环判别 */ for(y=x+1;y=b-1;y+)d=x*x+y*y; z=sqrt(d);if(d=z*z & z=b) n+; printf(“%ld,%ld,%ldn”,x,y,z); printf(“共有%ld组勾股数。”,n); 5.4.5 倍反序数main()int n,k,t,m,j=0; for(n=1000;n=9999;n+)