C程序设计第五版第五章课后代码习题答案

3.求最大公约数和最小公倍数

#include <cstdio>
int main() {
    int n,m,temp,p,r;
    printf("请输入两个数字:\n");
    scanf("%d%d",&n,&m);
        if (n < m) {
            temp = n;
            n = m;
            m = temp;
        }
        p = n * m;
        while (m != 0) {
            r = n % m;
            n = m;
            m = r;
        }
        printf("最大公约数为:%d\n", n);
        printf("最小公倍数为:%d\n", p / n);
    return 0;
}

4. 统计个数

#include <cstdio>
int main() {
    char ch;
    int a=0,b=0,c=0,d=0;
    printf("请输入一行字符:\n");
    while ((ch=getchar())!='\n'){
        if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z'){
            a++;
        }
        else if(ch==' '){
            b++;
        }
        else if(ch>='0'&&ch<='9'){
            c++;
        }
        else
            d++;
    }
    printf("字母数为:%d\n空格数为:%d\n数字数为:%d\n其他字符为:%d\n",a,b,c,d);
    return 0;
}

5.求Sn

#include <cstdio>
int main() {
   int a,an,i=1,n,sum;
    printf("请依次输入a,n:");
    scanf("%d,%d",&a,&n);
    while(i<=n){
        an=an+a;
        sum=sum+an;
        a=a*10;
        ++i;
    }
    printf("a+aa+aaa+...=%d",sum);
    return 0;
}

6.阶乘

#include <cstdio>

int main() {
    double s = 0, t = 1;  // 将 t 的初始值设置为 1
    for (int i = 1; i <= 20; i++) {
        t = t * i;
        s = s + t;  // 计算阶乘并累加到 s 中
    }
    printf("1!+2!+3!+...+20!=%22.15e\n", s);
    return 0;
}

7.求和

#include <cstdio>
int main() {
    double s1 = 0, s2 = 0, s3 = 0;
    for (int i = 1; i <= 100; i++) {
        s1 = s1 + i;
    }
    for (int j = 1; j <= 50; j++) {
        s2 = s2 + j * j;
    }
    for (int k = 1; k <= 10; k++) {
        s3 = s3 + 1.0 / k;
    }
    printf("sum=%15.6f\n", s1 + s2 + s3);
    return 0;
}

 8.水仙花

#include <cstdio>

int main() {
    int a, b, c;
    for (int i = 100; i < 1000; i++) {
        a = i / 100;
        b = i / 10 - a * 10;
        c = i % 10;
        if (i == a * a * a + b * b * b + c * c * c) {
            printf("%d ", i);
        }
    }
    printf("\n");
    return 0;
}

9.找因子

#include <cstdio>

int main() {
    int m, s, i, j;
    for (m = 2; m < 1000; m++) {
        s = 0;
        for (i = 1; i < m; i++) {
            if ((m % i) == 0) {
                s = s + i;
            }
        }
        if (s == m) {
            printf("%d, its factors are ", m);
            for (j = 1; j < m; j++) {
                if (m % j == 0) {
                    printf("%d, ", j);
                }
            }
            printf("\n");
        }
    }
    return 0;
}

10.求分式数列

#include <cstdio>

int main() {
 int i,n=20;
 double a=2,b=1,s=0,t;
    for (int i = 1; i <=n ; i++) {
        s=s+a/b;
        t=a;
        a=a+b;
        b=t;
    }
    printf("结果是:%16.10f\n",s);
 return 0;
}

11.反弹问题

#include <cstdio>

int main() {
   double s=100,a=s/2;
    for (int j = 2; j <=10 ; j++) {
        s=s+2*a;
        a=a/2;
    }
    printf("第10次落地%f米\n",s);
    printf("第10次反弹%f米\n",a);
 return 0;
}

12.桃子问题

#include <cstdio>

int main() {
     int day,x1,x2;
     day=9;
     x2=1;
    while (day>0){
        x1=(x2+1)*2;
        x2=x1;
        day--;
    }
    printf("一共有:%d",x1);
     return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值