C语言程序设计 - 第三版 - 谭浩强主编第6—8章课后习题答案

2019-01-05 12:51

C语言第6—8章课后习题答案

第六章 循环语句

6.1输入两个正数,求最大公约数和最小公倍数. #include void main()

{ int a,b,num1,num2,temp;

printf(\请输入两个正整数:\\n\ scanf(\ 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\

printf(\它们的最小公倍数为:%d\\n\ }

编译已通过

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\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(\ printf(\ while(count<=n) {

tn=tn+a; sn=sn+tn; a=a*10; ++count; }

printf(\\\n\ }

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(\\\n\ }

阶乘利用递归,再求和: #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\ }

已通过 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;

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) {

printf(\ } }

printf(\ }

编译已通过153 370 371 407

6.7一个数如果恰好等于它的因子之和,这个数就称为“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子。 #include

#define M 1000 /*定义寻找范围*/ void main() {

int k0,k1,k2,k3,k4,k5,k6,k7,k8,k9; int i,j,n,s;

for(j=2;j<=M;j++) {

n=0; s=j;

for(i=1;i

if((j%i)= =0) { n++; s=s-i;

switch(n)/*将每个因子赋给k0,k1?k9*/

{

case 1: k0=i; break; case 2: k1=i; break; case 3: k2=i; break; case 4: k3=i; break; case 5: k4=i; break; case 6: k5=i; break; case 7: k6=i; break; case 8: k7=i; break; case 9: k8=i; break; case 10: k9=i; break; } } } if(s==0) {

printf(\是一个完数,它的因子是\ if(n>1)

printf(\ if(n>2)

printf(\ if(n>3)

printf(\ if(n>4)

printf(\ if(n>5)

printf(\ if(n>6)

printf(\ if(n>7)

printf(\ if(n>8)

printf(\ if(n>9)

printf(\ printf(\ } } }

方法二:此题用数组方法更为简单. void main() { int k[10]; int i,j,n,s;

for(j=2;j<=1000;j++) { n=-1; s=j;

for(i=1;i


C语言程序设计 - 第三版 - 谭浩强主编第6—8章课后习题答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:CAXA教案(改编) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: