C语言经典编程算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言经典编程算法汇集(不断补充)
用pi/4=1-1/3+1/5-1/7+...公式求PI的近似值,直到最后一项的绝对值小有10的-6次方为止。
#include
main()
{int i=-1;
float j,s=0.0;
for(j=1.0;fabs(1.0/j)>=1e-6;j=j+2.0)
{i=-i;
s+=i*1.0/j;}
s=s*4.0;
printf("%f\n",s);
}
输入四个整数,要求按由小到大的顺序输出。
main()
{int a,b,c,d;
printf("请输入4个整数:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("\n a=%d, b=%d, c=%d, d=%d \n",a,b,c,d);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(a>d)
{t=a;a=d;d=t;}
if(b>c)
{t=b,b=c;c=t;}
if(b>d)
{t=b;b=d;d=t;}
if(c>d)
{t=c;c=d;d=t;}
printf("排序结果如下:\n");
printf("%d %d %d %d\n",a,b,c,d);
}
译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。例如,可以按以下规律电文变为密码:
将字母A变成字母E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D。字母按上述规律转换,非字母字符不变。如“China!”转换为“Glmre!”。输入一行字符,要求输出其相应的密码。
#include
main()
{char a,b[100];
int i,j=0;
printf("qing shu ru,yi hui che jie shu:");
for(i=0;(b[i]=getchar())!='\n';i++)
{if((b[i]>='a'&&b[i]<='z')||(b[i]>='A'&&b[i]<='Z'))
b[i]+=4;
if(b[i]>'Z'&&b[i]<='Z'+4||b[i]>'z')b[i]=b[i]-26;
}
while(b[j]!='\0')
{printf("%c",b[j]);
j++;}
}
输入两个正整数m和n,求其最大公约数和最小公倍数。
main()
{int p,r,n,m,temp;
printf("请输入两个正整数n,m");
scanf("%d,%d",&n,&m);
if(n {temp=n; n=m; m=temp; } p=n*m; while(m!=0) {r=n%m; n=m; m=r; } printf("它们的最大公约数为:%d\n",n); printf("它们的最小公倍数为:%d\n",p\n); } 打印出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如,153是一个“水仙花数”,因为153=1的立方+5的立方+3的立方。 main() {int i,j,k,n; printf("水仙花"数是:"); for(n=100;n<1000;n++) {i=n/100; j=n/10-i*10; k=n%10; if(n==i*i*i+j*j*j+k*k*k) printf("%4d",n); } printf("\n"); } 两个乒乓球队进行比赛,各出三人。甲队为A、B、C三人,乙队为X、Y、Z三人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比。请编程序找出三对赛手的名单。 main() {char i,j,k; for(i='X';i<='Z';i++) for(j='X';j<='Z';j++) if(i!=j) for(k='X';k<='Z';k++) if(i!=k&&j!=k) if(i!='X'&&k!='X'&&k!='Z') printf("A--%c\tB--%c\tC--%c\n",i,j,k); } 用起泡法对10个数排序(由小到大)。 main() {int a[10],t,i,j; printf("qing shu ru 10 ge shu:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) for(j=0;j<9-i;j++) if(a[j]>=a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;} for(i=0;i<10;i++) printf("%5d",a[i]); } 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。 #include main() { char string[81]; int i,num=0,word=0; char c;