《西工大C语言程序作业讲解》由会员分享,可在线阅读,更多相关《西工大C语言程序作业讲解(25页珍藏版)》请在金锄头文库上搜索。
1、第2季:循环第1题Title完全数Time Limit1000MSMemory Limit10000KBDescription一个数如果恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。请编写程序,找出1000之内的所有完数。InputOutput每行按格式输出其因子:6=1+2+3Sample InputSample Output6=1+2+328=1+2+4+7+14496=1+2+4+8+16+31+62+124+2481.完全数#includeint main()int m,i,j,s;for(m=6;m1000;m+)s=1;for(
2、i=2;im;i+)if(m%i=0) s=s+i;if(m-s=0)printf(%5d its fastors are 1 ,m);for(j=2;jm;j+) if(m%j=0)printf(%d ,j);printf(n);第2题Title迭代求根Time Limit1000MSMemory Limit10000KBDescriptionInput输入a为实型Output输出根为实型,保留五位小数。Sample Input2Sample Output1.414212.迭代求根#include#includeint main()float x0,x1,a;scanf(%f,&a);x1=
3、a/2;dox0=x1;x1=(x0+a/x0)/2;while(fabs(x0-x1)=0.00001);printf(%.5fn,x1);return 0;第3题Title二分求根Time Limit1000MSMemory Limit10000KBDescription请编写程序,用二分法求下面方程在(10,10)之间的根:Input输入区间数据为实型、用空格隔开输出均。Output输出根为实型,保留两位小数。Sample Input-10 10Sample Output2.003.二分求根#include#includeint main() float x0,x1,x2,f0,f1,f
4、2; printf(请输入x1,x2的值:); scanf(%f%f,&x1,&x2); f1=2*x1*x1*x1-4*x1*x1+3*x1-6; f2=2*x2*x2*x2-4*x2*x2+3*x2-6; do x0=(x1+x2)/2; f0=2*x0*x0*x0-4*x0*x0+3*x0-6; if(f0*f1=1e-5); printf(方程的根为:%.2fn,x0); return 0;第4题TitleVOL大学乒乓球比赛Time Limit1000MSMemory Limit10000KBDescriptionVOL大学有两个乒乓球队进行比赛,各出3人。甲队为A、B、C三人,乙队
5、为X、Y、Z三人,已抽签决定比赛名单,有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编写程序找出3对赛手的名单。InputOutput输出赛手名单,一行一对。Sample InputSample OutputA=ZB=XC=Y4.VOL大学乒乓球比赛#includeint 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=%cnB=%cnC=%cn,i,j,k); return 0; 第5题T
6、itle两个整数之间所有的素数Time Limit1000MSMemory Limit10000KBDescription编写程序,求任意两个整数之间所有的素数。Input输入两个整数,用空格间隔。注意输入的两个整数谁大谁小是任意的。Output输出数据占一行,用空格间隔。Sample Input100 130Sample Output101 103 107 109 113 1275.两个整数之间所有的素数#include #include int main()int m,n,a,i,t;scanf(%d%d,&m,&n);if(mn) t=m; m=n; n=t;for(a=m;a=n;a+
7、)for(i=2;isqrt(a)printf(%d ,a);printf(n);return 0;第6题Title奇特的分数数列Time Limit1000MSMemory Limit10000KBDescription有一个分数数列:求出这个数列前20项之和。InputOutput输出保留六位小数。Sample InputSample Output32.6602616.奇特的分数数列#includeint main()int i,x,y,a; float sum=0; x=2; y=1; for(i=1;i=20;i+) sum+=(float)(x)/y; / printf(%d/%dn
8、,x,y); a=x; x=x+y; y=a; printf(%.6fn,sum); return 0; 第7题Title你会存钱吗?Time Limit1000MSMemory Limit10000KBDescription假设银行整存整取存款不同期限的月息利率分别为:利息=本金*月息利率*12*存款年限。现在某人手中有2000元钱,请通过计算选择一种存钱方案,使得钱存入银行20年后得到的利息最多(假定银行对超过存款期限的那一部分时间不付利息)。InputOutput输出第1行为8年、5年、3年、2年、1年的存款方案(各利率存款次数),用空格隔开。输出第2行为最大收益。Sample Inpu
9、tSample Output0 4 0 0 08841.017.你会存钱吗?#include#includeint main()int i8,i5,i3,i2,i1,n8,n5,n3,n2,n1;float max=0,term;for(i8=0;i83;i8+) /*穷举所有可能的存款方式*/for(i5=0;i5=(20-8*i8)/5;i5+)for(i3=0;i3=(20-8*i8-5*i5)/3;i3+)for(i2=0;i2max) max=term;n1=i1; n2=i2; n3=i3; n5=i5; n8=i8; printf(%d %d %d %d %dn,n8,n5,n3
10、,n2,n1);printf(%.2fn,max);/*输出存款方式*/return 0;第8题Title整数位数Time Limit1000MSMemory Limit10000KBDescription编写程序输入一个数,输出其整数部分的位数(例如输入123.4则输出3,输入0.6则输出0)。Input输入为实型。Output输出为整型。Sample Input123.4Sample Output38.整数位数#includeint main() int x,n=0; float c=2.0; scanf(%f,&c); x=int(c); while(x!=0) n+; x=x/10;
11、printf(%dn,n); return 0;第9题TitleTime Limit1000MSMemory Limit10000KBDescription编写程序利用下面公式计算的近似值:InputOutput输出为实型,保留六位小数。Sample InputSample Output3.1415919.计算的近似值#include#includeint main()int a=1,f=1;double p=0; while(fabs(1.0/a)=1e-6) p=p+1.0/a*f; a=a+2; f=-f; printf(pi=%.6lfn,4*p); return 0;第10题Title级数和Time Limit1000MSMemory Limit10000KBDescription编写程序求下面级数前n项的和,其中n从键盘上输入。Input输入n为整型。Output输出和为实型,保留六位小数。Sample Inpu