版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语 言 程 序 设 计(第 三 版)习 题 库1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体 积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数 字。请编程序。#include<>main()floatr,h,C1,Sa,Sb,Va,Vb;scanf(_ " f" _,&r);scanf( "d', _&h_);;C1=2*r;Sa=*r*r;Sb=4*Sa;Va=4*r*r*r/3;Vb=Sa*h;printf( " Cl=%.2fSa=%.2fSb=%.
2、2fVa=%.2fVb=%.2f” ,Cl,Sa,Sb,Va,Vb );2、输入一个华氏温度,要求输出摄氏温度。公式为 c=5(F-32)/9输出要求有文字说明,取位 2小数。#include<>main()floatF,c;scanf("%f",&F);c=5*(F-32)/9;printf("c=%.2f",c);x x 13、有一函数:y 2x 11 x 10写一程序,输入x值,输出y值。3x 11 x 10#include<>main()intx,y;printf(" 输入 x :");scan
3、f("%d",&x);if(x<1)/*x<1*/y=x;printf("x=%3d,y=x=%dn",x,y);elseif( x<10)/*1 <x -10*/y=2*x-1;printf("x=%3d,y=2*x-1=%dn",x,y);else/*x > 10*/y=3*x-11;printf("x=%3d,y=3*x-11=%dn",x#include""main()intx,y;scanf("%d",&x);if(x&
4、lt;1)y=x;elseif(x>=1&&x<10)y=2*x-1;elsey=3*x-11;printf("%d",y);#include”"main()intx,y;scanf("%d",&x);if(x<1)y=x;elseif(x>=1&&x<10)y=2*x-1;elsey=3*x-11;printf("%dn",y);#include""main()intx,y;scanf("%d",&x);i
5、f(x<1)y=x;elseif(x>=1&&x<10)y=2*x-1;elsey=3*x-11;printf("%d",y);scanf("%d",&x);if(x<1)y=x;elseif(x>=1&&x<10)y=2*x-1;elsey=3*x-11;#include""main()intx,y;scanf("%d",&x);if(x<1)y=x;elseif(x>=1&&x<10)y=2*x
6、-1;elsey=3*x-11;printf("%d",y);,y);4、给定一个不多于5位的正整数,要求:求它是几位数;按逆序打印出各位数 字。例如原数为321,应输出123。#include<>main()longintnum,m=0;inti=0;scanf("%ld",&num);while(num>0)i+;/*统计长度*/m=m*10+num%10;num=num/10;printf("数字长度为:%d",i);printf("逆序数字为:%dn",m);5、以下程序实现的功能
7、:求三个数的最大值#include<>main()inta,b,c,max;scanf("%d%d%d",&a,&b,&c);if(a>b)if( a>c)max=a;else max=c;elseif( b>c) max=b;elsemax=c;printf("max=%d",max);#include<>main()intx,y,z,t=0;scanf("%d%d%d",&x,&y,&z);if(x>y)t=y;y=x;x=t;if(x
8、>z)t=z;z=x;x=t;if(y>z)t=z;z=y;y=t;printf("%dn",z);6、输入两个正整数 m和n,求其最大公约数和最小公倍数/*枚举法*/#include<>main()longm,n,i=1,j,s;scanf("%ld,%ld",&m,&n);for(;i<=m&&i<=n;i+)if( m%i=0&&n%i=0=i;if(m>=n) j=m;elsej=n;for(;!(j%m=0&&j%n=0);j+);prin
9、tf("s=%ld,j=%ldn",s,j);#include<>main()inta,b,k,temp,i,p;scanf("%d,%d",&a,&b);if(a>b)temp=b;elsetemp=a;for(i=2;i<=temp;i+)if(a%i=0&&b%i=0) k=i;printf("%dn",k);p=a*b/k;printf("%dn",p);/*辗转相除*/#include<> main() intm,n,k,j,p,r=1;
10、 scanf("%d,%d",&m,&n); k=m>n?m:n;j=m>n?n:m;dor= k%j;k=j;j=r;while( r!=0);printf("%d,%d",k,m*n/k);/*反复减法*/#include<> main() intm,n,k,j,p,r=1; scanf("%d,%d",&m,&n);k=m>n? m:n;j=m>n?n:m;dop=k-j ;if(j>p)k=j;j=p; elsek=p;while( p!=0);prin
11、tf("%d,%d",k,m*n/k);7、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数#include”"main()charc;inti=0,j=0,k=0,l=0;while(c=getchar()!= ' n' )if( c>=' A &&c<= Z' |c>= ' a' &&c<= z')i+;数求的值,直到最后一项的绝对值小于10-6为止。求绝对值的函数为fabs() o#_include<> _#includ
12、e<>main()inti=1,flag=1;doublesum=,s; dos=(2*i-1) _;sum+=s*flag;i+;_flag=-flag _;while(_fabs(s)>1e-6_);/*/printf("pi=%f",_ 4*sum_);一11、有一分数序列:2/1,3/2,5/3, 求出这个数列的前20项之和。#include<>#defineN20main()inti=1;doublex=1,y=2,sum=0;while( i<=20_)sum=sum+_ y/x _;y=_ x+y_;x=_ y-x_; i+
13、; printf("%fn",sum);12、一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高?#include<>main()inti,n=10;doubleh=100,s=100;for(i=2;i<=n;i+) h*=;s=_ s+h*2_;printf("s=%f,h=%fn",s,h);13、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多 吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃 了前一天剩下的一半零一个。到
14、第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。#include<>#defineN10main()inti=1,sum=1;while(i+<N)sum=_( sum+1)*2_;printf("sum=%dn",sum);14、用迭代法求。求平方根的迭代公式为:要求前后两次求出的得差的绝对值少于。#include<>#include<>main()floatx0,x1,a;scanf("%f",&a);x1=a/2;dox0=x1;x1=_ (x0+a/x0)/2 _;while(_x
15、1>1e-5_);printf("%gn",x1);15、用牛顿迭代法求方程2x3 4x2 3x 6 0在附近的根。#include<>#include<#definef(x)2*x*x*x-4*x*x+3*x-6main()doublex,y;x=;doy=f(x);x=x-y/(6*x*x-8*x+3);while(fabs(y)>1e-6);printf("x=%.3fn",x);324、.16、用二分法求方程2x 4x 3x 6。在(-10, 10)之间的根#include<>#include<&g
16、t;#definef(x)2x*x*x-4*x*x+3*x-6main()doublex1=-10,x2=10,x,y;dox=(x1+x2)/2;y=f(x);if(y<0)x1=x;elsex2=x;while(fabs(y)>1e-6);printf("x=%gn",x);17、以下程序的功能是:输入一个百分制成绩,输出一个五级制成绩等级。例如输 入75,输出Co请完成填空#include<>main()intscore;scanf("_%d ",&score);switch(_score/10 _)case1:ca
17、se2:case3:case4:case5:printf( gradeEn "); break_;case6:printf(gradeDn");break;case7:printf(gradeCn");break;case8:printf(gradeBn");break;case9:printf(gradeAn");break;_ default_:printf("Errorinput!n");18、该程序功能:对 x=1,2,.,10,求 f(x)=x*x-5*x+sin(x)的最大值。#include<>#i
18、nclude<>#definef(x)x*x-5*x+sin(x)voidmain()intx;floatmax;_max=f(1) _;for(x=2;x<=10;x+)_if(max<f(x)max=f(x)_;printf("%fn",max);19、程序功能:输入整数a和b的值,若a2+b2大于100,则输出a2+b2百位以上的 数字,否则输出两数之和。#include<>main()inta,b,s;scanf("%d%d”,&a,&b);s=_ a*a+b*b _;if(s>100)printf
19、("%d",_s/100 _);elseprintf("%d”, a+b );20、有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,以下程 序统计卖完所需的天数。#include<>main()intday,x1,x2;day=0;x1=1020;while(_ x1>0_)x2=_ x1/2-2 _;x1=x2;day+printf( "day=%d” ,day);21、找出整数的所有因子#include<>main()inti,x;scanf("d',&x);i=1;for(;
20、_i<=x/2 _;)if(x%i=0)printf(%d,i);i+;)3位偶数22、统计用数字0-9可以组成多少个各位上的数字没有重复的#include<>main()intn=0,i,j,k;for(i=1;i<=9;i+)for(k=0;k<=8;_k+=2 )if(k!=i)for(j=0;j<=9;j+)if(_ j!=i&&j!=k _)n+;printf( "n=%dn ” ,n);)23、用100元换成1、2、5元的所有兑换方案。#include<>main()inti,j,k,l=0;for(i=0;
21、i<=20;i+)for(j=0;j<=50;j+)k=_( 100-i-2*j)/5_;if(_ i+j*2+k*5=100 _)printf("2d%2d%2d,i,j,k);l=l+1;if(l%5=0)printf("n ” );)24、输出1-100之间满足每位数的乘积大于每位数的和的数#include<>main()intn,k=1,s=0,m;for(n=1;n<=100;n+)k=1;s=0;m=n ;while(_m>0 )k*=m%10;s+=m%10;m/=10 ;if(k>s)printf("d”,
22、n);25、从3个红球、5个白球、6个黑球中任意取出8个球,且其中必须有白球,输出 所有可能的方案。#include<>main()inti,j,k;for(i=0;i<=3;i+)for(_ j=1 _;j<=5;j+)k=8 - i - j;if(_ k>=0_)printf( " %3d%3d%3dn ”浦,k);26、以下程序的功能是:判断一个四位数是否满足这样的条件:它的9倍刚好是它的反序数。反序数是指整数各个位上的数字逆序所形成的整数。请完成程序的填 空。#include<>main()inti,a,b,c,d,m;for(i=1
23、000;i+)a=_i%10_;b=i/10%10;c=i/100%10;d=i/1000;m= a*1000+b*100+c*10+d ;if( m=i*9 _)_ break_;printf("i=%d",i);27、以下程序完成两整数的交换。#include<>main()inta,b;printf(请依次输入a,b的值:");scanf(%d,%d”,_ &a,&b_);a=a+b;b=a-b ;_a=a-b_;printf(交换后:a=%d,b=%d ”,a,b);28、以下程序的功能是判断输入的年份是否为闰年,若是则输出“y
24、es”,否则输出“ No”。#include<>main()intyear?;scanf(%d' ,&year);if(_ year%400=0|year%4=0&&year%100!=0_)printf(yes ”);elseprintf(No");29、以下程序利用冒泡排序法对输入的10个数进行排序。#include<>#defineN10voidmain()intaN;inti,j,t;printf( " input10numbers:n ");for(i=0;i<N;i+) scanf(&quo
25、t;%d" , _&ai _);printf("n");for(j=0;j<N-1;j+)for(i=0;i<_N-j-1 _;i+)if(_ ai>ai+1_)t=ai;ai=ai+1;a i+1 =t;printf( " thesortednumbers:n ");for(i=0;i<N;i+)printf( " %cT ,a i );printf( n );30、用筛法求100之内的素数。筛法素数的思想是:1、取最小的数2,并声明它是 素数,同时筛去它及它的倍数。2、取未筛去数中最小的数,并声明它
26、是素数,同 时筛去它及它的倍数。3、重复步骤2至筛中无数,得到所有的素数。#include<>#defineM100n, num);39、输出10行的杨辉三角形。III1211331 #include<>#defineN10main()inti,n,k,aN=1;printf( "5dn ",a0);for(i=1;i<N;i+)for(j=i;j>=1;j-)aj=_aj+aj-1for(j=0;_ j<=i _;j+)printf("5d”,aj);printf("n ” );)40、以下程序的功能是:从键盘
27、输入一个整数n (nW 10)和n个整数,存入数组a中,先依次输出各个数组元素的值,然后找出最大值,并输出。#include<>main()inta10,n,i,j,_max_;printf("输入 n=");scanf("%d",&n);printf("输入各数组元素:");for(i=0;i<n;i+)scanf("%d",_&ai _);printf("输出各数组元素:");for(_ i=0;i<n;i+ _)printf("%d&quo
28、t;,_ai _);printf("n");max=_ a0 _;for(j=1;j<n;j+)if(ai>max)_max= ai _;printf(" 最大值:dn",max);)41、以下程序实现的功能是:将字符串 s中所有的字符c删除。请完成程序填充#include<>#include<>main()chars80;inti,j;gets(s);for(i=j=0;_si!= ' 0 ' _;i+)if(si!='c')sj=si;j+_;)sj='0'puts(
29、s);)42、以下程序的功能是:按顺序读入 10名学生4门课程的成绩,计算出每位学生的 平均分并输出,请完成程序填充。#include<>#defineN10main()intn,k;floatscore,sum,ave;for(n=1;n<=N;n+)sum=O ;for(k=1;k<=4;k+)scanf("%f",&score);sum+=score ;)sum/=4 ;printf("NO.%d:%fn",n,ave);)43、本程序的功能是:输入一用字符,将字符串中的字符反序输出。#include<>
30、#include<>main()inti,j,k;charstr80;gets(str);for(i=0,j=_n-1 _;i<j;i+,j-)k=stri;stri=strj;strj=k;)puts(_ str _);)44、求方程ax2+bx+c=0的根,用三个函数分别求当 b2-4ac大于0、等于0、和小于0 时的根,并输出结果。从主函数输入 a、b、c的值。#include<>#include<>voiddoubleRoots(doublea,doubleb,doublec) doublex1,x2,delta;delta=_ b*b-4*a
31、*c _;x1=(-b+sqrt(delta)/(2*a);x2=(-b-sqrt(delta)/(2*a);printf("Equationhastwodifferentroots:n");printf("x1=%g,x2=%g",x1,x2);voidSingleRoot(doublea,doubleb,doublec)doublex1;x1=_ -b/2/a _;printf("Equationhastwoequalroots:n");printf("x1=x2=%g”,x1);voidNoRoot(void)prin
32、tf("Norealrootfoundfortheequationn");main()doublea,b,c,delta;scanf("%lf%lf%lf",&a,&b,&c);delta=b*b-4*a*c;if(delta>0)_doubleRoots(a,b,c) _;elseif(delta<0)_NoRoot()_;else_ SingleRoot(a,b,c)_;45、写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。#include<>#include<>voidI
33、sPrime( intn _)inti;intk=sqrt(n);for(i=2;_i<=k_;i+) if(n%i=0)break;if(i>=k+1)printf("%disPrimenumbern",n); elseprintf("%disnotPrimenumbern",n);)main()intn;scanf("%d",&n);IsPrime( n_);)46、用牛顿迭代法求根。方程为 ax3+bx2+cx+d=0,系数a, b, c, d由主函数输入 求x在1附近的一个实根。求出后由主函数输出。#inc
34、lude<>#include<>doubleEquationRoot(doublea,doubleb,doublec,doubled)doublex,y;x=1;doy=a*x*x*x+b*x*x+c*x+d;x=x-y/(3*a*x*x+2*b*x+c);while(_fabs( y)>1e-6 _);return_ x_;main()doublea,b,c,d,x;scanf("%lf%lf%lf%lf',&a,&b,&c,&d);x=_ EquationRoot(a,b,c,d)_;printf("
35、x=%g",x);47、输入10个学生5门课的成绩,分别用函数求:每个学生平均分;每门课的 平均分;找出最高分所对应的学生和课程;求平均分方差:19 xi1x2 (-L)2,其中xi为一学生的平均分。nn#include<>#defineM5#defineN10voidEachStudentEverageMark(floata口口,intm,intn)/*求每个学生的平均分。m-学生数,n-课程数*/inti,j;floatsum;for(i=0;i<m;i+)sum=;for(j=0;j<n;j+)sum+=aji;printf("averagem
36、arkofthe%dthstuis%gn",i+1,sum/n);)voidEachCourseEverageMark(_floata _,intm,intn)/*每门课的平均分*/inti,j;floatsum;for(i=0;i<n;i+)sum=;for(j=0;j<m;j+)sum+=aij;printf("averagemarkofthe%dthstuis%gn",i+1,sum/n);)voidMaxScore(floata,intm,intn)/*找出最高分所对应的学生和课程*/inti,j,s,t;floatmax=a00;s=0,t=
37、0;for(i=0;i<n;i+)for(j=0;j<m;j+)if(max<aij)max=aij;s=i;t=_ j_;)printf("the%dthcourseandthe%dthstuhasthemaxn",s,t);)voidAverageVariance(floata,intm,intn)/*求平均分方差*/floatdelta,ave,avesq=0,avesum=0;inti,j;for(i=0;i<m;i+)ave=0;for(j=0;j<n;j+)ave+=aji;)ave/=n;avesq+=ave*ave;avesum
38、+=ave;)delta=_ avesq/n-avesum*avesum/n/n _;printf("varianceofthe%dthstuis%gn",i+1,delta);)main()floataMN;inti,j;for(i=0;i<M;i+)for(j=0;j<N;j+)scanf("%f",&aij);EachStudentEverageMark(a,M,N);EachCourseEverageMark(a,M,N);MaxScore(a,M,N);AverageVariance(a,M,N);)48、写几个函数:输个职
39、工的姓名和职工号;按职工号由小到大顺序排序,姓 名顺序也随之调整;要求输入一个职工号,用折半法找出该职工的姓名,从主函 数输入要查找的职工号,输出该职工姓名。#include<>intnum100;/ 职工号charname100100;/职工姓名intcount=0;voidinformationInput(void)职工信息输入inti,n;printf("howmanydoyouwanttoinput:n");scanf("%d",&n);printf("pleaseenterthenameandnumbers:n&q
40、uot;);for(i=count;i<n;i+)printf("%d:",i-count);scanf("%s",namei);scanf("%d",&numi);)count+=n;)voidsorting()/按职工号进行排序inti,j,t;charstr100;for(i=0;i<count;i+)for(j=0;j<count-i-1;j+)if(numj>numj+1) t=numj;strcpy(str,_namej _);numj=numj+1;strcpy(namej,_namej+
41、1 _);numj+1=t;strcpy(namej+1,str);voidsearch(intnb)/用职工号找出该职工的姓名intlow,high,mid;low=0;high=count-1;domid=(low+high)/2;if(nummid>nb)high=mid-1;elseif(nummid<nb)low=mid+1;elsebreak;while(_low<=high_);if(low>high)printf("employeenotexistn");elseprintf("%sisfoundn",namemi
42、d);main()intk;informationInput();sorting();printf("numtofind:");scanf("%d",&k);search(k);49、写一函数,输入一个十六进制数,输出相应的十进制数#include<>intHexToDecimal(char*hex) intlen,i,dec;if(hex=NULL)return0;len=strlen(hex);for(i=0,dec=0;i<len;i+)if(hexi>='0'&&hexi<=&
43、#39;9')dec=_dec*16+(hexi-48) _;elseif(hexi>='a'&&hexi<='f)dec=_ dec*16+hexi- 'a' +10_;elseif(hexi>='A'&&hexi<='F')dec=_ dec*16+hexi-'A' +10;returndec;main()charhex100;gets(hex);printf("hextodecimalis%d”,HexToDecimal(hex);50、将一个整数n转换成字符串。例如,输入 486,应输出字符串"486"。n的位数 不确定,可以是任意位数的整数。#include<>voidDigitToString(intn)inti=0,j;charch80='0',t;while(n)chi+=_n%10+ 0' _;n/=10;for(j=0;j<_i/2 _;j+)/*orderinverse*/t=chj;chj=chi-j-1;chi-j-1=t;printf("%s",ch);main()intk;scanf("%d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024至2030年中国防静电玻璃纤维板行业投资前景及策略咨询研究报告
- 2024至2030年中国透皮制剂行业投资前景及策略咨询研究报告
- 2024至2030年中国云台式探照灯行业投资前景及策略咨询研究报告
- 2024至2030年中效板式过滤器项目投资价值分析报告
- 2024年中国钢结构保温平板市场调查研究报告
- 2024年中国菱镁复合材料井盖市场调查研究报告
- 高职单招十类计算机多选题
- 《企业行为文化》课件
- 分析说明文语言准确性课件全面版
- 学习雷锋精神主题班会课件版
- 《中国政治思想史》课程教学大纲
- 学校矛盾纠纷排查化解工作方案(3篇)
- 高血压疑难病例讨论
- (正式版)HGT 6313-2024 化工园区智慧化评价导则
- 6人小品《没有学习的人不伤心》台词完整版
- GA 1551.6-2021 石油石化系统治安反恐防范要求 第6部分:石油天然气管道企业
- (完整版)高压开关柜技术协议(10KV配电所10KV高压成套开关柜设备供货)最新(精华版)
- GB∕T 40150-2021 粮油储藏 储粮机械通风均匀性评价方法
- 陕西省中小河流治理项目《运行管理工作报告编制指南》
- 商场商户装修入驻工作流程
- 新产品试产导入流程
评论
0/150
提交评论