C语言程序设计(第四版)谭浩强 课后习题答案 第五章
- 第五章
-
- 1.略
- 2.略
- 3.输入两个正数m和n,求其最大公约数和最小公倍数
- 4.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符得个数
- 5.求Sn = a + aa + aaa + ··· + aa···aa的值,其中a表示一个数字,n表示a的位数,n由键盘输入。
- 6. 求 ∑ n = 1 20 20 ! \sum_{n=1}^{20} 20! n=1∑2020!
- 7. 求 ∑ k = 1 100 k + ∑ k = 1 50 k 2 + ∑ k = 1 10 1 / k \sum_{k=1}^{100} k+\sum_{k=1}^{50}k^2+\sum_{k=1}^{10}{1/k} k=1∑100k+k=1∑50k2+k=1∑101/k
- 8.输出所有的水仙花数
- 9.找出1000以内的所有完数
- 10.分数序列,求前20项和
- 11.一个球从100m高度自由落下, 每次落地后反弹回原高度的一半,再落下,再反弹,求他第10次落地时,共经过多少米,第10次反弹多高。
- 12.猴子吃桃问题
- 13.用迭代法求出 x = a x = \sqrt{a} x=a
- 14.用牛顿迭代法求出下面方程在1.5附近的根
- 15.用二分法求2x^3^-4x^2^+3x-6=0在(-10,10)之间的根
- 16.输出图案
- 17.两个乒乓球队进行比赛,各出三人。甲队为A,B,C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X,Z比,请编程找出3对赛手的名单。
第五章
1.略
2.略
3.输入两个正数m和n,求其最大公约数和最小公倍数
#include <stdio.h>
#include <iostream>
using namespace std;
int fun1(int m,int n){
//辗转相除法
int temp;
while(n != 0){
temp = m % n;
m = n;
n = temp;
}
return m;
//或递归调用
//if(m % n == 0){
// return n;
//}
//return fun1(m , m % n);
}
int fun2(int m,int n){
//最小公倍数=m*n/最大公约数
int temp = fun1(m,n);
int res = m * n / temp;
return res;
}
int main(){
int m,n;
scanf("%d,%d",&m,&n);
int a = fun1(m,n);//最大公约数
int b = fun2(m,n);//最小公倍数
printf("最大公约数:%d\n",a);
printf("最小公倍数:%d\n",b);
return 1;
}
4.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符得个数
#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
int n;
printf("请输入要判断字符的最大长度:");
scanf("%d",&n);
char s[n];
int a = 0;//用于记录中英文数
int b = 0;//用于记录空格数
int c = 0;//用于记录数字个数
int d = 0;//用于记录其他字符
scanf("%s",&s);
for(int i = 0 ; i < n ; ++i){
if(s[i]>=65 && s[i]<= 90){
//记录A-Z
++a;
}else if(s[i]>= 97 && s[i]<= 122){
//记录a-z
++a;
}else if(s[i] == " "){
//记录空格
++b;
}else if(s[i] >= 48 && s[i] <= 57){
//记录0-9
++c;
}else if(s[i] != '/0'){
//记录其他字符
++d;
}else{
break;
}
}
printf("英文字母共有:%d,空格有:%d,数字有:%d,其他字符有:%d\n",a,b,c,d);
return 1;
}
5.求Sn = a + aa + aaa + ··· + aa···aa的值,其中a表示一个数字,n表示a的位数,n由键盘输入。
#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;
long int gen(int n, int a){
long int res = 0;
if(n == 0)
return a;
for(int i = n; i > 0 ; --i){
res += a*pow(10,i);
}
res += a;
return res;
}
int main(){
int a;
int n;
scanf("%d,%d",&a,&n);
long int res = 0;
for(int i = 0 ; i < n ; ++i)

最低0.47元/天 解锁文章
谭浩强 课后习题答案 第五章&spm=1001.2101.3001.5002&articleId=105707861&d=1&t=3&u=42b36271235e474db6dd3aaee72fa5a2)
1312

被折叠的 条评论
为什么被折叠?



