1、C语言程序设计(第三版)习题库
1、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算成果,输出时规定文字阐明,取小数点后两位数字。请编程序。
#include
2、a=%.2fSb=%.2fVa=%.2fVb=%.2f”,Cl,Sa,Sb,Va,Vb);
}
2、输入一种华氏温度,规定输出摄氏温度。公式为 c=5(F-32)/9
输出规定有文字阐明,取位2小数。
#include
3、"); 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# inc
4、lude "stdio.h" main() { int x,y; scanf("%d",&x); if(x<1) { y=x;} else if(x>=1 && x<10) { y=2*x-1;} else { y=3*x-11;} printf("%d",y); }# include "stdio.h" main() { int x,y; scanf("%d",&x); if(x<1) { y=x;} else if(x>=1 && x<10) { y=2*x-1;} else { y=3*x-11;} pri
5、ntf("%d\n",y); }# include "stdio.h" main() { int x,y; scanf("%d",&x); if(x<1) { y=x;} else if(x>=1 && x<10) { y=2*x-1;} else { y=3*x-11;} printf("%d",y); }scanf("%d",&x); if(x<1) { y=x;} else if(x>=1 && x<10) { y=2*x-1;} else { y=3*x-11;} # include "stdio.h" main()
6、
{
int x,y;
scanf("%d",&x);
if(x<1)
y=x;
else if(x>=1 && x<10)
y=2*x-1;
else
y=3*x-11;
printf("%d",y);
},y);
}
}
4、给定一种不多于5位正整数,规定:① 求它是几位数;②按逆序打印出各位数字。例如原数为321,应输出123。
#include
7、 while(num>0){
i++; /*记录长度*/
m=m*10+num%10;
num =num/10;
}
printf("数字长度为:%d",i);
printf("逆序数字为:%d\n",m);
}
5、如下程序实现功能:求三个数最大值
#include
8、} else{
if(b>c) max=b;
else
max=c;
}
printf("max= %d",max);
}
#include
9、
}
6、输入两个正整数m和n,求其最大公约数和最小公倍数。
/*枚举法*/
#include
10、{
int a,b,k,temp,i,p;
scanf("%d,%d",&a,&b);
if(a>b)
temp=b;
else
temp=a;
for(i=2;i<=temp;i++)
{ if(a%i==0 && b%i==0)
k=i;
}
printf("%d\n",k);
p=a*b/k;
printf("%d\n",p);
}
/*辗转相除*/
#include
11、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
12、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=
13、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
14、um);
}
9、打印出所有"水仙花数",所谓"水仙花数"是指一种三位数,其各位数字立方和等于该自身。例如:153是一种水仙花数,由于153=13+53+33。
【程序1】
#include
15、){ 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
16、
#include
17、
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
18、
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
19、s=__s+h*2__;
}
printf("s=%f,h=%f\n",s,h);
}
13、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还但是瘾,又多吃了一种。第二天早上又将剩余桃子吃掉一半,又多吃一种。后来每天早上都吃了前一天剩余一半零一种。到第10天早上想再吃时,见只剩余一种桃子了。求第一天共摘多少桃子。
#include 20、14、用迭代法求 。求平方根迭代公式为:
规定先后两次求出得差绝对值少于0.00001。
#include 21、
#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);
}
16、用二分法求方程在(-10,10)之间根
#include 22、
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 23、 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 24、o.h>
#include 25、
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 26、y=%d”,day);
}
21、找出整数所有因子
#include 27、 if (k != i)
for (j = 0;j <= 9;j++)
if (__j!=i&&j!=k__) n++;
printf(“n=%d\n”,n);
}
23、用100元换成1、2、5元所有兑换方案。
#include 28、 printf(“%2d %2d %2d”,i,j,k);
l = l + 1;
if (l%5==0) printf(“\n”);
}
}
}
24、输出1-100之间满足每位数乘积不不大于每位数和数
#include 29、
s+=m%10;
___m/=10__;
}
if (k>s) printf(“%d”,n);
}
25、从3个红球、5个白球、6个黑球中任意取出8个球,且其中必要有白球,输出所有也许方案。
#include 30、3d %3d\n”,i,j,k);
}
}
26、如下程序功能是:判断一种四位数与否满足这样条件:它9倍刚好是它反序数。反序数是指整数各个位上数字逆序所形成整数。请完毕程序填空。
#include 31、m==i*9__) __break__;
}
printf("i=%d",i);
}
27、如下程序完毕两整数互换。
#include 32、io.h>
main(){
int year ;
scanf(“%d”,&year);
if (__year%400==0||year%4==0&&year%100!=0__) printf(“yes”);
else printf(“No”);
}
29、如下程序运用冒泡排序法对输入10个数进行排序。
#include 33、N;i++)
scanf("%d",__&a[i]__);
printf("\n");
for(j=0;j 34、n″);
}
30、用筛法求100之内素数。筛法素数思想是:1、取最小数2,并声明它是素数,同步筛去它及它倍数。2、取未筛去数中最小数,并声明它是素数,同步筛去它及它倍数。3、重复环节2至筛中无数,得到所有素数。
#include 35、
for(i=1;i 36、a[i]!=0__) {
printf("%5d",a[i]);
if((++j)%10==0) /* 十个数换行 */
printf("\n");
}
}
getch();
}
31、用选取法对10个整数从小到大排序。
#include 37、for (i=0;i






