C语言程序设计三版_谭浩强主编第6—8章课后习题答案
C语言第6—8章课后习题答案
第六章 循环语句
6.1输入两个正数,求最大公约数和最小公倍数.
#include
void main()
{ int a,b,num1,num2,temp;
printf("请输入两个正整数:\n");
scanf("%d,%d",&num1,&num2);
if(num1
{
temp=num1;
num1=num2;
num2=temp;
}
a=num1,b=num2;
while(b!=0)
{
temp=a%b;
a=b;
b=temp;
}
printf("它们的最大公约数为:%d\n",a);
printf("它们的最小公倍数为:%d\n",num1*num2/a);
}
编译已通过
6.2输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数.
解:
#include
void main()
{
char c;
int letters=0,space=0,degit=0,other=0;
printf("请输入一行字符:\n");
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z' || c>'A'&&c<='Z')
letters++;
else if(c==' ')
space++;
else if(c>='0'&&c<='9')
digit++;
else
other++;
}
printf("其中:字母数=%d 空格数=%d 数字数=%d 其它字符数=%d\n",letters,space, digit,other);
}
6.3求s(n)=a+aa+aaa+…+aa…a之值,其中a是一个数字,n表示a的位数。
解:
void main()
{
int a,n,count=1,sn=0,tn=0;
printf("请输入a和n的值:\n");
scanf("%d,%d",&a,&n);
printf("a=%d n=%d \n",a,n);
while(count<=n)
{
tn=tn+a;
sn=sn+tn;
a=a*10;
++count;
}
printf("a+aa+aaa+…=%d\n",sn);
}
6.4 求 (即1+2!+3!+4!+…+20!)
void main()
{
float n,s=0,t=1;
for(n=1;n<=20;n++)
{
t=t*n;
s=s+t;
}
printf("1!+2!+…+20!=%e\n",s);
}
阶乘利用递归,再求和:
#include
using namespace std;
long Func(int n)
{
if(1==n)
return n;
if(n>1)
return n*Func(n-1);
}
main()
{
long s=0;
int i=1;
while (i<=6)
{
s=s+Func(i);
i++;
}
cout<
}
6.5 求 。
void main()
{
int k,N1=100,N2=50,N3=10;
float s1=0.0,s2=0.0,s3=0.0;
for(k=1;k<=N1;k++)/*计算1到100的和*/
{
s1=s1+k;
}
for(k=1;k<=N2;k++)/*计算1到50各数平方和*/
{
s2=s2+k*k;
}
for(k=1;k<=N3;k++) /*计算1到10各数倒数之和*/
{
s3=s3+1.0/k;
}
printf("总和=%8.2f\n",s1+s2+s3);
}
已通过
int main()
{
int k=1,i=11,j=51;
float s=0.0;
while(k<=10)
{
s=s+k+k*k+1.0/k;
while(k==10 && i<=50)
{
s=s+i+i*i;
while(i=50 && j<=100)
{
s=s+j;
j++;
}
i++;
}
k++;
}}
6.6所谓“水仙开数”是指一个3位数,其个位数字立方和等于该数本身。
#include
void main()
{
int i,j,k,n;
printf(" 水仙花数是:\n");
for(n=100;n<1000;n++)
{
i=n/100;
j=n/10-i*10;
k=n%10;
if(i*100+j*10+k==i*i*i+j*