美文网首页
蓝本第三+四章习题

蓝本第三+四章习题

作者: Tn299 | 来源:发表于2023-10-20 17:30 被阅读0次

第三章

程序设计T5

#include<stdio.h>
#include<math.h>
int main() {
    int x1, x2, x3, y1, y2, y3;
    double a, b, c,d,f,s;
    printf("请输入第一个点的坐标:");
    scanf("%d\t%d", &x1, &y1);
    printf("请输入第二个点的坐标:");
    scanf("%d\t%d", &x2, &y2);
    printf("请输入第三个点的坐标:");
    scanf("%d\t%d", &x3, &y3);
    a = sqrt((y2 - y1)*(y2 - y1) + (x2 - x1)*(x2 - x1));
    b = sqrt((y3 - y1)*(y3 - y1) + (x3 - x1)*(x3 - x1));
    c = sqrt((y3 - y2)*(y3 - y2) + (x3 - x2)*(x3 - x2));
    //a=sqrt(pow(y2-y1,2)+pow(x2-x1,x))
    if (a + b > c&&a + c > b&&b + c > a) {
        d = a + b + c;
        s = (a + b + c) / 2;
        f = sqrt(s*(s - a)*(s - b)*(s - c));
    }
    else {
        printf("impossible");
    }
    printf("周长为:%.2lf,面积为:%.2lf", d, f);
    return 0;
}

其中的pow(a,b)意为a的b次方,要加上math.h的库。

第四章

p72例4-2(平均成绩和不及格人数)

统计一批学生的平均成绩与不及格人数,从键盘输入一批学生的成绩,计算平均成绩,并统计不及格学生的人数。

#include<stdio.h>
#include<math.h>
int main() {
   int a=0, b=0;//a为学生人数,b为不及格人数
   double sum=0, c,adv;//c为学生成绩

   printf("请输入学生成绩:");
   scanf("%lf", &c);
   while (c>0)
   {
       a += 1;
       sum += c;
       if (c < 60) {
           b += 1;
       }
       scanf("%lf", &c);
   }
   adv = sum / a;
   printf("一共%d个学生,平均成绩是%.2lf,不及格人数为%d", a, adv, b);

   return 0;
}

p74例4-3(统计整数位数)

统计一个整数的位数。从键盘读入一个整数,统计该数的位数。例如12345输出5,-99输出2,0输出1

#include<stdio.h>
#include<math.h>
int main() {
    //统计一个整数的位数。从键盘读入一个整数,统计该数的位数。例如12345输出5,-99输出2,0输出1
    int a,b=0;//a为输入的数,b为位数
    printf("请输入一个整数:");
    scanf("%d", &a);

    if (a < 0) {
        a = -a;
    }
    do
    {
        b += 1;
        a = a / 10;
    } while (a!=0);

    printf("%d", b);
    return 0;
}

p76例4-4(逆序输出)

逆序输出一个整数的各位数字。输入一个整数,将其逆序输出,例如输入12345,输出54321.

#include<stdio.h>
#include<math.h>
int main() {
    //逆序输出一个整数的各位数字。输入一个整数,将其逆序输出,例如输入12345,输出54321.
    int a,b;
    printf("请输入一个整数:");
    scanf("%d", &a);

    while (a != 0) {
        b = a % 10;
        a = a / 10;
        printf("%d", b);
    }
    return 0;
}

p77例4-5(素数判断)

判断一个整数是否是素数。输入一个正整数m,判断它是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。

#include<stdio.h>
#include<math.h>
int main() {
    //判断一个整数是否是素数。输入一个正整数m,判断它是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。
    int a,i;
    printf("请输入一个正整数:");
    scanf("%d", &a);

    if (a <= 1) {
        printf("不是素数!");
    }
    else if (a == 2) {
        printf("这是个素数!");
    }
    else {
        for (i = 2; i <= a - 1; i++) {
            if (a%i == 0) {
                break;
            }
        }
        if (i >= a) {
            printf("这是个素数!");
        }
        else {
            printf("不是素数!");
        }
    }
    return 0;
}

p81例4-7(1!+2!+3!+...+n!)

#include<stdio.h>
#include<math.h>
int main() {
    //1!+2!+3!+...+n!

    int a,sum=0,b;
    printf("输入整数n:");
    scanf("%d", &a);

    for (int i = 1; i <= a; i++) {
        b = 1;
        for (int j = 1; j <=i; j++) {
            b = b * j;
        }
        sum = sum + b;
    }
    printf("%d", sum);
    return 0;
}

p85例4-8(最值问题,求最高分)

从输入的n个成绩中选出最高分,用for语句实现

#include<stdio.h>
#include<math.h>
int main() {
    //从输入的n个成绩中选出最高分,用for语句实现
     
    int a,max,b;//a是学生个数,b是学生成绩
    printf("学生的个数是:");
    scanf("%d", &a);
    printf("请输入%d个学生的成绩:",a);
    scanf("%d", &b);
    max = b;
    for (int i = 1; i <a; i++) {
        scanf("%d",&b);
        if (b > max) {
            max = b;
        }
    }
    printf("最大值为%d", max);
    return 0;
}

程序设计题

1.求奇数和,输入一批正整数(以0或负数作为结束标志),求其中的奇数和

#include<stdio.h>
#include<math.h>
int main() {
    //求奇数和,输入一批正整数(以0或负数作为结束标志),求其中的奇数和

    int a,sum=0;
    printf("请输入正整数:");
    scanf("%d", &a);
    while (a > 0) {
        if (a % 2 != 0) {
            sum = sum + a;
        }
        scanf("%d", &a);
    }
    printf("%d", sum);
    
    return 0;
}

2.展开式求和。输入一个实数 x,计算并输出下式的和,直到最后一项的绝对值小于 0.000 01 ,计算结果保留 4 位小数。要求定义和调用函数 fact(n) 计算 n 的阶乘,可以调用 pow() 函数求幂。试编写相应程序。
s=1+x+x²/2!+x三次方/3!+...

#include<stdio.h>
#include<math.h>

double fact(int n) {
    double sum=1;
    for (int i = 1; i <= n; i++) {
        sum = sum * i;
    }
    return sum;
}
int main() {
    //展开式求和。输入一个实数 x,计算并输出下式的和,直到最后一项的绝对值小于 0.000 01 ,计算结果保留 4 位小数。
    //要求定义和调用函数 fact(n) 计算 n 的阶乘,可以调用 pow() 函数求幂。试编写相应程序。
    //s = 1 + x + x² / 2! + x三次方 / 3! + ...
    
    int i=1;
    double s = 0,b,a;
    double e = 0.00001;
    printf("Enter x:");
    scanf("%lf", &a);
    b = 1;
    while (fabs(b)>e)
    {
        s += b;
        b = pow(a, i) / fact(i);
        i += 1;
    }
    s += b;
    printf("%.4lf", s);
    return 0;
}

3.求序列和。输入一个正整数 n,输出 2/1+3/2+5/3+8/5+... 的前 n 项之和,保留 2 位小数。该序列从第 2 项起,每项的分子是前一项分子与分母的和,分母是前项的分子。试编写相应程序。

int main() {
    //求序列和。输入一个正整数 n,输出 2/1+3/2+5/3+8/5+... 的前 n 项之和,
    //保留 2 位小数。该序列从第 2 项起,每项的分子是前一项分子与分母的和,分母是前项的分子。试编写相应程序。
    
    int i, n;
    double x, x1, x2, sum = 0;
    x1 = 2;//分子
    x2 = 1;//分母
    printf("input n:");
    scanf("%d", &n);
    for (i = 1; i <= n; i++) {
        sum += x1 / x2;
        x = x1 + x2; // 临时存储:分子+分母,就是下一次的分子
        x2 = x1; // 下一次的分母,就是上次的分子
        x1 = x; // 下一次的分子
    }
    printf("sum = %.2lf\n", sum);
    return 0;
}

4.求序列和。输入两个正整数 a 和 n,求 a+aa+aaa+aa...a ( n 个 a ) 之和。例如,输入 2 和 3 ,输出246 ( 2+22+222 )。试编写相应程序。

int main() {
    //求序列和。输入两个正整数 a 和 n,求 a+aa+aaa+aa...a ( n 个 a ) 之和。例如,输入 2 和 3 ,输出246 ( 2+22+222 )。试编写相应程序。
    
    int a, n,sum=0,i=1,t=0;
    printf("enter a and n:");
    scanf("%d\t%d", &a, &n);
    while (i <= n) {
        t = t * 10 + a;
        sum += t;
        i++;
    }
    printf("%d", sum);
    return 0;
}

5.换硬币。将一笔零钱(大于 8 分,小于 1 元,精确到分 ) 换成 5 分,2 分和 1 分的硬币,每种硬币至少有一枚。输入金额,问有几种换法? 针对每种换法, 输出各种面额硬币的数量和硬币的总数量。试编写相应程序

int main() {
    //换硬币。将一笔零钱(大于 8 分,小于 1 元,精确到分 ) 换成 5 分,2 分和 1 分的硬币,每种硬币至少有一枚。输入金额,问有几种换法? 
    //针对每种换法, 输出各种面额硬币的数量和硬币的总数量。试编写相应程序.
    int count,a=0;
    int x, y, z;
    printf("enter count:");
    scanf("%d", &count);
    if (count <= 8 || count >= 100) {
        printf("error!");
    }
    else {
        for (x = 1; x <= count; x++) {
            for (y = 1; y <= count; y++) {
                for (z = 1; z <= count; z++) {
                    if (x*5 + y*2 + z == count) {
                        a++;
                        printf("5分:%d个,2分:%d个,1分:%d个,有%d个硬币\n", x, y, z,x+y+z);
                    }
                }
            }
        }
        printf("共有%d种", a);
    }
    return 0;
}

6.输出水仙花数。输入一个正整数 n ( 3≤n≤7 ), 输出所有的 n 位水仙花数。水仙花数是指一个 n 位正整数,它的各位数字的 n 次幕之和等于它本身。 例如 153 的各位数字的立方和是13+53+3^3 =153。试编写相应程序。

int main() {
    //输出水仙花数。输入一个正整数 n ( 3≤n≤7 ), 输出所有的 n 位水仙花数。水仙花数是指一个 n 位正整数,它的各位数字的 n 次幕之和等于它本身。 
    //例如 153 的各位数字的立方和是1^3+5^3+3^3 =153。试编写相应程序。

    int n;
    do
    {
        printf("input n (3≤n≤7):");
        scanf("%d", &n);
    } while (n > 7 || n < 3);
    printf("水仙花数有:\n");
    int i = pow(10, n) - 1;    //上限
    int limit = pow(10, n - 1); //下限
    int digit, sum, s, m;
    while (i >= limit)
    {
        sum = 0;
        s = i;   
        m = n;
        //循环获取每个位上的数字
        while (s != 0)
        {
            digit = s / (int)(pow(10, m - 1));
            s %= (int)(pow(10, m - 1));
            sum += pow(digit, n); // 每个位上的数字的n次方和
            m--;
        }
        if (sum == i)
        {
            printf("%d\t", i);
        }
        i--;
    }
    printf("\n");
    return 0;
}

相关文章

  • 5.15复盘

    P英语:100单词+复习 新闻 长难句 天天背单词 复习第三课 逻辑:集训课听完 数学:习题(1)+第四章习题讲解...

  • 2020-01-25(学习笔记)

    小蓝本均值不等式 习题1 ③对于a/1-a²,上下同时×a后,下面a×(1-a²)有最大值,同时,需要注意到a²+...

  • 蓝本

    “蓝本”一词,原是古人印刷书籍过程中的一个专用词。 在古代,人们称雕版或活字版印刷的图书为“版本”。因版印书一般为...

  • 沐溪慕寒(04)

    文/蒋小哈 故事蓝本/大汉天子 前情提示:1~2章节:第一章:梦魇第二章:门的那一面第三章节:金屋一瞥 第四章 我...

  • 第三章 习题

    title: 第三章 习题category: 习题date: 2019/09/10mathjax: true 1....

  • 晨间日记

    教育学第三章和第四章总结 练习题 战墙 马甲线训练半小时 多喝水 鼻炎的治理 听一小时的公基 冥想

  • 0102 复盘

    【复盘翻盘】韩烟琪 【今日干了啥】 埃字的练习 完成打卡 做科目一练习题 看了四章《少做一点不会死》 第三次作业:...

  • 太保蓝本

    十大服务,十个服务讲解用途,重疾夸学科会诊,不误诊,,120急救服 档次不同,交费期与服务同等期长 普惠版,刚岀生...

  • 2018-01-15 九九乘法表

    第四章 练习题 ···for(b=1;b<10;b++,a++){for(a=1;a<10;a++ ){c=a*b...

  • 第27天,视频课件学习--审计证据3。

    今天总算把第三章的课件听完了,习题也做了一部分,还剩下函证的习题没有做。 题库里有关第三章的习题,分为两部分,函证...

网友评论

      本文标题:蓝本第三+四章习题

      本文链接:https://www.haomeiwen.com/subject/nvmsmdtx.html