C语言程序设计_第三版_谭浩强主编_课后习题答案_完整版6-8章.DOC
文本预览下载声明
第六章 循环语句6.1输入两个正数,求最大公约数和最小公倍数. int main() a=num1,b=num2; while(b!=0) printf(它们的最大公约数为:%d\n,a); printf(它们的最小公倍数为:%d\n,num1*num2/a); return 0;} 我觉得这样不是更简单吗:首先用scanf输入两个整数a,b if(a b) c=a; else c=b; for(;c0;c--) if((a%c)(b%c)==0) break; printf(最大公约数为%d,c);printf(最大公倍数为%d,a*b/c);6.2输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数.解: #include stdio.h int main() printf(其中:字母数=%d 空格数=%d 数字数=%d 其它字符数=%d\n,letters,space, digit,other); return 0;} 6.3求s(n)=a+aa+aaa+…+aa…a之值,其中a是一个数字,n表示a的位数。解: int main() printf(a+aa+aaa+…=%d\n,sn); return 0;} 循环体改成:count=1,sn=0;6.4 求 (即1+2!+3!+4!+…+20!)int main() printf(1!+2!+…+20!=%e\n,s); return 0;} 阶乘利用递归,再求和:#includeiostreamusing namespace std;long Func(int n)main() coutsendl;}6.5 求 。int main() for(k=1;k=N2;k++)/*计算1到50各数平方和*/ for(k=1;k=N3;k++) /*计算1到10各数倒数之和*/ printf(总和=%8.2f\n,s1+s2+s3); return 0;} 已通过int main() i++; } k++; }}6.6所谓“水仙开数”是指一个3位数,其个位数字立方和等于该数本身。 int main() } printf(‘\n’); return 0;} 6 .7一个数如果恰好等于它的因子之和,这个数就称为“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子。 #include stdio.h#define M 1000 /*定义寻找范围*/ int main() } } if(s= =0) } return 0;}方法二:此题用数组方法更为简单. int main() } if(s= =0) } return 0;}6.8 有一个分数序列:2/1,3/2,5/3,8/5……求出这个数列的前20项之和. 解: #include stdio.hint main() printf(总和=%9.6f\n,s); return 0;} 6.9球反弹问题 #include stdio.hint main() printf(第10次落地时共经过%f米 \n,sn); printf(第10次反弹%f米.\n,hn); return 0;} 6.10猴子吃桃问题#include stdio.hint main() printf(桃子总数=%d\n,x1); return 0;} 上面的程序是从最后一天计算,一直到第一天。当while第一次循环,既day=9的时候,X1此时计算的是第9天的桃子数。而X2既是X1前一天的桃子数。计算出第9天的桃子数后,把X1的值赋值给X2,那么X2此时X2就表示第9天的桃子数,再通过while的循环,可以逐步求出第7天,第6天...一直到第一天的桃子数. 这里X2=X1,就是一个赋值的过程,为的是求前一天的桃子数.6.11用迭代法求 。求平方根的迭代公式为: ,要求前后两次求出的差的绝对值小于0.00001。#include stdio.h#include math.h int main() while (fabs(x0-x1)=0.00001); printf(%.3f\n,x1); return 0;} 6.12 用牛顿迭代法求方程 在1.5附近的根。 #include stdio.hint main() while(y!=0); printf(x=%.3f\n,x); return 0;} 6.13用二分法求方程 在(-10,10)之间的根 #include stdio.hint main()while(y1!=0); do while(y2!=0); printf(x1=%.3f,x2=%.3f\n,x1,x2); return 0;}6.14打印图案
显示全部