C语言程序设计习题库(含答案)
1、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include
float r,h,C1,Sa,Sb,Va,Vb; scanf(__”%f”__,&r); scanf(”%d”,__&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、输入一个华氏温度,要求输出摄氏温度。公式为 c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include
float F,c;
scanf(\
____c=5*(F-32)/9______; printf(\}
x?1?x?3、有一函数:y??2x?11?x?10 写一程序,输入x值,输出y值。
?3x?11x?10?#include
int x,y;
printf(\输入x:\scanf(\
if(x<1) { /* x<1 */ y=x;
printf(\
} else if (____x<10_______){ /* 1≤x-10 */ _____y=2*x-1_______;
printf(\} else{ /* x≥10 */ y=3*x-11;
printf(\main()
{
int x,y;
scanf(\ if(x<1) { y=x;}
else if(x>=1 && x<10) { y=2*x-1;} else
{ y=3*x-11;} printf(\
}# include \main() {
int x,y;
scanf(\ if(x<1) { y=x;}
else if(x>=1 && x<10) { y=2*x-1;} else
{ y=3*x-11;} printf(\}# include \main() {
int x,y;
scanf(\ if(x<1) { y=x;}
else if(x>=1 && x<10) { y=2*x-1;} else
{ y=3*x-11;} printf(\}scanf(\ if(x<1) { y=x;}
else if(x>=1 && x<10) { y=2*x-1;} else
{ y=3*x-11;} # include \main() {
int x,y;
scanf(\ if(x<1) y=x;
else if(x>=1 && x<10) y=2*x-1; else
y=3*x-11;
printf(\},y); } }
4、给定一个不多于5位的正整数,要求:① 求它是几位数;②按逆序打印出各位数字。例如原数为321,应输出123。 #include
long int num,m=0; int i=0;
scanf(\ while(num>0){ i++; /*统计长度*/ m=m*10+num; num =num/10; }
printf(\数字长度为:%d\ printf(\逆序数字为:%d\\n\}
5、以下程序实现的功能:求三个数的最大值
#include
int a,b,c,max;
scanf(\ if(a>b){
if(a>c) max=a; else max=c; } else{
if(b>c) max=b; else max=c; }
printf(\}
#include
int x,y,z,t=0;
scanf(\ if(x>y)
{t=y;y=x;x=t;} if(x>z)
{t=z;z=x;x=t;} if(y>z)
{t=z;z=y;y=t;} printf(\ }
6、输入两个正整数m和n,求其最大公约数和最小公倍数。 /*枚举法*/
#include
long m,n,i=1,j,s;
scanf(\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(\}
#include
int a,b,k,temp,i,p; scanf(\ if(a>b) temp=b; else
temp=a;
for(i=2;i<=temp;i++) { if(a%i==0 && b%i==0) k=i; }
printf(\ p=a*b/k;
printf(\ }
/*辗转相除*/
#include
main(){
int m,n,k,j,p,r=1; scanf(\k= m>n?m:n; j= m>n? n:m; do{ r=k%j; k=j; j=r;
}while(r!=0);
printf(\}
/*反复减法*/
#include
int m,n,k,j,p,r=1; scanf(\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(\}
7、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 #include\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(\}