首页 c语言经典程序(1)

c语言经典程序(1)

举报
开通vip

c语言经典程序(1)/*长度单位英寸与厘米之间的转换*/ /*长度单位英寸与厘米之间的转换*/ #include int main(void) { float inch,cm; printf("请输入长度(吋)?"); scanf("%f",&inch); cm=2.54f*inch; printf("%.3f吋=%.3f厘米\n",inch,cm); return 0; } /*三位整数的逆序*/ #include int main(void) { int x,x100,x1,x10; printf("请输入一个三位整数:"); s...

c语言经典程序(1)
/*长度单位英寸与厘米之间的转换*/ /*长度单位英寸与厘米之间的转换*/ #include int main(void) { float inch,cm; printf("请输入长度(吋)?"); scanf("%f",&inch); cm=2.54f*inch; printf("%.3f吋=%.3f厘米\n",inch,cm); return 0; } /*三位整数的逆序*/ #include int main(void) { int x,x100,x1,x10; printf("请输入一个三位整数:"); scanf("%3d",&x); x1=x%10; x10=(x/10)%10; x100=x/100; printf("%d逆序后的三位整数是%d%d%d",x,x1,x10,x100); return 0; } /*求解一元一次方程ax2+bx+c=0的根,其中系数从键盘上输入a,b,c,a不为0*/ #include #include int main(void) { float a,b,c,delta; printf("输入三个系数:"); scanf("%f%f%f",&a,&b,&c); if(a==0) { printf("这不是一元二次方程!\n"); return 1; } delta=b*b-4*a*c; if(delta>=0) { delta=sqrt(delta); if(delta) printf("方程有两个不同的实根:%f%f\n",(-b+delta)/2/a,(-b-delta)/2/a); else printf("方程有两个相同的实根:%f\n",-b/2/a); } else printf("!\n"); return 0; } /*将一个整数逆序*/ #include void main() { int a,b; printf("请输入一个整数:"); scanf("%d",&a); while(a/10!=0) { b=a%10; printf("%d",b); a=a/10; } b=a%10; printf("%d",b); } /*输入成绩,100分以下90分以上对应A,80分以上对应B,70分以上对应C,60分以上对应d,60分以下对应E */ /*switch的表达*/ #include void main(void) { int x; char c; printf("请输入成绩:"); scanf("%i",&x); switch(int(x)/10) { case 9:c='A';printf("对应的五分制成绩:%c",c);break; case 8:c='B';printf("对应的五分制成绩为:%c",c);break; case 7:c='C';printf("对应的五分制成绩为:%c",c);break; case 6:c='D';printf("对应的五分制成绩为:%c",c);break; case 5:case 4:case 3:case 2:case 1:c='E';printf("对应的五分制成绩:%c",c);break; default:printf("此成绩无效");} } /*输出9*9口诀。*/ #include main() {int i,j,result; printf("\n"); for (i=1;i<10;i++) { for(j=1;j<10;j++) { result=i*j; printf("%d*%d=%-3d",i,j,result); if(i<=j){printf("\n");break;}; } } } /*给定一个范围,输出所有素数。*/ #include #include main() { int m,n,i,k,h=0,leap=1; printf("请输入范围"); scanf("%i%i",&m,&n); for(;m<=n;m++) { k=sqrt(m+1); for(i=2;i<=k;i++) if(m%i==0) {leap=0;break;} if(leap) {printf("%-7d",m);h++; if(h%10==0) printf("\n"); } leap=1; } } /*将一个整数的所有素数因子输出,例如,当k=126时,素数银子表示为126=2*3*3*6*/ #include main() { int n,i; printf("\nplease input a number:\n"); scanf("%d",&n); printf("%d=",n); for(i=2;i<=n;i++) {while(n!=i) {if(n%i==0) { printf("%d*",i); n=n/i; } else break; } } printf("%d",n); } /*在歌星大奖赛中,有n个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余n-2个分数的平均值*/ #include int main() { int integer,i,max,min,sum,n; max=-32768; /*先假设当前的最大值max为C语言整型数的最小值*/ min=32767; /*先假设当前的最小值min为C语言整型数的最大值*/ sum=0; /*将求累加和变量的初值置为0*/ printf("一共多少个评委"); scanf("%d",&n); for(i=1;i<=n;i++) { printf("Input number %d=",i); scanf("%d",&integer); /*输入评委的评分*/ sum+=integer; /*计算总分*/ if(integer>max)max=integer; /*通过比较筛选出其中的最高分*/ if(integer int main() { long i; int j; printf("Please input number:"); scanf("%ld",&i); for(j=i-1;j>=100;j--) if(i%j==0) { printf("The max factor in %ld is:%d,\n",i,j); break; } } /*求x的y次方的最后n位数*/ #include int 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:%d\n",x,y,last%1000); /*打印结果*/ } /* 求N! 的尾数有多少个零*/ #include int main() { int a,n,count =0; printf("请输入N="); scanf("%d",&n); for(a=5;a<=n;a+=5) //循环从5开始,以5的倍数为步长,考察整数 { ++count; //若为5的倍数,计数器加1 if(!(a%25)) ++count; //若为25的倍数,计数器再加1 } printf("The number of 0 in the end of %d! is: %d",n,count); return 0; } /*有n本新书,要借给A,B,C三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法?*/ #include int main() { int a,b,c,count=0,n; printf("How many books are there "); scanf("%d",&n); printf("There are diffrent methods for XM to distribute books to %d readers:\n",n); for(a=1;a<=n;a++) /*穷举第一个人借5本书中的1本的全部情况*/ for(b=1;b<=n;b++) /*穷举第二个人借5本书中的一本的全部情况*/ for(c=1;a!=b&&c<=n;c++) /*当前两个人借不同的书时,穷举第三个人借5本书 中的1本的全部情况*/ if(c!=a&&c!=b) /*判断第三人与前两个人借的书是否不同*/ printf(count%8?"%2d:%d,%d,%d ":"%2d:%d,%d,%d\n ",++count,a,b,c); } /*n行的杨辉三角形*/ #include 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; } int main() { int i,j,n=13; printf("N="); while(n>12) scanf("%d",&n); /*控制输入正确的值以保证屏幕显示的图形正确*/ for(i=0;i<=n;i++) /*控制输出N行*/ { for(j=0;j<24-2*i;j++) printf(" "); /*控制输出第i行前面的空格*/ for(j=1;j void printb(int,int); int main() { int x;printf("Input number:"); scanf("%d",&x); printf("number of decimal form:%d\n",x); printf(" it's binary form:"); printb(x,sizeof(int)*8); /*x:整数 sizeof(int):int型在内存中所占的字节数 sizeof(int)*8:int型对应的位数*/ putchar('\n'); } void printb(int x,int n) { if(n>0) { putchar('0'+((unsigned)(x&(1<<(n-1)))>>(n-1))); /*输出第n位*/ printb(x,n-1); /*归调用,输出x的后n-1位*/ } } /*中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。*/ #include int days(struct date day); struct date{ int year; int month; int day; }; int main() { struct date today,term; int yearday,year,day; printf("Enter year/month/day:"); scanf("%d%d%d",&today.year,&today.month,&today.day); /*输入日期*/ term.month=12; /*设置变量的初始值:月*/ term.day=31; /*设置变量的初始值:日*/ for(yearday=0,year=1990;year0&&day<4) printf("he was fishing at that day.\n"); /*打印结果*/ else printf("He was sleeping at that day.\n"); } int days(struct date day) { static int day_tab[2][13]= {{0,31,28,31,30,31,30,31,31,30,31,30,31,}, /*平均每月的天数*/ {0,31,29,31,30,31,30,31,31,30,31,30,31,}, }; int i,lp; lp=day.year%4==0&&day.year%100!=0||day.year%400==0; /*判定year为闰年还是平年,lp=0为平年,非0为闰年*/ for(i=1;i int main() { long int i; int count=0; /*count:统计满足条件的五位数的个数*/ for(i=1000;i<9999;i++) if(!((i*10+6)%3)) /*判断所选的数能否被3整除*/ count++; /*若满足条件则计数*/ printf("count=%d\n",count); } /*一个自然数被8除余1,所得的商被8除也余1,再将第二次的商被8除后余7,最后得到一个商为a。又知这个自然数被17除余4,所得的商被17除余15,最后得到一个商是a的2倍。求这个自然数。*/ #include int main() { int i; for(i=0;;i++) /*试探商的值*/ if(((i*8+7)*8+1)*8+1==(34*i+15)*17+4) { /*逆推判断所取得的当前i值是否满足关系式*/ /*若满足则输出结果*/ printf("The required number is: %d\n",(34*i+15)*17+4); break; } } /*猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个    第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下    的一半零一个。到第n天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 */ #include main() { int day,x1,x2; printf("几天后只剩一个"); scanf("%d",&day); x2=1; while((day-1)>0) {x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/ x2=x1; day--; } printf("the total is %d\n",x1); } /*打印出如下图案(菱形) * *** ****** ******** ****** *** * */ #include main() { int i,j,k; for(i=0;i<=3;i++) { for(j=0;j<=2-i;j++)printf(" "); for(k=0;k<=2*i;k++) printf("*"); printf("\n"); } for(i=0;i<=2;i++) { for(j=0;j<=i;j++) printf(" "); for(k=0;k<=4-2*i;k++) printf("*"); printf("\n"); } } /*有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前n项之和。*/ #include main() { int n,t,number; printf("please the number:"); scanf("%d",&number); float a=2,b=1,s=0; for(n=1;n<=number;n++){ s=s+a/b; t=a;a=a+b;b=t; } printf("sum is %9.6f\n",s); } /*给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。*/ #include main( ) { long a,b,c,d,e,x; scanf("%ld",&x); a=x/10000;/*分解出万位*/ b=x%10000/1000;/*分解出千位*/ c=x%1000/100;/*分解出百位*/ d=x%100/10;/*分解出十位*/ e=x%10;/*分解出个位*/ if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a); else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b); else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c); else if (d!=0) printf("there are 2, %ld %ld\n",e,d); else if (e!=0) printf(" there are 1,%ld\n",e); } /*一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。*/ #include main( ) { long ge,shi,qian,wan,x; scanf("%ld",&x); wan=x/10000; qian=x%10000/1000; shi=x%100/10; ge=x%10; if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/ printf("this number is a huiwen\n"); else printf("this number is not a huiwen\n"); } /*“水仙花数”是指一个三位数,其各位数字立方和等于该数,求其水仙花数的次大值*/ #include #include int shuixian(int n) { int s=0; int t=n; do { s=s+pow(n%10,3); n/=10; }while(n!=0); if(t==s) return 1; else return 0; } void main() { int n; int max1=0,max2=0; for(n=100;n<1000;n++) { if(shuixian(n)) { printf("%d\n",n); if(n>max1) { max2=max1; max1=n; } else if(n>max2) max2=n; } } printf("max1=%d,max2=%d",max1,max2); }
本文档为【c语言经典程序(1)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_618357
暂无简介~
格式:doc
大小:76KB
软件:Word
页数:11
分类:互联网
上传时间:2011-04-16
浏览量:114