首页 C语言程序设计(第三版)习题库

C语言程序设计(第三版)习题库

举报
开通vip

C语言程序设计(第三版)习题库C语言程序设计(第三版)习题库 1、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include main(){ float r,h,C1,Sa,Sb,Va,Vb; scanf(__”%f”__,&r); scanf(”%f”,__&h_);; C1=2*3.14*r; Sa=3.14*r*r; Sb=4*Sa; Va=4*3.14*r*r*r/3; Vb=Sa*h;...

C语言程序设计(第三版)习题库
C语言程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 (第三版)习 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 库 1、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include main(){ float r,h,C1,Sa,Sb,Va,Vb; scanf(__”%f”__,&r); scanf(”%f”,__&h_);; C1=2*3.14*r; Sa=3.14*r*r; Sb=4*Sa; Va=4*3.14*r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f”,Cl,Sa,Sb,Va,Vb); } 2、输入一个华氏温度,要求输出摄氏温度。 公式 小学单位换算公式大全免费下载公式下载行测公式大全下载excel公式下载逻辑回归公式下载 为 c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include main(){ float F,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } xx,1,,3、有一函数:y,2x,11,x,10 写一程序,输入x值,输出y值。 ,,3x,11x,10, #include main(){ int x,y; printf("输入x:"); scanf("%d",&x); if(x<1) { /* x<1 */ y=x; printf("x=%3d, y=x=%d\n",x,y); } else if (____x<10_______){ /* 1?x-10 */ _____y=2*x-1_______; printf("x=%3d, y=2*x-1=%d\n",x,y); } else{ /* x?10 */ y=3*x-11; printf("x=%3d, y=3*x-11=%d\n",x,y); } } 4、给定一个不多于5位的正整数,要求:? 求它是几位数;? 按逆序打印出各位数字。例如原数为321,应输出123。 #include main(){ long int num,m=0; int i=0; printf("请输入一个整数(0~99999):"); scanf("%ld",&num); while(__num>0__){ i++; /*统计长度*/ m= _m*10+num%10_; num = __num/10__; } printf(”数字长度为:%d”, __i__); printf(”逆序数字为:%d”, _m_); } 5、以下程序实现的功能:求三个数的最大值 #include main(){ int a,b,c,max; scanf("%d %d %d",&a,&b,&c); if(a>b){ if(____a>c______) max=a; else max=c; } else{ if(____b>c_____) max=b; else __max=c_______; } printf("max= %d",max); } 6、输入两个正整数m和n,求其最大公约数和最小公倍数。 /*枚举法*/ #include main(){ long m,n,i=1,j,s; scanf("%ld,%ld",&m,&n); for(;i<=m&&i<=n;i++){ if(__m%i==0&&n%i==0___) s=i; } if(m>=n) ___j=m__; else j=n; for(;!(j%m==0&&__j%n==0___);j++); printf("s=%ld,j=%ld\n",s,j); } /*辗转相除*/ #include main(){ int m,n,k,j,p,r=1; scanf("%d,%d",&m,&n); k= m>n?m:n; j= m>n? _n:m__; do{ r=__k%j__; k=j; j=r; }while(__r!=0__); printf("%d,%d",k,m*n/k); } /*反复减法*/ #include main(){ int m,n,k,j,p,r=1; scanf("%d,%d",&m,&n); k= m>n? __m:n__; j= m>n?n:m; do{ p=__k-j__; if(j>p){ k=j; j=p;} else k=p; }while(__p!=0__); printf("%d,%d",k,m*n/k); } 7、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 #include"stdio.h" main(){ char c;int i=0,j=0,k=0,l=0; while((c=getchar())!=’\n’) { if(__c>=’A’&&c<=’Z’||c>=’a’&&c<=’z’__) i++; //英文字母统计 else if( _c>=’0’&&c<=’9’_ ) j++; //数字统计 else if(__c==’ ’__) k++; //空格统计 else l++; } printf("i=%d,j=%d,k=%d,l=%d\n",i,j,k,l); } 8、求Sn=a+aa+aaa+„+aa„aaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5),n由键盘输入。 #include main(){ int a,n; long b=0,sum=0; %d %d”,&a,&n); scanf(“ for (int i=1;i<=n;i++) b = __b*10+a__; sum = __sum+b__; } printf (“%ld”,sum); } 9、打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因 333为153=1+5+3。 【程序1】 #include main(){ int i,m,n,k; for(i=100;i<1000;i++){ m=__i%10__; _ i/10%10__; n= k=i/100; if(__m*m*m+n*n*n+k*k*k==i__) printf("%5d",i); } } 【程序2】 #include main(){ int i,a,n,s; for (i=100;i<=999;i++){ n=i;s=0; while(n>0) { a=__n%10__; s+=a*a*a; n /=__10__; } if (__s==i__) printf(“%d”,i); } 10、一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。编程序找出1000之内的所有完数,并按下面格式输出其因子: 6 its factors are 1、2、3 #include main() { int a,i,m; for (a =1; a<=1000;a++) { for (__i=1,m=0__; i <= a/2;i++) if (!(a%i)) __m+=i__; if (m==a) printf(“%4d”,a); } } 11、利用:,/4=1-1/3+1/5-1/7+„.级数求,的值,直到最后一项的绝对值小于10-6为止。求绝对值的函数为fabs()。 #__include__ #include main(){ int i=1,flag=1; double sum=0.0,s; do{ s=__1.0/(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 #define N 20 main(){ int i=1; double x=1,y=2, sum=0; while(__i<=20__) { sum=sum+__y/x__; y = ___x+y__; x = __y-x__; i++; } printf("%f\n",sum); } 12、一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米,第10次反弹多高, #include main(){ int i,n=10; double h=100,s=100; for(i=2;i<=n;i++){ h*=__0.5__; s=__s+h*2__; } printf("s=%f,h=%f\n",s,h); } 13、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半, 又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。 #include #define N 10 main(){ int i=1,sum=1; while(i++ #include main(){ float x0,x1,a; scanf("%f",&a); x1=a/2; do{ x0=x1; x1=__(x0+a/x0)/2__; } while(__x1>1e-5__); printf("%g\n",x1); } 322x,4x,3x,6,015、用牛顿迭代法求方程在1.5附近的根。 #include #include ____ #define f(x) 2*x*x*x-4*x*x+3*x-6 main(){ double x,y;x=__1.5__; do{ y = f(x); x = x - y/(6*x*x-8*x+3); } while(fabs(y)>1e-6); printf("x=%.3f\n",x); } 322x,4x,3x,6,016、用二分法求方程在(-10,10)之间的根 #include #include #define f(x) 2x*x*x-4*x*x+3*x-6 main(){ double x1=-10,x2=10,x,y; do{ x=(x1+x2)/2; y=f(x); if(y<0) x1=x; else x2=x; }while(fabs(y)>1e-6); printf("x=%g\n",x); } 17、以下程序的功能是:输入一个百分制成绩,输出一个五级制 成绩等级。例如 输入75,输出 C。请完成填空 #include main(){ int score; scanf("__%d__",&score); switch(__score/10__){ case 1:case 2:case 3:case 4:case 5: printf(“grade E\n”); ___break__; case 6: printf(“grade D\n”);break; case 7: printf(“grade C\n”);break; case 8: printf(“grade B\n”);break; case 9: printf(“grade A\n”);break; __default__:printf("Error input!\n"); } } 18、该程序功能:对x=1,2,...,10,求f(x)=x*x-5*x+sin(x)的最大 值。 #include #include #define f(x) x*x-5*x+sin(x) void main(){ int x; float max; __max=f(1)__; for(x=2;x<=10;x++) __if(max main(){ int a,b,s; scanf("%d%d",&a,&b); s=__a*a+b*b__; if(s>100) printf("%d",__s/100__); else printf("%d",___a+b__); } 20、有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的 一半多两个,以下程序统计卖完所需的天数。 #include main(){ int day,x1,x2; day=0;x1=1020; while(__?__){ x2=__?__; x1=x2; day++} printf(“day=%d”,day); } 21、找出整数的所有因子 #include main(){ int i,x; scanf(“%d”,&x); i=1; for ( ; __i<=x/2__;){ if (x%i==0) printf(%d”,i); i++; } , 22、统计用数字0-9可以组成多少个各位上的数字没有重复的3 位偶数。 #include main(){ int n=0,i,j,k; for (i = 1;i <= 9;i++) for (k = 0;k <= 8; __?__) if (k != i) for (j = 0;j <= 9;j++) if (__?__) n++; printf(“n=%d\n”,n); } 23、用100元换成1、2、5元的所有兑换 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。 #include main() { int i,j,k,l=0; for (i = 0; i<=20;i++) for (j =0; j<=50; j++) { k= __?__; if (__?__){ printf(“%2d %2d %2d”,i,j,k); l = l + 1; if (l%5==0) printf(“\n”); } } } 24、输出1-100之间满足每位数的乘积大于每位数的和的数 #include main() { int n,k=1,s=0,m; for (n=1; n<=100; n++) { k=1; s=0; __?__; while (__?__) { k *=m%10; s+=m%10; ___?__; } if (k>s) printf(“%d”,n); } 25、从3个红球、5个白球、6个黑球中任意取出8个球,且其 中必须有白球,输出所有可能的方案。 #include main() { int i,j,k; for (i=0;i<=3;i++) for (__?__; j<=5;j++) { k = 8 – i – j; if (__?__) printf(“%3d %3d %3d\n”,i,j,k); } } 26、以下程序的功能是:判断一个四位数是否满足这样的条件: 它的9倍刚好是它的反序数。反序数是指整数各个位上的数字逆 序所形成的整数。请完成程序的填空。 #include main(){ int i,a,b,c,d,m; for(i=1000;;i++){ a=__?__; b=i/10%10; c=i/100%10; d=i/1000; m=__?__; if(___?__) __?__; } printf("i=%d",i); } 27、以下程序完成两整数的交换。 #include main(){ int a,b; printf(“请依次输入a,b的值:”); scanf(“%d,%d”, __?__); s=a+b; __?__; ___?__; printf(“交换后:a=%d,b=%d”,a,b); } 28、以下程序的功能是判断输入的年份是否为闰年,若是则 输出”yes”,否则输出”No”。 #include main(){ int year ; scanf(“%d”,&year); if (__?__) printf(“yes”); else printf(“No”); } 29、以下程序利用冒泡排序法对输入的10个数进行排序。 #include #define N 10 void main() { int a,N,; int i,j,t; printf(″input 10 numbers :\n″); for (i=0;i #define M 100 // 范围 #define N ((M+1)/2) // 奇数的个数 void main( ) { int i,j,a[N]; a[0] = 2; for(i=1;i #define N 10 main(){ int a[N],i,j,k,t; for (i=0;i main() { int i=0,j=0,a[N][N],s1=0,s2=0; for(i=0;i main() { int i,t,a[N]={1,7,8,17,23,24,59,62,101}; scanf("%d",&t); for(i=N-2;i>0;i--){ if(t #define N 11 main(){ int i,a[N],tmp; for(i=0;i main( ) { int i,j,k,a[N][N]; /* 初始化魔方阵——置为0,作为有无数字的判断*/ for(i=0;i N-1) {//到达右上角的位置 i=i+2; j--; } else { if(i<0) i=__?__; //上一数的行数为0,下一数的行数为n-1 if(j>N-1) j=0; //上一数的列数为n-1时,下一数的列数为0 } if(__?__){ //若下一数的位置上已经有数字, //则下一数存到上一个数行数加1的位置 i=(i+2)%N; j=(j -1 + N)%N; } a[i][j]= __?__; // 填数 } for(i=0;i #define M 5 #define N 4 main(){ int a[M][N],i,j,x,y,k,max,min;//x,y分别是用来记录鞍点的位置 int flag=0; //用于指示是否存在鞍点 for(i=0;ia[k][y]) {x=k; __?__;} if(__?__) , printf("a[%d][%d]=%d 是鞍点 \n",x,y,a[x][y]); flag=1; } } if (flag ==0) printf(“不存在鞍点\n”); } 37、有个15数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值。如果该数不在数组中,则打印出"无此数" #include #define N 15 main(){ int low,high,mid,x; int a[N]={1,4,9,13,21,34,55,89,144,233,377,570,671 ,703,812}; low=0,high=N-1; scanf("%d",&x); do{ mid=__?__; if(a[mid]==x) break; else if(a[mid] void main() { char string,81,; int i,num=0,word=0; char c; gets(string); for (i=0;(c=string,i,) __?__;i++) if(c==′ ′) word=0; else if(word==0) { word=__?__; num++; } printf(″There are %d words in the line.,n″,num); } 39、输出10行的杨辉三角形。 1 1 1 1 2 1 1 3 3 1 …… #include #define N 10 main(){ int i,n,k,a[N]={1}; printf(“%5d\n”,a[0]); for(i=1;i=1;j--) a[j]= __?__; for(j=0; __?__;j++) printf(“%5d”,a[i]); printf(“\n”); } } 40、以下程序的功能是:从键盘输入一个整数n(n?10)和n个整数,存入数组a中,先依次输出各个数组元素的值,然后找 出最大值,并输出。 #include main(){ int a[10],n,i,j, __?__ ; printf("输入 n="); scanf("%d",&n); printf("输入各数组元素:"); for(i=0;imax) __?__ ; printf("最大值:%d\n",max); } 41、以下程序实现的功能是:将字符串s中所有的字符c删除。 请完成程序填充 #include #include main(){ char s[80]; int i,j; gets(s); for(i=j=0; __?__;i++) if(s[i]!='c'){ s[j]=s[i]; __; __? } s[j]='\0'; puts(s); } 42、以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,请完成程序填充。 #include #define N 10 main(){ int n,k; float score,sum,ave; for(n=1;n<=N;n++){ __?__; for(k=1;k<=4;k++){ scanf("%f",&score); __?__; } __?__; printf("NO.%d:%f\n",n,ave); } } 43、本程序的功能是:输入一串字符,将字符串中的字符反序输出。 #include #include <__?__> main(){ int i,j,k; char str[80]; gets(str); for(i=0,j=__?__;i #include void doubleRoots(double a,double b,double c){ double x1,x2,delta; __; delta=__? x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); printf("Equation has two different roots:\n"); printf("x1=%g,x2=%g",x1,x2); } void SingleRoot(double a,double b,double c){ double x1; x1= __?__; printf("Equation has two equal roots:\n"); printf("x1=x2=%g",x1); } void NoRoot(void){ printf("No real root found for the equation\n"); } main(){ double a,b,c,delta; scanf("%lf%lf%lf",&a,&b,&c); delta=b*b-4*a*c; __; if(delta>0) __? else if(delta<0) __?__; else __?__; } 45、写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。 #include #include void IsPrime(__?__){ int i; int k=sqrt(n); for(i=2; __?__;i++) if(n%i==0) break; if(i>=k+1) printf("%dis Prime number\n",n); else printf("%d is not Prime number\n",n); } main(){ int n; scanf("%d",&n);; IsPrime(__?__); } 3246、用牛顿迭代法求根。方程为ax+bx+cx+d=0,系数a,b,c,d由主函数输入。求x在1附近的一个实根。求出后由主函数输 出。 #include #include double EquationRoot(double a,double b,double c,double d){ double x,y; x=1; do{ y=a*x*x*x+b*x*x+c*x+d; x=x-y/(3*a*x*x+2*b*x+c); }while(__?__); return __?__; } main(){ double a,b,c,d,x; scanf("%lf %lf %lf %lf",&a,&b,&c,&d); x=__?__; printf("x=%g",x); } 47、输入10个学生5门课的成绩,分别用函数求:?每个学生平均分;?每门课的平均分;?找出最高分所对应的学生和课程; x1,i22,,x,()?求平均分方差:,其中x为一学生的平均分。 i,inn #include #define M 5 #define N 10 void EachStudentEverageMark(float a[][],int m,int n){ /*求每个学生的平均分。m-学生数,n-课程数*/ int i,j; float sum; for(i=0;i int num[100]; //职工号 char name[100][100]; //职工姓名 int count=0; void informationInput(void){ //职工信息输入 int i,n; printf("how many do you want to input:\n"); scanf("%d",&n); printf("please enter the name and numbers:\n"); for(i=count;inum[j+1]){ t=num[j]; strcpy(str, __?__); num[j]=num[j+1]; strcpy(name[j], __?__); num[j+1]=t; strcpy(name[j+1],str); } } } void search(int nb){ //用职工号找出该职工的姓名 int low,high,mid; low=0;high=count-1; do{ mid=(low+high)/2; if(num[mid]>nb) high=mid-1; else if(num[mid]high)printf("employee not exist\n"); else printf("%s is found\n",name[mid]); } main(){ int k; informationInput(); sorting(); printf("num to find:"); scanf("%d",&k); search(k); } 49、写一函数,输入一个十六进制数,输出相应的十进制数。 #include int HexToDecimal(char* hex){ int len,i,dec; if(hex==NULL) return 0; len=strlen(hex); for(i=0,dec=0;i='0'&&hex[i]<='9') dec=__?__; else if(hex[i]>='a'&&hex[i]<='f') dec=__?__; else if(hex[i]>='A'&&hex[i]<='F') dec=__?__; } return dec; } main(){ char hex[100]; gets(hex); printf("hex to decimal is %d",HexToDecimal(hex)); } 50、将一个整数n转换成字符串。例如,输入486,应输出字符串"486"。n的位数不确定,可以是任意位数的整数。 #include void DigitToString(int n){ int i=0,j; char ch[80]={'\0'},t; while(n){ ch[i++]=__?__; n/=10; } for(j=0;j<__?__;j++){/*order inverse*/ t=ch[j]; ch[j]=ch[i-j-1]; ch[i-j-1]=t; } printf("%s",ch); } main(){ int k; scanf("%d",&k); DigitToString(k); } 51、给出年、月、日,计算该日是该年的第几天。 #include int find(int y,int m,int d){ int leap=0,i,s,days=0; if(y%400==0||__?__) leap=1; for(i=1;i void shift(int p[],int n,int m){ int i,j,t; for(i=0;i=0;j--) p[j+1]=p[j]; p[0]= __?__; } } main(){ int a[N],k,i; printf("please enter the numbers:\n"); for(i=0;i #define N 7 void f(int a[],int n,int k){ int i,j=0,m=n; /*j-报数,每次以k为基数循环移动,m 是桌上留下的人数*/ for(i=0;m!=1;i++){ if(i==n) i=0;/*数组指针循环移动*/ if(__?__){ j++; if(j==k+1) j=1; if(__?__){ m--; a[i]=0; } } } } main(){ int a[N]; int i,k=4; for(i=0;i int strlength(char* str){ int i,len=0; if(str==NULL) return __?__; for(i=0; __?__;i++) len++; return __?__; } main(){ char ch[]="chinease"; printf("string length=%d",strlength(ch)); }
本文档为【C语言程序设计(第三版)习题库】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_594886
暂无简介~
格式:doc
大小:76KB
软件:Word
页数:42
分类:互联网
上传时间:2017-10-16
浏览量:953