(完整版)C语言程序设计教程第六章课后习题参考答案
- 格式:pdf
- 大小:75.02 KB
- 文档页数:8
P158
1
求三个实数最大值
#include
float max(float,float,float);
int main()
{
float a,b,c,m;
printf("
请输入三个实数
:");
scanf("%f %f %f",&a,&b,&c);
printf("
最大数为
%f\n",max(a,b,c));
return 0;
}
float max(float a,float b,float c)
{
float t;
if(a>b&&a>c)
t=a;
else if(b>a&&b>c)
t=b;
else
t=c;
return t;
}
P158
2
求最大公约数
最小公倍数
#include
int fun1(int a,int b);
int fun2(int a,int b);
int main()
{
int a,b;
printf("
请输入两个整数
:");
scanf("%d %d",&a,&b);
printf("
最大公约数为
:%d\n",fun1(a,b));
printf("
最小公倍数为
:%d\n",fun2(a,b));
}
int fun1(int a,int b)
{
int t,r;
if(a
{
t=a;
a=b;
b=t;}
while((r=(a%b))!=0)
{
a=b;
b=r;
}
return b;
}
int fun2(int a,int b)
{
int n;
n=(a*b)/fun1(a,b);
return n;
}
P158
3
求完全数
#include
void wan(int n);
void main()
{
int n;
for(n=1;n<1000;n++)
wan(n);
printf("\n");
}
void wan(int n)
{
int i,s=0;
for(i=1;i<=n/2;i++)
{
if(n%i==0)
s=s+i;
}
if(n==s)
printf("%d\t",n);
}
P158
4
无暇素数
#include
#includeint nixvshu(int n);
int isPrime(int n);
int main()
{
int n,t;
printf("
无暇素数
:\n");
for(n=100;n<=999;n++)
{
t=nixvshu(n);
if(isPrime(n)&&isPrime(t))
printf("%d\t",n);
}
printf("\n");
return 0;
}
int nixvshu(int n)
{
int x=0;
while(n)
{
x=x*10+n%10;
n=n/10;
}
return x;
}
int isPrime(int n)
{
int i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0) return 0;
return n;
}
P158
7
递归函数
#include
int Y(int n)
{
if(n==0)
return 0;
if(n==1)
return 1;if(n==2)
return 2;
else
return (Y(n-1)+Y(n-2)+Y(n-3));
}
int main()
{
int n,k=0;
for(n=0;n<=19;n++)
{
printf("%d\t",Y(n));
k++;
if(k%5==0)
printf("\n");
}
return 0;
}
P124
6
分解质因数
#include
#include
int isPrime(int n);
int zhi(int m);
void fenjie(int );
int main()
{
int n;
printf("
请输入一个正整数
:");
scanf("%d",&n);
if(isPrime(n))
{
printf("%d=1*%d\n",n,n);
}
else
{
fenjie(n);
printf("\n");
}
return 0;
}
int isPrime(int n)
{int i;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0) return 0;
}
return 1;
}
int zhi(int n)
{
int m;
for(m=2;m<=n;m++)
{
if(isPrime(m)&&(n%m==0))
break;
}
return m;
}
void fenjie(int n)
{
int m;
printf("%d=%d",n,zhi(n));
while(n>zhi(n))
{
m=zhi(n);
n=n/m;
printf("*%d",zhi(n));
}
}
P47
1
输出闰年
#include
int f(int year);
int main()
{
int year,k=0;
for(year=1900;year<=2000;year++)
{
if(f(year))
{
printf("%d\t",year);
k++;if(k%5==0)
printf("\n");
}
}
return 0;
}
int f(int year)
{
if((year%4==0&&year%100!=0)||(year%400==0))
return year;
else
return 0;
}
P47
2
输出回文数
#include
int fun(int n);
int main()
{
int n,k=0;
for(n=10;n<=2000;n++)
{
if(n == fun(n))
{
printf("%d\t",n);
k++;
if(k%5==0)
printf("\n");
}
}
return 0;
}
int fun(int n)
{
int i=0;
while(n>0)
{
i=i*10+n%10;
n=n/10;
}return i;
}
P47
3
进制转换
#include
void trans(int n,int base);
int main()
{
int n,base;
printf("
请输入要转换的十进制数:
");
scanf("%d",&n);
printf("
请输入转换的进制:
");
scanf("%d",&base);
trans(n,base);
printf("\n");
return 0;
}
(方法一)
void trans(int n,int base)
{
if(n)
{
trans(n/base,base);
if(n%base>=10)
switch(n%base)
{
case 10:printf("A");break;
case 11:printf("B");break;
case 12:printf("C");break;
case 13:printf("D");break;
case 14:printf("E");break;
case 15:printf("F");break;
}
else
printf("%d",n%base);
}
}
(方法二)
void trans(int n,int base)
{
int r;